static void Main() { // Establish Smartcard context using (var context = new SCardContext()) { context.Establish(SCardScope.System); var readerNames = context.GetReaders(); if (readerNames == null || readerNames.Length < 1) { Console.WriteLine("You need at least one reader in order to run this example."); Console.ReadKey(); return; } var readerName = ChooseReader(readerNames); if (readerName == null) { return; } using (var isoReader = new IsoReader(context, readerName, SCardShareMode.Shared, SCardProtocol.Any, false)) { var card = new MifareCard(isoReader); var loadKeySuccessful = card.LoadKey( KeyStructure.NonVolatileMemory, 0x00, // first key slot new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } // key ); if (!loadKeySuccessful) { throw new Exception("LOAD KEY failed."); } var authSuccessful = card.Authenticate(MSB, LSB, KeyType.KeyA, 0x00); if (!authSuccessful) { throw new Exception("AUTHENTICATE failed."); } var result = card.ReadBinary(MSB, LSB, 16); Console.WriteLine("Result (before BINARY UPDATE): {0}", (result != null) ? BitConverter.ToString(result) : null); var updateSuccessful = card.UpdateBinary(MSB, LSB, DATA_TO_WRITE); if (!updateSuccessful) { throw new Exception("UPDATE BINARY failed."); } result = card.ReadBinary(MSB, LSB, 16); Console.WriteLine("Result (after BINARY UPDATE): {0}", (result != null) ? BitConverter.ToString(result) : null); } } Console.ReadKey(); }
public static void Main() { using (var context = ContextFactory.Instance.Establish(SCardScope.System)) { var readerNames = context.GetReaders(); if (IsEmpty(readerNames)) { Console.Error.WriteLine("You need at least one reader in order to run this example."); Console.ReadKey(); return; } var readerName = ChooseReader(readerNames); if (readerName == null) { return; } using (var isoReader = new IsoReader( context: context, readerName: readerName, mode: SCardShareMode.Shared, protocol: SCardProtocol.Any, releaseContextOnDispose: false)) { var card = new MifareCard(isoReader); var loadKeySuccessful = card.LoadKey( KeyStructure.NonVolatileMemory, 0x00, // first key slot new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } // key ); if (!loadKeySuccessful) { throw new Exception("LOAD KEY failed."); } var authSuccessful = card.Authenticate(MSB, LSB, KeyType.KeyA, 0x00); if (!authSuccessful) { throw new Exception("AUTHENTICATE failed."); } var result = card.ReadBinary(MSB, LSB, 16); Console.WriteLine("Result (before BINARY UPDATE): {0}", (result != null) ? BitConverter.ToString(result) : null); var updateSuccessful = card.UpdateBinary(MSB, LSB, DATA_TO_WRITE); if (!updateSuccessful) { throw new Exception("UPDATE BINARY failed."); } result = card.ReadBinary(MSB, LSB, 16); Console.WriteLine("Result (after BINARY UPDATE): {0}", (result != null) ? BitConverter.ToString(result) : null); } } Console.ReadKey(); }
static void Main() { // Establish Smartcard context using (var context = new SCardContext()) { context.Establish(SCardScope.System); var readerNames = context.GetReaders(); if (readerNames == null || readerNames.Length < 1) { Console.WriteLine("You need at least one reader in order to run this example."); Console.ReadKey(); return; } var readerName = ChooseReader(readerNames); if (readerName == null) { return; } using (var isoReader = new IsoReader(context, readerName, SCardShareMode.Shared, SCardProtocol.Any, false)) { var card = new MifareCard(isoReader); var loadKeySuccessful = card.LoadKey( KeyStructure.NonVolatileMemory, 0x00, // first key slot new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } // key ); if (!loadKeySuccessful) { throw new Exception("LOAD KEY failed."); } var authSuccessful = card.Authenticate(MSB, LSB, KeyType.KeyA, 0x00); if (!authSuccessful) { throw new Exception("AUTHENTICATE failed."); } var result = card.ReadBinary(MSB, LSB, 16); Console.WriteLine("Result (before BINARY UPDATE): {0}", (result != null) ? BitConverter.ToString(result) : null); var updateSuccessful = card.UpdateBinary(MSB, LSB, _data_to_write); if (!updateSuccessful) { throw new Exception("UPDATE BINARY failed."); } result = card.ReadBinary(MSB, LSB, 16); Console.WriteLine("Result (after BINARY UPDATE): {0}", (result != null) ? BitConverter.ToString(result) : null); } } Console.ReadKey(); }