Y at-il une bibliothèque Open Source pour écrire et lire des données en C# à partir d'une carte à puce en utilisant un lecteur de carte à puce? Mon modèle de carte à puce est mifare1k
et mon lecteur est ucr122u
.Comment écrire/lire une carte à puce?
Répondre
Découvrez Daniel Müller-la pcsc forte, https://github.com/danm-de/pcsc-sharp
fonctionne très bien pour moi sur les fenêtres et mono.
Lien actuel: https://github.com/danm-de/pcsc-sharp –
Je sais c'est une vieille question, mais vous pourriez vouloir PCSC-Sharp qui est
classes wrapper PC/SC pour .NET, écrit en C#. Le package contient les classes accéder au Gestionnaire de ressources Ordinateur personnel/Carte à puce à l'aide de l'API PC/SC natif du système. Implémente le support partiel ISO7816. La bibliothèque est écrite pour s'exécuter sur Windows et Unix (Linux avec Mono en utilisant PCSC Lite).
Le projet est sur GitHub: https://github.com/danm-de/pcsc-sharp
Vous pouvez également consulter la documentation ici: https://danm.de/docs/pcsc-sharp/index.html
pour acr1252u
J'ai trouvé la solution dans un code C++: seulement dans l'éditeur de liens, nous devons ajouter winscard.h
#include <iostream>
#include <iomanip>
#include <vector>
#include <string>
#include <cstdint>
#include <cstring>
#include <winscard.h>
std::wstring s2ws(const std::string& s);
int main(int argc, char* argv[]) {
SCARDCONTEXT context = 0;
LONG ret = SCardEstablishContext(SCARD_SCOPE_SYSTEM, nullptr, nullptr, &context);
if (ret != SCARD_S_SUCCESS) {
std::cout << "SCardEstablishContext: " << ret<< std::endl;
}
else {
LPTSTR allReaderNames = nullptr;
DWORD readerCount = SCARD_AUTOALLOCATE;
ret = SCardListReaders(context, nullptr, reinterpret_cast<LPTSTR>(&allReaderNames), &readerCount);
if (ret != SCARD_S_SUCCESS) {
std::cout << "SCardListReaders: " << ret << std::endl;
}
else {
std::string readerName("ACS ACR1252 1S CL Reader PICC 0");
std::wstring stemp = s2ws(readerName);
LPCWSTR result = stemp.c_str();
DWORD activeProtocol = 0;
SCARDHANDLE card = 0;
ret = SCardConnect(context, result, SCARD_SHARE_DIRECT, 0, &card, &activeProtocol);
if (ret != SCARD_S_SUCCESS) {
std::cout << "SCardConnect: " << ret << std::endl;
}
else {
std::vector<std::uint8_t> outputBuffer{ 0xE0, 0x0, 0x0, 0x21, 0x01, 0x71 };
std::vector<std::uint8_t> inputBuffer(64, 0);
DWORD bytesReturned = 0;
DWORD controlcode = SCARD_CTL_CODE(3500);
ret = SCardControl(card, controlcode, outputBuffer.data(), outputBuffer.size(), inputBuffer.data(), inputBuffer.size(), &bytesReturned);
if (ret != SCARD_S_SUCCESS) {
std::cout << "SCardControl: " << ret << std::endl;
}
else {
std::cout << "Response: " << std::hex << std::setfill('0');
for (std::size_t i = 0; i < bytesReturned; ++i) {
std::cout << std::setw(2) << static_cast<std::uint32_t>(inputBuffer[i]) << " ";
}
std::cout << std::dec << std::endl;
SCardDisconnect(card, SCARD_LEAVE_CARD);
}
}
// Release the memory that SCardListReaders allocated for us
SCardFreeMemory(context, allReaderNames);
}
ret = SCardReleaseContext(context);
if (ret != SCARD_S_SUCCESS) {
std::cout << "SCardReleaseContext: " << ret << std::endl;
}
std::getchar();
}
return 0;
}
std::wstring s2ws(const std::string& s)
{
int len;
int slength = (int)s.length() + 1;
len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
wchar_t* buf = new wchar_t[len];
MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len);
std::wstring r(buf);
delete[] buf;
return r;
}
- 1. Demande de carte à puce
- 2. Comment accéder à une carte à puce de powershell?
- 3. Comment interagir avec une carte à puce en Java?
- 4. Webapps et interaction par carte à puce
- 5. Sélectionnez EF sur une carte à puce via son SFI
- 6. Écrire un fichier texte sur une carte à puce C#
- 7. Application de carte à puce utilisant Java EE
- 8. démarrage de la programmation par carte à puce
- 9. Comment puis-je toujours activer une boîte de dialogue demandant une broche de carte à puce?
- 10. Comment accéder à une carte à puce sous Java sous Linux?
- 11. Exemple de lecteur de carte à puce Blackberry
- 12. pkcs # 11 carte à puce capable et lecteur
- 13. Comment faire une application php pour exiger l'authentification par carte à puce
- 14. Comment puis-je accéder à la carte à puce à partir du site ASP.NET?
- 15. Comment lire le PAN à partir d'une carte à puce EMV à partir de Java
- 16. Développement de cartes à puce
- 17. Comment fournir un code PIN pour accéder à la carte à puce par programme?
- 18. Quelle est la différence entre les cartes CAC et une carte à puce «générique»?
- 19. Comment détecter l'événement d'insertion ou de suppression de carte à puce dans Linux
- 20. Comment puis-je modifier le contenu de ma carte à puce?
- 21. Comment cacher une puce dans le blog
- 22. Comment puis-je interfacer une puce ARM avec une puce de mémoire externe?
- 23. Est-ce que la carte à puce dans le lecteur correspond à un certificat, C#
- 24. CryptGetProvParam PP_ENUMCONTAINERS ne me montre que le certificat par défaut sur la carte à puce
- 25. Signature EMail (Outlook) Utilisation de la carte à puce Minidriver [Windows]
- 26. ASP.NET MVC 2 et demande de certificat client (authentification par carte à puce)
- 27. Comment ajouter le contenu d'une carte à une autre carte?
- 28. NPLogonNotify non appelé pour la connexion par carte à puce (Windows 7)
- 29. Comment puis-je obtenir la carte à puce ID fournisseur dans Windows XP à l'aide dot net
- 30. Un vraiment aide à puce rails nécessaires
duplication possible de [Avez-vous un exemple de source ouverte pour enregistrer les données dans le lecteur de carte à puce RFID ..] (http://stackoverflow.com/questions/4014037/do-you-have-an-open-source-example -for-saving-data-in-RFID-smart-card-reader) – TFD
@TFD, cette question est beaucoup plus spécifique, ce qui devrait aussi faciliter la réponse. Il mentionne une carte spécifique et un lecteur. –
@Matthew_Flaschen Vrai, mais IIRC Mifare UCR sont des clones asiatiques, besoin de trouver quel modèle de base est de toute façon. Ont demandé est la première question. De plus, quiconque utilise Mifare 1k a besoin de lire la tête! – TFD