ic卡、电话卡彻底解密.htm

来自「可以用单片机做一个卡」· HTM 代码 · 共 769 行 · 第 1/3 页

HTM
769
字号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0028)http://go6.163.com/teldecry/ -->
<HTML><HEAD><TITLE>IC卡、电话卡彻底解密</TITLE>
<META content="text/html; charset=gb_2312-80" http-equiv=Content-Type>
<META content=IC卡,电话卡,解密,破解,仿真,黑客,出国,赚钱 name=keywords>
<META content="smart card,免费电话,7816,电话" name=description>
<META content="MSHTML 5.00.2614.3500" name=GENERATOR></HEAD>
<BODY>
<SCRIPT language=javascript><!--window.open("http://popme.163.com/freemail/mail.htm","nease","width=488,height=80");//--></SCRIPT>

<H1 align=center><FONT color=#ff0000>IC电话卡彻底解密</FONT></H1>
<HR SIZE=1>

<P><BR><FONT 
color=#ff0000>声明:</FONT>本资料仅从技术的角度全面探讨IC卡、IC电话卡及其安全性,由此引发的各种争议或个人、集体利用本资料做任何不正当用途本人概不负责。</P>
<HR SIZE=1>

<H2><FONT size=4>目录</FONT></H2><PRE><FONT face=宋体 size=4>Ⅰ)第一类卡(德国、西班牙、中国、香港、澳门等)
  Ⅰ-1)介绍:
  Ⅰ-2)引脚:
  Ⅰ-3)主要特性:
  Ⅰ-4)时序图:
  Ⅰ-5)内存数据:</FONT></PRE><PRE><FONT face=宋体 size=4>Ⅱ)第二类卡(法国、墨西哥、捷克、瑞典、爱尔兰等)
   Ⅱ-1)介绍:
   Ⅱ-2)引脚:
   Ⅱ-3)主要特性:
   Ⅱ-4)时序图:
   Ⅱ-5)内存数据:
   Ⅱ-6)电气参数:</FONT></PRE>
<H2>Ⅰ) 第一类卡</H2>
<H3>Ⅰ-1)介绍</H3>
<P>自从80年代中期出现IC电话卡后,基本已取代了原来流行的电话磁卡,磁卡存在存在严重的安全问题,已逐步淘汰。<BR>即使IC电话卡,也不能算很安全,卡内所有数据只要有简单的读写装置并按时序操作都能读取,事实上电话卡和信用卡一样内部没有什么秘密信息,仅仅是带串行输出的128位EPROM而已(对二类卡是256位PROM),不要以为弄懂了它是怎么工作你就有办法重新对卡内数据重新填充,其开始的64位是带写保护的,在出厂时其熔丝位已被编程,你已无法对其更改,其后的40位计数单元受内部逻辑控制在写时只能减少不能增加直至到0为止,因此你想用一般的IC电话卡打免费电话是不可能的,除非你能用单片机仿真它(如果你能读懂本文介绍的所有内容)。IC电话卡是一种一次性使用的计数卡,以一次性的计数方式,从写满的计数器中减“1”,直至存储单元减为空为止。<BR>卡片每次消费计数的“单位价值”根据各种应用系统的实际需要而定。例如:对于中国IC电话卡,如30元卡对应内部计数值为300,每单位值对应0.1元,IC 
卡电话机每分钟产生一次扣费信号,扣费值由当地IC电话管理系统设定,一般是价值0.5元或1元,卡片被计数5次和10次。对于其它国家属于第一类IC电话卡而言也是如此,只是内部初始计数值不同,每次扣除额度不一样罢了。其他对于公用加油卡,IC卡计费加油机每一公升(或一加仑)产生一次扣费操作,卡片被操作一次扣2.5元等等,均属于等同原理。事实上,这类卡内部为128位(16字节) 
NMOS存储器,按如下规律分布:</P><PRE>       <FONT face=宋体 size=4> 64 位 EPPOM(8字节) 写保护区(芯片数据代码区、发行数据代码区)
      40 位 EEPROM(5字节)
      24 位 为全“1”(3字节)
      共16字节数据。</FONT></PRE>
<H3>Ⅰ-2)引脚:</H3><PRE>  -------------+-------------
 |   1         |         5   |        引  脚:
 |             |             |        -------
 +-------\     |     /-------+
 |   2    +----+    +    6   |          1 : Vcc = 5V    5 : Gnd
 |        |         |        |          2 : Reset       6 : NC
 +--------|         |--------+          3 : Clock       7 : I/O
 |   3    |         |    7   |          4 : NC          8 : NC
 |        +----+----+        |
 +-------/     |     \-------+          Vcc:电源 Gnd:地脚 Reset:复位
 |   4         |         8   |
 |             |             |          Clock:时钟  I/O:数据 NC: 空脚
  -------------+-------------</PRE>
<P>因有三个脚为空脚,目前一般有采用8脚和6脚封装的,6脚封装的无最下一排两个空脚</P>
<H3>Ⅰ-3)主要特性:</H3>
<P>-采用单一5V电源供电<BR>-遵循ISO/IEC7816-3同步协议进行双向数据传输<BR>-低功耗<BR>-NMOS技术<BR>-高可靠性,抗静电干扰能力&gt;4KV</P>
<H3>Ⅰ-4)时序图</H3>
<H4>复位:</H4>
<P>为使地址计数器复位到0,先让Reset端变高。紧跟着一个Clock脉冲(从低到高再降到0),Reset重新变低,把Clock脉冲包住。随着Reset端变低,地址0单元的数据从I/O上输出。对应 
Clock端的每个脉冲,其上升沿使地址计数器增加。其下降沿使被选通地址单元的数据从I/O上输出。地址计数器增加到127后返回到0。</P><PRE>      __________________
_____|                  |_____________________________________________ Reset
     :                  :
     :        _____     :  _____       _____       _____       _____
_____:_______|     |____:_|     |_____|     |_____|     |_____|     |_ Clk
     :       :          : :     :     :     :     :     :     :     :
_____:_______:__________:_:_____:_____:_____:_____:_____:_____:_____:_
_____:___n___|_____0____:_|_____1_____|_____2_____|_____3_____|___4_:_ (Address)
     :                  :       :           :           :           :
_____:                  :_______:___________:___________:___________:_
_____XXXXXXXXXXXXXXXXXXXX_______|___________|___________|___________|_ Data
Bit n                      Bit 0    Bit 1        Bit2       Bit3</PRE>
<H4>写位:</H4>
<P>在Reset和Clk端均为低的情况下,如果某地址单元允许写操作(64-103位,且该位必需为1),则Reset端上的一个脉冲(即从低到高再回低)将允许芯片进行位写操作。在紧跟着的时钟脉冲期间执行写操作,调整写操作维持时间至少10ms,在这个CLK脉冲期间,地址计数器不会增加,在CLK写脉冲下降沿,数据0从I/O端输出。从Reset脉冲的上升沿到CLK写脉冲的下降沿期间,I/O端的数据是无效的。在下一个才CLK脉冲,且Reset为低时,地址计数器又增1,并在下降沿时,把选通的地址单元的数据送到I/O端。</P><PRE>
              _____                                _____
_____________|     |______________________________|     |_______________  Reset
             :                                    :
     ___     :           _____           ___      :           _____
____|   |____:__________|     |_________|   |_____:__________|     |____  Clk
    :        :          :     :         :   :     :          :     :
____:________:__________:_____:_________:___:_____:__________:_____:_____
 n  |      n+1          |     n+2       |   :    n+3         |     :       (Address)
----'--------:----------'-----:---------'---:-----:----------'-----:-----
             :          :     :             :     :          :     :
_________   _:          :     : ____________:  ___:          :     :
_________XXX_XXXXXXXXXXXXXXXXXXX____________ XX___XXXXXXXXXXXXXXXXXXXXXXX  I/O
   n      n+1           :     :     n+1        n+2           :     :
                        :     :                              :     :
                         write                                write</PRE>
<H4>借位写后的字节擦除:</H4>
<P>对位地址72-103的字节单元来说,只要在每个字节的前面一位进行一次正常的写操作,就可以对此字节后一字节进行字节擦除操作。也就是说,每向高一字节进行借位(即写一位0),紧接着的擦除时序可以对后一字节按字节擦除(即整个字节写1)。被擦除的字节总是比借位写的字节低一字节。从以下时序图可以看出,首先,完成一个“位写”操作,在CLK的写脉冲结束后,在CLK为低电平时,在发一个Reset脉冲即启动字节擦除操作。在第二个CLK脉冲完成字节擦除,脉冲维持时间整定为擦除周期时间(至少1ms)。芯片逻辑控制电路验证了借位写确已完成从“1”写“0”后,才擦除其低位字节。从Reset的上升沿到擦除操作的CLK脉冲的下降沿,I/O脚上的数据无效。地址计数器仍然停留在借位写的地址上。</P><PRE>       _____                      _____
______|     |____________________|     |_________________________________  Rst
      :                          :
      :            _______       :              _______        ___
______:___________|       |______:_____________|       |______|   |______  Clk
      :           :       :      :             :       :      :   :
      :           :       :      :             :       :      :   :
&lt;------------------------- address n ------------------------&gt;:&lt;--- n+1 ------
      :           :       :      :             :       :          :
      :           :       :      :             :       :          :
______:           :       :______:             :       :__________: _____
______XXXXXXXXXXXXXXXXXXXXX______XXXXXXXXXXXXXXXXXXXXXXX__________XX_____  I/O
                  :       :  n                 :       :     n        n+1
                  :       :                    :       :
                    Write                        Erase</PRE>
<H4>计数方法:</H4>
<P>在67-103地址单元中分为5个不可重置8单元计数器,芯片初始化时,72-103地址单元所对应的4个较低的8单元计数器中可以放0到8个“1”而67-71地址单元所对应的第5个计数器可以放0到5个“1”。所谓计数一次,就是将一个单元从“1”写成“0”。一个计数器中8位全为“0”后,要计数,需借位操作,即将高位计数器的一位从“1”写成“0”而相应其低位计数器整个字节从“0”擦除成“1”。可见4个8单元计数器如此逐一递减,其最大计数为8的4次方=4096。第5个计数器中5个单元因处在最高位只能被写“0”无法擦成“1”。因此只能计数5次。故芯片总计数为5X4096=20480。当全部计数单元(地址67-103)都被写成“0”时,卡片就用完了,不过,芯片出厂初始化时,初置的计数值由国家不同和卡片面值不同而不同,如100元卡初置计数值为1000。</P><PRE>        举例:    100元(1000计数单元预置初始值).
      --------

             Byte9      Byte10     Byte11     Byte12     Byte13
    --------------------------------------------------------------
            000000 - 00000001 - 01111111 - 00011111 - 00000000
    --------------------------------------------------------------
            (3)octal   (6)octal   (7)octal   (1)octal   (2)octal
    --------------------------------------------------------------
     Value = 0*8^4   +  1*8^3   +  7*8^2   +  5*8^1   +  0*8^
    --------------------------------------------------------------
     总值 = 1000 Units</PRE>
<H4>Ⅰ-5)内存数据:</H4><PRE> 字节       位          二进制   十六进制 
                    +-----------+-----+
  1       1 --&gt;   8 |           |     | 
                    +-----------+-----+
  2       9 --&gt;  16 | 0010 1111 | $2F | ---&gt; 德国
                    | 0011 0111 | $37 | ---&gt; 西班牙
                    | 0011 1011 | $3B | ---&gt; 希腊
                    +-----------+-----+ 
  3      17 --&gt;  24 |           |     |
  4      25 --&gt;  32 |           |     | ---&gt; 出厂编号(写保护)
  5      33 --&gt;  40 |           |     | 
  6      41 --&gt;  48 |           |     |
  7      49 --&gt;  56 |           |     | 
  8      57 --&gt;  64 |           |     |
                    +-----------+-----+
  9      65 --&gt;  72 |           |     | ---&gt; c4096  )
 10      73 --&gt;  80 |           |     | ---&gt;  c512  )
 11      81 --&gt;  88 |           |     | ---&gt;   c64  ) 5个8进制计数区
 12      89 --&gt;  96 |           |     | ---&gt;    c8  )
 13      97 --&gt; 104 |           |     | ---&gt;    c0  )
                    +-----------+-----+ 
 14     105 --&gt; 112 | 1111 1111 | $FF |
 15     113 --&gt; 120 | 1111 1111 | $FF | ---&gt; 所有位都为"1"
 16     120 --&gt; 128 | 1111 1111 | $FF |
                    +-----------+-----+</PRE>
<P>如需某一国家卡内数据详细数据请与作者联系。</P>
<H2>Ⅱ)第二类卡</H2>
<H3>Ⅱ-1)介绍:</H3>
<P>二类卡与一类卡的区别在于,二类卡为256位PROM卡,在计数方式上有区别,一类卡5个计数单元组成5位8进制递减计数单元,有较大的计数范围,而二类卡的计数单元每一位只能计数一次,在写为“1”后该位即无效,另外在引脚设置、操作时序上也不相同。</P>
<H4>Ⅱ-2)引脚:</H4><PRE>         
 -------------+-------------
|   1         |         5   |
|             |             |
+-------\     |     /-------+
|   2    +----+    +    6   |
|        |         |        |
+--------|         |--------+
|   3    |         |    7   |
|        +----+----+        |
+-------/     |     \-------+
|   4         |         8   |
|             |             |
 -------------+-------------


    1 : Vcc = 5V        5 : Gnd
    2 : R/W             6 : Vpp = 21V
    3 : Clock           7 : I/O
    4 : Reset           8 : Fuse</PRE>
<P>1:电源脚 2:读写控制 3:时钟 4:复位 5:接地 6:熔丝电压 7:输入输出 8:熔丝控制</P>
<H4>Ⅱ-3)主要特性:</H4>
<P>-同步传输协议<BR>-N-MOS技术<BR>-256X1位<BR>-96位带写保护<BR>-低功率85mW<BR>-21V熔丝电压<BR>-响应时间:500ns<BR>-10年以上数据保持</P>
<H4>Ⅱ-4)时序图:</H4><PRE>+21V                                     _____________
+5V ____________________________________|             |_________________ Vpp
					:             :
+5V                  ___________________:_____________:_________________ Reset
0V  ________________|                   :             :
		    :                   :             :
+5V     ____        :      ____         :       ______:______
0V  ___|    |_______:_____|    |________:______|      :      |__________ Clock
       :    :       :     :    :        :      :      :      :
+5V    :    :       :     :    :        :______:______:      :           _
0V  ___:____:_______:_____:____:________|      :      |______:__________ R/W
       :    :       :     :    :        :      :      :      :
+5V    :    :       :_____:    :________:      :      :      :__________
0V  XXXXXXXXXXXXXXXXX_____XXXXXX________XXXXXXXXXXXXXXXXXXXXXX__________ Out
       :    :       :     :    :        :&lt;-----&gt;&lt;----&gt;:      :
       :    :       :     :    :        :10 to   10 to       :
       :    :       :     :    :        :50 ms   50ms        :
	卡复位        Bit 1        Bit2                           Bit 3
	               读           读       Bit2 写为1            读</PRE>
<H4>-5)内存数据:</H4><PRE>法国和摩洛哥等: 

 字节        位         进制    十六进制
                    +-----------+-----+
  1        1 --&gt; 8  |           |     | 
                    +-----------+-----+
  2       9 --&gt; 16  | 0000 0011 | $03 | ---&gt; 法国卡
                    +-----------+-----+
  3      17 --&gt; 24  |           |     |
                    +-----------+-----+
  4      25 --&gt; 32  |           |     |
                    +-----------+-----+
  5      33 --&gt; 40  |           |     |
                    +-----------+-----+
  6      41 --&gt; 48  |           |     |
                    +-----------+-----+
  7      49 --&gt; 56  |           |     |
                    +-----------+-----+
  8      57 --&gt; 64  |           |     |
                    +-----------+-----+
  9      65 --&gt; 72  |           |     |
                    +-----------+-----+
 10      73 --&gt; 80  |           |     |
                    +-----------+-----+
 11      81 --&gt; 88  |           |     |
                    +-----------+-----+
 12      33 --&gt; 40  | 0001 0011 | $13 | ---&gt; 120 units card
                    | 0000 0110 | $06 | ---&gt;  50 units card
                    | 0000 0101 | $05 | ---&gt;  40 units card
                    +-----------+-----+
 13-31  97 --&gt; 248  |           |     | ---&gt; 计数单元区: 每消耗一单位,该位被写
                    |           |     |      为“1”,一般开始10为为工厂作熔丝
                    |           |     |      测试写为“1” 
                    |           |     |      
                    |           |     |
                    |           |     |
                    |           |     |
                    +-----------+-----+
 32    249 --&gt; 256  | 1111 1111 | $FF | ---&gt; 空卡指示
                    +-----------+-----+</PRE>
<H4>其它国家:</H4><PRE>字节        位         进制    十六进制

                    +-----------+-----+
  1        1 --&gt; 8  |           |     |
                    +-----------+-----+
  2       9 --&gt; 16  | 1000 0011 | $83 | ---&gt; 电话卡标记
                    +-----------+-----+-----------+-----+
3-4      17 --&gt; 32  | 1000 0000 | $80 | 0001 0010 | $12 | ---&gt; 10 元 卡
                    |           |     | 0010 0100 | $24 | ---&gt; 22 元 卡
                    |           |     | 0010 0111 | $27 | ---&gt; 25 元 卡
                    |           |     | 0011 0010 | $32 | ---&gt; 30 元 卡
                    |           |     | 0101 0010 | $52 | ---&gt; 50 元 卡
                    |           |     | 0110 0010 | $62 | ---&gt; 60 元 卡
                    |           |     | 1000 0010 | $82 | ---&gt; 80 元 卡
                    | 1000 0001 | $81 | 0000 0010 | $02 | ---&gt; 100 元 卡
                    |           |     | 0010 0010 | $22 | ---&gt; 120 元 卡
                    |           |     | 0101 0010 | $52 | ---&gt; 150 元 卡
                    +-----------+-----+-----------+-----+
  5      33 --&gt; 40  |           |     | ---&gt; $00 for sweden.
                    +-----------+-----+
  6      41 --&gt; 48  |           |     |
                    +-----------+-----+
  7      49 --&gt; 56  |           |     |
                    +-----------+-----+
  8      57 --&gt; 64  |           |     |
                    +-----------+-----+
  9      65 --&gt; 72  |           |     |
                    +-----------+-----+
 10      73 --&gt; 80  |           |     |

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?