电脑读取ic卡芯片方法 如何取出ic卡内的芯片,烧?

\u6709\u4ec0\u4e48\u65b9\u6cd5\u80fd\u628aIC\u5361\u7684\u82af\u7247\u5b8c\u6574\u65e0\u7f3a\u7684\u53d6\u51fa\u6765\u5462\uff1f\u6216\u8005\u9700\u8981\u4ec0\u4e48\u5316\u5b66\u7269\u54c1...

\u6211\u662f\u60f3\u628a\u82af\u7247 \u653e\u5230\u624b\u673a\u91cc\u8fb9\u3002\u8fd9\u6837\u5f88\u65b9\u4fbf\u3002\u4f46\u662f\u8fd9\u4e1c\u897f \u4e2d\u56fd \u7981\u5356

\u5982\u679c\u662f\u5e9f\u5361\u7684\u8bdd\uff0c\u70e7\u53ef\u80fd\u8fd8\u884c\u5427\uff0c\u4f46\u662f\u90a3\u4e2a\u82af\u7247\u5f88\u8584\uff0c\u5f88\u6709\u53ef\u80fd\u4f1a\u635f\u574f\u5916\u5f62

1,读取

我们需要外接一个NFC Reader让Windows可以读取NFC卡片的内容。

因为特殊原因,我们选择了Sony rc-s380 NFC Reader。相关介绍

我们需要下载并安装NFC Port Software,以便我们可以顺利使用上述NFC Reader。

安装之后,我们需要去Github获取一个NFC Port Software的.Net封装包:tijins/NfcLib

解压并运行nfc_lib_sample之后我们可以看到这样一个WindowFrom程序。

因为现在要读取的卡类型试MIFARE,所以我们勾选正确的CheckBox,其他设置保持不变,依次点击上述三个橘色方框按钮。

在红色箭头所指的方向就能看到第一个block的十六进制字符串的数据。

为了读取卡片所有block/page的信息,我们将btRead_Click的代码稍稍修改为: 

private void btRead_Click(object sender, EventArgs e)
{
byte block = (byte)nudBlock.Value;  try  {    byte[] data = null;
data = new byte[NfcLib.MF_BLOCK_LENGTH];    if (card is Mifare)
{
StringBuilder readSB = new StringBuilder();      for(byte i=0;i < 45; i++)//我现在的卡包含45个blocks/pages      {
((Mifare)card).Read(i, data, 0);
readSB.AppendLine(Utility.ByteToHex(data, 0, data.Length));
}
tbRead.Text = readSB.ToString();
}
}    catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

有个小遗憾就是,如果NFC Reader没有连接的时候启动app会抛出异常,而如果app已经启动再拔出然后插入NFC Reader又会无法再读卡除非重启app或者重新初始化。这个需要有点改进。

 

2,解析

根据上述步骤,我们得到了某张卡的信息如下:

04 C9 02 47     0A C9 5A 84     1D 48 00 00     E1 10 12 00 0A C9 5A 84     1D 48 00 00     E1 10 12 00     01 03 A0 0C
1D 48 00 00     E1 10 12 00     01 03 A0 0C     34 03 0F D1
E1 10 12 00     01 03 A0 0C     34 03 0F D1     01 0B 54 02 01 03 A0 0C     34 03 0F D1     01 0B 54 02     65 6E 32 30 34 03 0F D1     01 0B 54 02     65 6E 32 30     31 38 31 30 01 0B 54 02     65 6E 32 30     31 38 31 30     32 35 FE 00 65 6E 32 30     31 38 31 30     32 35 FE 00     00 00 00 00 31 38 31 30     32 35 FE 00     00 00 00 00     00 00 00 00 32 35 FE 00     00 00 00 00     00 00 00 00     00 00 00 00 00 00 00 00     00 00 00 00     00 00 00 00     00 00 00 00
(以下省略...)

然后,我们对它做一点移位:


04 C9 02 47     0A C9 5A 84     1D 48 00 00     E1 10 12 00           0A C9 5A 84     1D 48 00 00     E1 10 12 00     01 03 A0 0C
                    1D 48 00 00     E1 10 12 00     01 03 A0 0C     34 03 0F D1
                              E1 10 12 00     01 03 A0 0C     34 03 0F D1     01 0B 54 02
01 03 A0 0C     34 03 0F D1     01 0B 54 02     65 6E 32 30
          34 03 0F D1     01 0B 54 02     65 6E 32 30     31 38 31 30
                    01 0B 54 02     65 6E 32 30     31 38 31 30     32 35 FE 00
                              65 6E 32 30     31 38 31 30     32 35 FE 00     00 00 00 00
31 38 31 30     32 35 FE 00     00 00 00 00     00 00 00 00
          32 35 FE 00     00 00 00 00     00 00 00 00     00 00 00 00
                    00 00 00 00     00 00 00 00     00 00 00 00     00 00 00 00

可以看出,每一行只有第一列是我们需要的tag信息。

04 C9 02 470A C9 5A 841D 48 00 00E1 10 12 00

01 03 A0 0C  
34 03 0F D101 0B 54 0265 6E 32 3031 38 31 3032 35 FE 00

前面的四行是卡的UID以及制造商等信息。我们只需要关心下半段的数据。

01 (Tag: Lock Control TLV)03 (Length: 3 bytes)
A0 0C 34 (Value: Information on position and function of lock bytes)03 (Tag: NDEF Message TLV)
0F (Length: 15 bytes)
D1 01 0B 54 02 65 6E 32 30 31 38 31 30 32 35 FE (Tag: Terminator TLV; has no length field)00

所以,我们得到了NDEF message:D1 01 0B 54 02 65 6E 32 30 31 38 31 30 32 35

NDEF message:
D1 (Header byte of record 1)01 (Type length: 1 byte)
0B (Payload length: 11 bytes)54 (Type: "T")02 65 6E 32 30 31 38 31 30 32 35 (Payload field)

我们再分析最为关键的payload field,如下:

The payload field:02 (Status byte: Text is UTF-8 encoded, Language code has a length of 2 bytes)65 6E (Language code: "en")32 30 31 38 31 30 32 35 (Text: "20181025")

可以用在线工具来验证一下 “32 30 31 38 31 30 32 35 ”

最后,上述步骤,用写C#的实现如下(不保证所有Mifare卡适用):

private string GetNfcTag(List<byte[]> cardContentList)
{
List<byte> cardBytes = new List<byte>();            foreach(byte[] rowCardContent in cardContentList)
{
cardBytes.AddRange(rowCardContent.Take(4));
}            byte[] cardUid = cardBytes.Take(8).ToArray();            string cardUidStr = Utility.ByteToHex(cardUid, 0, cardUid.Length);            byte[] cardMaker = cardBytes.Skip(8).Take(8).ToArray();            string cardMakerStr = Utility.ByteToHex(cardMaker, 0, cardMaker.Length);            byte[] memoryBytes = cardBytes.Skip(16).ToArray();            byte lockControlByte = memoryBytes[0];            byte lockByteCount = memoryBytes[1];//how many bytes are the lock bytes
byte[] lockBytes = memoryBytes.Skip(2).Take(lockByteCount).ToArray();            int nedfLengthByteIndex = 1 + lockByteCount + 1 + 1;            byte ndefLength = memoryBytes[nedfLengthByteIndex];            if (ndefLength == 0)//Tag empty
return string.Empty;            byte[] ndefBytes = memoryBytes.Skip(nedfLengthByteIndex + 1).Take(ndefLength).ToArray();            byte payloadHeader = ndefBytes[0];            byte payloadTypeLength = ndefBytes[1];            byte payloadLength = ndefBytes[2];            byte[] payloadType = ndefBytes.Skip(3).Take(payloadTypeLength).ToArray();            byte[] payloadBytes = ndefBytes.Skip(3 + payloadType.Length).Take(payloadLength).ToArray();            byte languageCodeLength = payloadBytes[0];            byte[] languageCode = payloadBytes.Skip(1).Take(languageCodeLength).ToArray();            byte[] tag = payloadBytes.Skip(1 + languageCode.Length).Take(payloadLength - languageCode.Length - 1).ToArray();            string tagHex= Utility.ByteToHex(tag , 0, tag .Length);            string tagStr = Encoding.UTF8.GetString(tag);            return tagStr;
}



买一个电脑上用的读卡器,装上相应的驱动和应用程序就可以了。

  • 纾佸崱鏄庝箞宸ヤ綔鐨?
    绛旓細IC鍗¤鍐欏櫒鏄疘C鍗′笌搴旂敤绯荤粺闂寸殑妗ユ锛屽湪ISO鍥介檯鏍囧噯涓О涔嬩负鎺ュ彛璁惧IFD(Interface Device)銆侷FD鍐呯殑CPU閫氳繃涓涓帴鍙g數璺笌IC鍗$浉杩炲苟杩涜閫氫俊銆侷C鍗℃帴鍙g數璺槸IC鍗¤鍐欏櫒涓嚦鍏抽噸瑕佺殑閮ㄥ垎锛屾牴鎹疄闄呭簲鐢ㄧ郴缁熺殑涓嶅悓锛屽彲閫夋嫨骞惰閫氫俊銆佸崐鍙屽伐涓茶閫氫俊鍜孖2C閫氫俊绛変笉鍚岀殑IC鍗¤鍐欒姱鐗銆侷C鍗″伐浣滅殑鍩烘湰鍘熺悊鏄...
  • ic鍗鐨勫嚭鍘傜紪鍙!,璇澶鑺墖
    绛旓細闈炴帴瑙﹀瀷IC鍗鏈韩鏄棤婧愪綋锛 褰璇诲啓鍣ㄥ鍗¤繘琛岃鍐欐搷浣滄椂锛 璇诲啓鍣ㄥ彂鍑虹殑淇″彿鐢变袱閮ㄥ垎鍙犲姞缁勬垚锛氫竴閮ㄥ垎鏄數婧愪俊鍙凤紝璇ヤ俊鍙风敱鍗℃帴鏀跺悗锛 涓庡叾鏈韩鐨凩/C浜х敓璋愭尟锛 浜х敓涓涓灛闂磋兘閲忔潵渚涚粰鑺墖宸ヤ綔銆傚彟涓閮ㄥ垎鍒欐槸缁撳悎鏁版嵁淇″彿锛屾寚鎸ヨ姱鐗囧畬鎴愭暟鎹佷慨鏀广佸瓨鍌ㄧ瓑锛 骞惰繑鍥炵粰璇诲啓鍣ㄣ傜敱闈炴帴瑙﹀紡IC鍗℃墍褰㈡垚...
  • pos鏈哄埛淇$敤鍗℃彃鍗$殑鏃跺璇诲彇IC鍗閿欒鎬庝箞鍥炰簨
    绛旓細涓銆乸os鏈哄埛淇$敤鍗℃彃鍗$殑鏃跺璇诲彇IC鍗閿欒鎬庝箞鍥炰簨  绾鏉″崱鍒峰崱浣跨敤锛屽埛鍗$殑鏃跺欒蹇熸粦杩囷紝瑕佹斁骞筹紝蹇钩绋炽傚甫閾滅墖鐨鑺墖鍗″彧浜猴紝绛夊緟绯荤粺璇诲彇ic鍗璺宠浆甯︽湁閾滅墖鐨勫崱鑺墖鍗″彧鑳芥彃鍗″埛锛屼笉鑳藉埛鍗″埛 浜屻佷腑鍥介摱琛屼俊鐢ㄥ崱鑺墖鍗℃樉绀烘彃鍗¢敊璇槸鎬庝箞鍥炰簨 鎻掑弽浜 涓夈佷箰鍒穚os鏈哄彲浠ュ埛娌℃湁鑺墖淇$敤鍗3...
  • ic鍗闂ㄧ鏄洿鎺璇诲彇鍐呯爜杩樻槸
    绛旓細璇诲彇鍗″彿銆俰d鍗¢棬绂佸崱鍙鍙栧崱鍙凤紝ic鍗闂ㄧ鏄洿鎺ヨ鍙栧崱鍙枫IC鍗涔熺О鏅鸿兘鍗°佹櫤鎱у崱銆佸井鐢佃矾鍗℃垨寰鑺墖鍗$瓑銆傚皢寰數瀛愯姱鐗囧祵鍏ョ鍚圛SO7816鏍囧噯鐨勫崱鐗囦腑锛屽埗鎴愬崱鐗囧舰寮忋
  • ...閲戣瀺IC鍗(鏃㈡湁鑺墖涔熸湁纾佹潯鐨勯偅绉),瀹冩槸璇诲彇鑺墖鍛㈣繕鏄鍙栫鏉$殑淇...
    绛旓細浼樺厛璇诲彇鑺墖
  • 涓浗閾惰淇$敤鍗¤繕娆惧悗,鍦≒OS鏈轰笂鍒峰崱鏄剧ず鈥璇诲彇IC鍗澶辫触鈥濆湪鑷姩鎻愭...
    绛旓細閾惰鍗TM鏈虹殑鏃跺欐樉绀篒C鑺墖璇诲彇澶辫触锛岃鑱旂郴鍙戝崱琛屻傝繖鏄粈涔堝師鍥犻犳垚鐨勶紵鎬庝箞鍔烇紵1.鍥犱负鐜板湪涓浗浜烘皯閾惰鏅亶寮閫氳姱鐗囧崱锛屾墍浠ュ緢澶氶摱琛岀幇鍦ㄩ兘鏇存柊鎹唬銆2.浣嗘槸鐜板湪鐨勮姱鐗囧崱杩樹笉鏄緢瀹屽杽锛屽洜姝ゆ湁浜涜姱鐗囧崱鍦ㄦ煖鍛樻満浼氭樉绀烘鍗℃棤鏁/IC鍗¤姱鐗鏃犳硶浣跨敤锛岃鑱旂郴鍙戝崱琛屻3.閬囧埌绫讳技鐨勬儏鍐碉紝鍙兘鎼哄甫韬唤璇佸幓鏇存崲...
  • 鎴戠殑浜ら氶摱琛屽崱鍦╝tm鍙栫幇鏃舵彁绀鑺墖璇诲彇澶辫触搴旇鎬庝箞澶勭悊
    绛旓細涓鑸嚭鐜版绫绘晠闅滐紝寤鸿鏇存崲涓鍙癆TM鏈猴紝濡傝嫢杩樹笉鍙互锛岄偅灏辨槸鍗$墖鍑虹幇闂浜嗭紝涓鑸彲浠ュ埌钀ヤ笟鍘呮煖鍙拌姹傚崗鍔╄В鍐筹紝鐪嬬湅鏄崱鐗囨崯鍧忚繕鏄秷纾併傚師鍥狅細涓銆佸彲鑳芥槸ATN鏈哄櫒缃戠粶寤惰繜锛屽缓璁崲涓彇娆炬満閲嶈瘯銆備簩銆佽繕鏈夊彲鑳芥槸閾惰鍗′笂鐨勭鏉℃垨鑺墖宸叉秷纾佷簡锛岄渶瑕佸埌閾惰绐楀彛璁╁伐浣滀汉鍛樺府浣犻噸鏂板埛涓涓嬪崱銆
  • ic 鍗 宸ヤ綔鍘熺悊
    绛旓細IC鍗¤鍐欏櫒鏄疘C鍗′笌搴旂敤绯荤粺闂寸殑妗ユ锛屽湪ISO鍥介檯鏍囧噯涓О涔嬩负鎺ュ彛璁惧IFD(Interface Device)銆侷FD鍐呯殑CPU閫氳繃涓涓帴鍙g數璺笌IC鍗$浉杩炲苟杩涜閫氫俊銆侷C鍗℃帴鍙g數璺槸IC鍗¤鍐欏櫒涓嚦鍏抽噸瑕佺殑閮ㄥ垎锛屾牴鎹疄闄呭簲鐢ㄧ郴缁熺殑涓嶅悓锛屽彲閫夋嫨骞惰閫氫俊銆佸崐鍙屽伐涓茶閫氫俊鍜孖2C閫氫俊绛変笉鍚岀殑IC鍗¤鍐欒姱鐗銆傞潪鎺ヨЕ寮廔C鍗$畝浠嬪張绉...
  • 浠涔堟槸鑷姩璇嗗埆鎶鏈?鏉$爜,纾佸崱,ic鍗鐨勮瘑鍒師鐞嗘槸浠涔
    绛旓細IC鍗″彧鎵浠ヤ細琚箍娉涗娇鐢紝鏄洜涓篒C鍗′笌ID鍗★紝纾佸崱锛屾潯鐮佸崱鐩告瘮鍏锋湁鏇村ぇ鐨勫畨鍏ㄦэ紝IC鍗¤姱鐗鍐呮湁瀵嗙爜妯″潡锛屽彲浠ユ妸瀵嗙爜鍐欏埌閲岄潰锛岀粡杩囧瘑鐮佹牎楠屽悗鎵嶈兘璇诲彇鍗″唴淇℃伅锛屽ぇ澶у姞寮轰簡鍗$殑瀹夊叏鎬с ID鍗℃槸鍙鎬ц姱鐗囧崱锛岃姱鐗囬噷闈㈢殑淇℃伅鏄彁鍓嶅啓鍏ョ殑搴忓垪鍙凤紝姝ゅ簭鍒楀彿鏄叏涓栫晫鍞竴鐨勫簭鍒楀彿锛屾槸鍙涓嶅彲淇敼鐨勫簭鍒楀彿锛...
  • IC鍗鎶鏈唴娑
    绛旓細IC鍗鎶鏈殑鏍稿績鍦ㄤ簬鍏跺唴閮ㄧ殑闆嗘垚鐢佃矾鑺墖锛岃繖绉嶈姱鐗囬氳繃寰數瀛愭妧鏈祵鍏ュ鏂欏崱鐗囦腑锛屽叾寮鍙戝拰鍒堕犺繃绋嬭繙姣旂鍗″鏉傘傛妧鏈唴瀹规兜鐩栦簡纭欢鍜岃蒋浠剁殑澶氫釜鏂归潰銆傜‖浠舵妧鏈富瑕佸寘鎷崐瀵间綋鎶鏈佸熀鏉挎妧鏈佸皝瑁呮妧鏈佺粓绔妧鏈拰闆堕儴浠舵妧鏈瓑锛屽EEPROM鎶鏈紝杩欐槸涓绉嶇數鎿﹂櫎寮忓彲缂栫▼鍙瀛樺偍鍣紝閫氳繃澧炲姞鏅朵綋绠″瘑搴︼紝鎻愬崌...
  • 扩展阅读:中国ic芯片查询网 ... 万能ic卡读写器软件 ... 电子元器件ic芯片 ... 芯片查询工具app ... 手机怎么扫描nfc芯片 ... 门禁卡芯片取出贴手机 ... 最全芯片查询网 ... 手机nfc读取ic卡号 ... 芯片读取不了怎么修理 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网