91chinese在线,成人激情免费视频,国产午夜无码视频免费网站,亚洲另类无码一区二区三区

經(jīng)典案例

聯(lián)系方式

公司名稱:昆山華航電子有限公司
公司電話:0512-50139595
公司郵箱:eric@kshuahang.com
公司地址:江蘇省昆山市善浦西路

您當(dāng)前的位置:首頁 > 技術(shù)資源 > 芯片解密

IC電話卡徹底解密

聲明:本資料僅從技術(shù)的角度全面探討IC卡、IC電話卡及其安全性,由此引發(fā)的各種爭議或個人、集體利用本資料做任何不正當(dāng)用途本人概不負(fù)責(zé)。

目錄
Ⅰ)第一類卡(德國、西班牙、中國、香港、澳門等)
Ⅰ-1)介紹:
Ⅰ-2)引腳:
Ⅰ-3)主要特性:
Ⅰ-4)時序圖:
Ⅰ-5)內(nèi)存數(shù)據(jù):
Ⅱ)第二類卡(法國、墨西哥、捷克、瑞典、愛爾蘭等)
Ⅱ-1)介紹:
Ⅱ-2)引腳:
Ⅱ-3)主要特性:
Ⅱ-4)時序圖:
Ⅱ-5)內(nèi)存數(shù)據(jù):
Ⅱ-6)電氣參數(shù):
Ⅰ) 第一類卡
Ⅰ-1)介紹
自從80年代中期出現(xiàn)IC電話卡后,基本已取代了原來流行的電話磁卡,磁卡存在存在嚴(yán)重的安全問題,已逐步淘汰。
即使IC電話卡,也不能算很安全,卡內(nèi)所有數(shù)據(jù)只要有簡單的讀寫裝置并按時序操作都能讀取,事實上電話卡和信用卡一樣內(nèi)部沒有什么秘密信息,僅僅是帶串行輸出的128位EPROM而已(對二類卡是256位PROM),不要以為弄懂了它是怎么工作你就有辦法重新對卡內(nèi)數(shù)據(jù)重新填充,其開始的64位是帶寫保護的,在出廠時其熔絲位已被編程,你已無法對其更改,其后的40位計數(shù)單元受內(nèi)部邏輯控制在寫時只能減少不能增加直至到0為止,因此你想用一般的IC電話卡打免費電話是不可能的,除非你能用單片機仿真它(如果你能讀懂本文介紹的所有內(nèi)容)。IC電話卡是一種一次性使用的計數(shù)卡,以一次性的計數(shù)方式,從寫滿的計數(shù)器中減“1”,直至存儲單元減為空為止。
卡片每次消費計數(shù)的“單位價值”根據(jù)各種應(yīng)用系統(tǒng)的實際需要而定。例如:對于中國IC電話卡,如30元卡對應(yīng)內(nèi)部計數(shù)值為300,每單位值對應(yīng)0.1元,IC 卡電話機每分鐘產(chǎn)生一次扣費信號,扣費值由當(dāng)?shù)豂C電話管理系統(tǒng)設(shè)定,一般是價值0.5元或1元,卡片被計數(shù)5次和10次。對于其它國家屬于第一類IC電話卡而言也是如此,只是內(nèi)部初始計數(shù)值不同,每次扣除額度不一樣罷了。其他對于公用加油卡,IC卡計費加油機每一公升(或一加侖)產(chǎn)生一次扣費操作,卡片被操作一次扣2.5元等等,均屬于等同原理。事實上,這類卡內(nèi)部為128位(16字節(jié)) NMOS存儲器,按如下規(guī)律分布:

64 位 EPPOM(8字節(jié)) 寫保護區(qū)(芯片數(shù)據(jù)代碼區(qū)、發(fā)行數(shù)據(jù)代碼區(qū))
40 位 EEPROM(5字節(jié))
24 位 為全“1”(3字節(jié))
共16字節(jié)數(shù)據(jù)。
Ⅰ-2)引腳:
-------------+-------------
| 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:復(fù)位
| 4 | 8 |
| | | Clock:時鐘 I/O:數(shù)據(jù) NC: 空腳
-------------+-------------
因有三個腳為空腳,目前一般有采用8腳和6腳封裝的,6腳封裝的無最下一排兩個空腳

Ⅰ-3)主要特性:
-采用單一5V電源供電
-遵循ISO/IEC7816-3同步協(xié)議進行雙向數(shù)據(jù)傳輸
-低功耗
-NMOS技術(shù)
-高可靠性,抗靜電干擾能力>4KV

Ⅰ-4)時序圖
復(fù)位:
為使地址計數(shù)器復(fù)位到0,先讓Reset端變高。緊跟著一個Clock脈沖(從低到高再降到0),Reset重新變低,把Clock脈沖包住。隨著Reset端變低,地址0單元的數(shù)據(jù)從I/O上輸出。對應(yīng) Clock端的每個脈沖,其上升沿使地址計數(shù)器增加。其下降沿使被選通地址單元的數(shù)據(jù)從I/O上輸出。地址計數(shù)器增加到127后返回到0。

__________________
_____| |_____________________________________________ Reset
: :
: _____ : _____ _____ _____ _____
_____:_______| |____:_| |_____| |_____| |_____| |_ Clk
: : : : : : : : : : :
_____:_______:__________:_:_____:_____:_____:_____:_____:_____:_____:_
_____:___n___|_____0____:_|_____1_____|_____2_____|_____3_____|___4_:_ (Address)
: : : : : :
_____: :_______:___________:___________:___________:_
_____XXXXXXXXXXXXXXXXXXXX_______|___________|___________|___________|_ Data
Bit n Bit 0 Bit 1 Bit2 Bit3
寫位:
在Reset和Clk端均為低的情況下,如果某地址單元允許寫操作(64-103位,且該位必需為1),則Reset端上的一個脈沖(即從低到高再回低)將允許芯片進行位寫操作。在緊跟著的時鐘脈沖期間執(zhí)行寫操作,調(diào)整寫操作維持時間至少10ms,在這個CLK脈沖期間,地址計數(shù)器不會增加,在CLK寫脈沖下降沿,數(shù)據(jù)0從I/O端輸出。從Reset脈沖的上升沿到CLK寫脈沖的下降沿期間,I/O端的數(shù)據(jù)是無效的。在下一個才CLK脈沖,且Reset為低時,地址計數(shù)器又增1,并在下降沿時,把選通的地址單元的數(shù)據(jù)送到I/O端。

_____ _____
_____________| |______________________________| |_______________ 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
借位寫后的字節(jié)擦除:
對位地址72-103的字節(jié)單元來說,只要在每個字節(jié)的前面一位進行一次正常的寫操作,就可以對此字節(jié)后一字節(jié)進行字節(jié)擦除操作。也就是說,每向高一字節(jié)進行借位(即寫一位0),緊接著的擦除時序可以對后一字節(jié)按字節(jié)擦除(即整個字節(jié)寫1)。被擦除的字節(jié)總是比借位寫的字節(jié)低一字節(jié)。從以下時序圖可以看出,首先,完成一個“位寫”操作,在CLK的寫脈沖結(jié)束后,在CLK為低電平時,在發(fā)一個Reset脈沖即啟動字節(jié)擦除操作。在第二個CLK脈沖完成字節(jié)擦除,脈沖維持時間整定為擦除周期時間(至少1ms)。芯片邏輯控制電路驗證了借位寫確已完成從“1”寫“0”后,才擦除其低位字節(jié)。從Reset的上升沿到擦除操作的CLK脈沖的下降沿,I/O腳上的數(shù)據(jù)無效。地址計數(shù)器仍然停留在借位寫的地址上。

_____ _____
______| |____________________| |_________________________________ Rst
: :
: _______ : _______ ___
______:___________| |______:_____________| |______| |______ Clk
: : : : : : : :
: : : : : : : :
<------------------------- address n ------------------------>:<--- n+1 ------
: : : : : : :
: : : : : : :
______: : :______: : :__________: _____
______XXXXXXXXXXXXXXXXXXXXX______XXXXXXXXXXXXXXXXXXXXXXX__________XX_____ I/O
: : n : : n n+1
: : : :
Write Erase
計數(shù)方法:
在67-103地址單元中分為5個不可重置8單元計數(shù)器,芯片初始化時,72-103地址單元所對應(yīng)的4個較低的8單元計數(shù)器中可以放0到8個“1”而67-71地址單元所對應(yīng)的第5個計數(shù)器可以放0到5個“1”。所謂計數(shù)一次,就是將一個單元從“1”寫成“0”。一個計數(shù)器中8位全為“0”后,要計數(shù),需借位操作,即將高位計數(shù)器的一位從“1”寫成“0”而相應(yīng)其低位計數(shù)器整個字節(jié)從“0”擦除成“1”。可見4個8單元計數(shù)器如此逐一遞減,其最大計數(shù)為8的4次方=4096。第5個計數(shù)器中5個單元因處在最高位只能被寫“0”無法擦成“1”。因此只能計數(shù)5次。故芯片總計數(shù)為5X4096=20480。當(dāng)全部計數(shù)單元(地址67-103)都被寫成“0”時,卡片就用完了,不過,芯片出廠初始化時,初置的計數(shù)值由國家不同和卡片面值不同而不同,如100元卡初置計數(shù)值為1000。

舉例: 100元(1000計數(shù)單元預(yù)置初始值).
--------

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
Ⅰ-5)內(nèi)存數(shù)據(jù):
字節(jié) 位 二進制 十六進制
+-----------+-----+
1 1 --> 8 | | |
+-----------+-----+
2 9 --> 16 | 0010 1111 | $2F | ---> 德國
| 0011 0111 | $37 | ---> 西班牙
| 0011 1011 | $3B | ---> 希臘
+-----------+-----+
3 17 --> 24 | | |
4 25 --> 32 | | | ---> 出廠編號(寫保護)
5 33 --> 40 | | |
6 41 --> 48 | | |
7 49 --> 56 | | |
8 57 --> 64 | | |
+-----------+-----+
9 65 --> 72 | | | ---> c4096 )
10 73 --> 80 | | | ---> c512 )
11 81 --> 88 | | | ---> c64 ) 5個8進制計數(shù)區(qū)
12 89 --> 96 | | | ---> c8 )
13 97 --> 104 | | | ---> c0 )
+-----------+-----+
14 105 --> 112 | 1111 1111 | $FF |
15 113 --> 120 | 1111 1111 | $FF | ---> 所有位都為"1"
16 120 --> 128 | 1111 1111 | $FF |
+-----------+-----+
如需某一國家卡內(nèi)數(shù)據(jù)詳細(xì)數(shù)據(jù)請與作者聯(lián)系。

Ⅱ)第二類卡
Ⅱ-1)介紹:
二類卡與一類卡的區(qū)別在于,二類卡為256位PROM卡,在計數(shù)方式上有區(qū)別,一類卡5個計數(shù)單元組成5位8進制遞減計數(shù)單元,有較大的計數(shù)范圍,而二類卡的計數(shù)單元每一位只能計數(shù)一次,在寫為“1”后該位即無效,另外在引腳設(shè)置、操作時序上也不相同。

Ⅱ-2)引腳:

-------------+-------------
| 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
1:電源腳 2:讀寫控制 3:時鐘 4:復(fù)位 5:接地 6:熔絲電壓 7:輸入輸出 8:熔絲控制

Ⅱ-3)主要特性:
-同步傳輸協(xié)議
-N-MOS技術(shù)
-256X1位
-96位帶寫保護
-低功率85mW
-21V熔絲電壓
-響應(yīng)時間:500ns
-10年以上數(shù)據(jù)保持

Ⅱ-4)時序圖:
+21V _____________
+5V ____________________________________| |_________________ Vpp
: :
+5V ___________________:_____________:_________________ Reset
0V ________________| : :
: : :
+5V ____ : ____ : ______:______
0V ___| |_______:_____| |________:______| : |__________ Clock
: : : : : : : : :
+5V : : : : : :______:______: : _
0V ___:____:_______:_____:____:________| : |______:__________ R/W
: : : : : : : : :
+5V : : :_____: :________: : : :__________
0V XXXXXXXXXXXXXXXXX_____XXXXXX________XXXXXXXXXXXXXXXXXXXXXX__________ Out
: : : : : :<-----><---->: :
: : : : : :10 to 10 to :
: : : : : :50 ms 50ms :
卡復(fù)位 Bit 1 Bit2 Bit 3
讀 讀 Bit2 寫為1 讀
-5)內(nèi)存數(shù)據(jù):
法國和摩洛哥等:

字節(jié) 位 進制 十六進制
+-----------+-----+
1 1 --> 8 | | |
+-----------+-----+
2 9 --> 16 | 0000 0011 | $03 | ---> 法國卡
+-----------+-----+
3 17 --> 24 | | |
+-----------+-----+
4 25 --> 32 | | |
+-----------+-----+
5 33 --> 40 | | |
+-----------+-----+
6 41 --> 48 | | |
+-----------+-----+
7 49 --> 56 | | |
+-----------+-----+
8 57 --> 64 | | |
+-----------+-----+
9 65 --> 72 | | |
+-----------+-----+
10 73 --> 80 | | |
+-----------+-----+
11 81 --> 88 | | |
+-----------+-----+
12 33 --> 40 | 0001 0011 | $13 | ---> 120 units card
| 0000 0110 | $06 | ---> 50 units card
| 0000 0101 | $05 | ---> 40 units card
+-----------+-----+
13-31 97 --> 248 | | | ---> 計數(shù)單元區(qū): 每消耗一單位,該位被寫
| | | 為“1”,一般開始10為為工廠作熔絲
| | | 測試寫為“1”
| | |
| | |
| | |
| | |
+-----------+-----+
32 249 --> 256 | 1111 1111 | $FF | ---> 空卡指示
+-----------+-----+
其它國家:
字節(jié) 位 進制 十六進制

+-----------+-----+
1 1 --> 8 | | |
+-----------+-----+
2 9 --> 16 | 1000 0011 | $83 | ---> 電話卡標(biāo)記
+-----------+-----+-----------+-----+
3-4 17 --> 32 | 1000 0000 | $80 | 0001 0010 | $12 | ---> 10 元 卡
| | | 0010 0100 | $24 | ---> 22 元 卡
| | | 0010 0111 | $27 | ---> 25 元 卡
| | | 0011 0010 | $32 | ---> 30 元 卡
| | | 0101 0010 | $52 | ---> 50 元 卡
| | | 0110 0010 | $62 | ---> 60 元 卡
| | | 1000 0010 | $82 | ---> 80 元 卡
| 1000 0001 | $81 | 0000 0010 | $02 | ---> 100 元 卡
| | | 0010 0010 | $22 | ---> 120 元 卡
| | | 0101 0010 | $52 | ---> 150 元 卡
+-----------+-----+-----------+-----+
5 33 --> 40 | | | ---> $00 for sweden.
+-----------+-----+
6 41 --> 48 | | |
+-----------+-----+
7 49 --> 56 | | |
+-----------+-----+
8 57 --> 64 | | |
+-----------+-----+
9 65 --> 72 | | |
+-----------+-----+
10 73 --> 80 | | |
+-----------+-----+
11 81 --> 88 | | | ---> $11 為瑞典
+-----------+-----+
12 89 --> 96 | 0001 1110 | $1E | ---> 瑞典
| 0011 0000 | $30 | ---> 挪威
| 0011 0011 | $33 | ---> 安道爾
| 0011 1100 | $3C | ---> 愛爾蘭
| 0100 0111 | $47 | ---> 葡萄牙
| 0101 0101 | $55 | ---> 捷克
| 0101 1111 | $5F | ---> 加蓬
| 0110 0101 | $65 | ---> 芬蘭
+-----------+-----+
13-31 97 --> 248 | | | ---> 計數(shù)單元區(qū): 每消耗一單位,該位被寫
| | | 為“1”,一般開始2為為工廠作熔絲
| | | 測試寫為“1” 。
| | |
| | |
| | |
| | |
+-----------+-----+
32 249 --> 256 | 0000 0000 | $00 |
+-----------+-----+

Ⅲ)電氣參數(shù):
+--------+------+------+------+
| Symbol | Min | Max | Unit |
+----------------------+--------+------+------+------+
| Supply voltage | Vcc | -0.3 | 6 | V | 電源電壓
+----------------------+--------+------+------+------+
| Input voltage | Vss | -0.3 | 6 | V | 輸入電壓
+----------------------+--------+------+------+------+
| Storage temperature | Tstg | -20 | +55 | | 儲存溫度
+----------------------+--------+------+------+------+
| Power dissipassion | Pd | - | 50 | mW | 功率
+----------------------+--------+------+------+------+

直流參數(shù):
+--------+-----+-----+-----+------+
| Symbol | Min.| Typ.| Max.| Unit |
+---------------------------+--------+-----+-----+-----+------+
| Suplly current | Icc | - | - | 5 | mA | 電源電流
+---------------------------+--------+-----+-----+-----+------+
| Input Voltage (low) | Vl | 0 | - | 0.8 | V | 輸入電壓(低)
+---------------------------+--------+-----+-----+-----+------+
| Input voltage (high) | Vh | 3.5 | - | Vcc | V | 輸入電壓(高)
+---------------------------+--------+-----+-----+-----+------+
| Input current R | Ih | - | - | 100 | uA | 輸入電流(復(fù)位)
+---------------------------+--------+-----+-----+-----+------+
| Input current Clk | Il | - | - | 100 | uA | 輸入電流(時鐘)
+---------------------------+--------+-----+-----+-----+------+
| Output current (Low) | Iol | - | - | 10 | uA | 輸出電流(低電平)
+---------------------------+--------+-----+-----+-----+------+
| Output current (High) | Ioh | - | - | 0.5 | mA | 輸出電流(高電平)
+---------------------------+--------+-----+-----+-----+------+

動態(tài)參數(shù):

+--------+------+------+------+
| Symbol | Min. | Max. | Unit |
+----------------------+--------+------+------+------+
| Pulse duration | tr | 50 | - | us |
| R address reset | | | | | 復(fù)位時復(fù)位脈沖持續(xù)時間
+----------------------+--------+------+------+------+
| Pulse duration | ts | 10 | - | us |
| R write | | | | | 寫位時復(fù)位脈沖持續(xù)時間
+----------------------+--------+------+------+------+
| High level Clk | th | 8 | - | us | 時鐘高電位時間
+----------------------+--------+------+------+------+
| Low level Clk | tl | 12 | - | us | 時鐘低電位時間
+----------------------+--------+------+------+------+
| Write window | Twrite | 10 | - | ms | 寫位時間
+----------------------+--------+------+------+------+
| Erase window | Terase | 10 | - | ms | 擦除時間
+----------------------+--------+------+------+------+
| | tv1 | 5 | - | us |
+----------------------+--------+------+------+------+
| | tv2 | 3.5 | - | us |
+----------------------+--------+------+------+------+
| | tv3 | 3.5 | - | us |
+----------------------+--------+------+------+------+
| | tv4 | 3.5 | - | us |
+----------------------+--------+------+------+------+
| | tv5 | 3.5 | - | us |
+----------------------+--------+------+------+------+
| | tv6 | 5 | - | us |
+----------------------+--------+------+------+------+
| | tv7 | 5 | - | us |
+----------------------+--------+------+------+------+
| | tv8 | 10 | - | us |
+----------------------+--------+------+------+------+
Ⅳ)讀卡器電路圖:
簡易讀卡器電路圖(利用電腦打印口,可讀一類、二類卡)

外接5V (可選)

5V o------,
| / T2 PNP d13 r7 10
0V o--, | / BC 177 |/ | _____
| | ,-------o/ o--*------. E C .--| >+-[_____]--------,
__+__ | | | / / |/ | |
///// | __|__ Batery | / / |
| - 22.5V | --------- |
....... | | | _____ | _____ |
: | __+__ +--[_____]--*--[_____]--, |
D2 : | ///// r6 150k r5 15k | |
4 o-------|---------------------------*------------------|-------------, |
: | | r3 220k / C | |
Ack : | | _____ |/ T1 - NPN | |
10 o------|--------. ’--[_____]-*---| BC107 | |
: | | _____ | |/ | |
: ,-, ,-, +--[_____]-’ / E | |
: | |r2 | |r1 | r4 390k | | |
: | |220 | |22k __+__ __+__ | |
: |_| |_| ///// ///// | |
: | |/ | | | |
: *--| >+--|----------------*----------------------------------|--*
: | |/ | | ,-----|-----------------------------, | |
: | d1 | | | ,----------,----------, | | |
: | | | *---|--* Fuse | Reset *--|---’ | |
: | | | | |----------|----------| | |
D0 : | | | ,-|---|--* I/O | Clk *--|---, | |
2 o-------|--------|----------’ | | |----------|----------| | | |
: | | | ’---|--* Vpp | R/W *--|---|----’ |
Busy : | | | |----------|----------| | |
11 o------|--------|--------------’ ,---|--* Gnd | 5V * | | |
: | | | ’----------’-------|--’ | |
D1 : | | __+__ Chip connector | | |
3 o-------|--------|--------, ///// | | |
: | | ’------------------------------|------’ |
Str : | |/ | | | |
1 o-------*--| >+--*----*----*----*----*-------------------’ |
: d2|/ | |d3 |d4 |d5 |d6 |d7 |
: -+- -+- -+- -+- -+- |
: /_/ /_/ /_/ /_/ /_/ |
D3 : | | | | | |/ | d8 |
5 o----------------*----|----|----|----|---| >+-------*-------------------’
: | | | | |/ | |
: | | | | |
D4 : | | | | |/ | d9 |
6 o---------------------*----|----|----|---| >+-------*
: | | | |/ | |
: | | | |
D5 : | | | |/ | d10 |
7 o--------------------------*----|----|---| >+-------*
: | | |/ | |
: | | |
D6 : | | |/ | d11 |
8 o-------------------------------*----|---| >+-------*
: | |/ | |
: | |
D7 : | |/ | d12 |
9 o------------------------------------*---| >+-------’
: |/ |
:
:
25 o------.
: |
.......: | d1 to d13: 1N4148
__+__
/////
Ⅴ)讀卡程序:
下面程序為與簡易讀卡器相配套二類卡讀卡源程序(如需一類卡源程序或需C源程序或其可執(zhí)行程序請與作者聯(lián)系)

USES crt,dos;

CONST port_address=$378; { lpr1 chosen }

TYPE string8=string[8];
string2=string[2];

VAR reg : registers;
i,j : integer;
Data : array[1..32] of byte;
car : char;
byte_number : integer;
displaying : char;

{-----------------------------------------------------------------------------}

PROCEDURE Send(b:byte);

BEGIN port[port_address]:=b;
END;

{-----------------------------------------------------------------------------}

FUNCTION Get:byte;

BEGIN get:=port[port_address+1];
END;

{-----------------------------------------------------------------------------}
{ FUNCTION dec2hexa_one(decimal_value):hexa_character_representation; }
{ }
{ - convert a 4 bit long decimal number to hexadecimal. }
{-----------------------------------------------------------------------------}

FUNCTION dec2hexa_one(value:byte):char;

BEGIN case value of
0..9 : dec2hexa_one:=chr(value+$30);
10..15 : dec2hexa_one:=chr(value+$37);
END;
END;

{-----------------------------------------------------------------------------}
{ FUNCTION d2h(decimal_byte):string2; }
{ }
{ - convert a decimal byte to its hexadecimal representation. }
{-----------------------------------------------------------------------------}

FUNCTION d2h(value:byte):string2;

VAR msbb,lsbb:byte;

BEGIN msbb:=0;
if ( value >= $80 ) then
BEGIN msbb:=msbb+8;
value:=value-$80;
END;
if ( value >= $40 ) then
BEGIN msbb:=msbb+4;
value:=value-$40;
END;
if ( value >= $20 ) then
BEGIN msbb:=msbb+2;
value:=value-$20;
END;
if ( value >= $10 ) then
BEGIN msbb:=msbb+1;
value:=value-$10;
END;

lsbb:=0;
if ( value >= $08 ) then
BEGIN lsbb:=lsbb+8;
value:=value-$08;
END;
if ( value >= $04 ) then
BEGIN lsbb:=lsbb+4;
value:=value-$04;
END;
if ( value >= $02 ) then
BEGIN lsbb:=lsbb+2;
value:=value-$02;
END;
if ( value >= $01 ) then
BEGIN lsbb:=lsbb+1;
value:=value-$01;
END;
d2h := dec2hexa_one(msbb) + dec2hexa_one(lsbb);
END;

{-----------------------------------------------------------------------------}

Function Binary( b : byte):string8;

var weigth : byte;
s : string8;

BEGIN weigth:=$80;
s:=’’;
while (weigth > 0) do
BEGIN if ((b and weigth) = weigth) then s:=s+’1’
else s:=s+’0’;
weigth:=weigth div $02;
END;
Binary:=s;
END;

{-----------------------------------------------------------------------------}

FUNCTION Units:byte;

VAR u, i : integer;
s : string8;

BEGIN u:=0;
i:=13;
while (Data[i] = $FF) do
BEGIN u:=u+8;
i:=i+1;
END;
s:=Binary(Data[i]);
while(s[1]=’1’) do
BEGIN inc(u);
s:=copy(s,2,length(s));
END;
units:=u;
END;

{-----------------------------------------------------------------------------}

function Units_2:LongInt;

BEGIN Units_2:=4096*Data[9]+512*Data[10]+64*Data[11]+8*Data[12]+Data[13];
END;

{-----------------------------------------------------------------------------}

PROCEDURE Card_Type;

BEGIN case Data[2] of
$03: BEGIN write(’Telecard - France - ’);
case Data[12] of
$13: write(’120 Units - ’,units-130,’ Units left’);
$06: write(’50 Units - ’,units-60,’ Units left’);
$15: write(’40 Units - ’,units-40,’ Units left’);
END;
END;
$2F:BEGIN write(’Telecard - Germany - ’, Units_2, ’ Units left’);
END;
$3B:BEGIN write(’Telecard - Greece - ’, Units_2, ’ Units left’);
END;
$83:BEGIN write(’Telecard’);
case Data[12] of
$1E: write(’ - Sweden’);
$30: write(’ - Norway’);
$33: write(’ - Andorra’);
$3C: write(’ - Ireland’);
$47: write(’ - Portugal’);
$55: write(’ - Czech Republic’);
$5F: write(’ - Gabon’);
$65: write(’ - Finland’);
END;
if (Data[12] in [$30,$33,$3C,$47,$55,$65]) then
BEGIN case ((Data[3] and $0F)*$100+Data[4]) of
$012: write (’ - 10 Units - ’,units-12,’ Units left’);
$024: write (’ - 22 Units - ’,units-24,’ Units left’);
$027: write (’ - 25 Units - ’,units-27,’ Units left’);
$032: write (’ - 30 Units - ’,units-32,’ Units left’);
$052: write (’ - 50 Units - ’,units-52,’ Units left’);
$067: write (’ - 65 Units - ’,units-62,’ Units left’);
$070: write (’ - 70 Units - ’,units-70,’ Units left’);
$102: write (’ - 100 Units - ’,units-102,’ Units left’);
$152: write (’ - 150 Units - ’,units-152,’ Units left’);
END;
END;
{ write(’ - N?’,Data[5]*$100+Data[6]);}
END;
END;
END;

{-----------------------------------------------------------------------------}

PROCEDURE waiting;

BEGIN send($00);
write(’Enter a card in the reader and press a key ...’);
repeat until keypressed;
gotoxy(1, wherey);
clreol;
END;

{-----------------------------------------------------------------------------}

PROCEDURE Full_Displaying;

BEGIN writeln(’Memory dump:’);
for i:=1 to 80 do write(’-’);
for i:=1 to (byte_number div 6 + 1) do
BEGIN for j:=1 to 6 do
BEGIN if j+6*(i-1) <= byte_number then write(binary(Data[j+6*(i-1)]):9);
END;
gotoxy(60,wherey);
for j:=1 to 6 do
if j+6*(i-1) <= byte_number then write(d2h(Data[j+6*(i-1)]),’ ’);
writeln;
END;
for i:=1 to 80 do write(’-’);
Card_Type;
writeln;
END;

{-----------------------------------------------------------------------------}

PROCEDURE Short_Displaying;

VAR j : integer;

BEGIN for j:=1 to byte_number do
BEGIN write(d2h(Data[j]),’ ’);
END;
writeln;
END;

{-----------------------------------------------------------------------------}

PROCEDURE Reading;

VAR i, j : integer;
Value : byte;

BEGIN send($FE);
send($F8);
for i:=1 to 32 do
BEGIN Value:=0;
for j:=1 to 8 do
BEGIN Value:=Value*$02 + ((get and $08) div $08);
send($FB);
delay(1);
send($F8);
END;
Data[i]:=Value;
END;
case displaying of
’F’:full_displaying;
’S’:short_displaying;
END;
END;

{-----------------------------------------------------------------------------}

PROCEDURE writting;

VAR i,n:integer;
car:char;

BEGIN write(’Which bit do you want to set to "1" : ’);
readln(n);

waiting;
car:=readkey;

send($FA);
send($F8);
for i:=1 to n do
BEGIN send($F9);
if i=n then
BEGIN send($FD);
delay(20);
send($FF);
delay(20);
END;
send($FB);
END;
reading;
END;

{-----------------------------------------------------------------------------}

PROCEDURE Saving;

VAR filename : string;
f : text;
i : word;

BEGIN write(’Enter the filename: ’);
readln(filename);
assign(f, filename);
rewrite(f);
for i:=1 to byte_number do write(f,d2h(Data[i]),’ ’);
close(f);
END;

{-----------------------------------------------------------------------------}

PROCEDURE initialize;

VAR i : integer;

BEGIN byte_number:=32;
displaying:=’F’;
clrscr;
writeln(’ 1 - to dump a 256 bits card’);
writeln(’ 2 - to dump a 128 bits card’);
writeln(’ F - to display in full format’);
window(41,1,80,25);
writeln(’ S - to display in short format’);
writeln(’ F2 - to save in a file’);
writeln(’ Q - to exit the program’);
window(1,4,80,25);
for i:=1 to 80 do write(’=’);
window(1,5,80,25);
END;

{=============================================================================}

BEGIN initialize;
repeat waiting;
car:=upcase(readkey);
case car of
’W’:writting;
’Q’:;
’1’:byte_number:=32;
’2’:byte_number:=16;
’F’,’S’:displaying:=car;
#00: BEGIN car:=readkey;
if car=#60 then saving;
END;
else reading;
END;
until car=’Q’;
END.


 


上一篇:軟件狗[Dongles]的加密與解密技術(shù)(6)
下一篇十速(TENX)系列芯片
溫馨提示:
凡在本公司進行電路板克隆業(yè)務(wù)的客戶,必須有合法的PCB設(shè)計版權(quán)來源聲明,以保護原創(chuàng)PCB設(shè)計版權(quán)所有者的合法權(quán)益;
【 字體: 】【打印此頁】 【返回】【頂部】【關(guān)閉

91chinese在线,成人激情免费视频,国产午夜无码视频免费网站,亚洲另类无码一区二区三区
  • <rt id="imqiw"></rt>
  • <rt id="imqiw"><acronym id="imqiw"></acronym></rt>
    
    
  • 精品国产一区二区三区av性色| www.日韩大片| 日韩精品一区二区在线| 欧美日韩成人一区| 色视频欧美一区二区三区| 懂色av中文一区二区三区| 懂色中文一区二区在线播放| 精品亚洲免费视频| 免费三级欧美电影| 卡一卡二国产精品| 九九**精品视频免费播放| 久久黄色级2电影| 国产精品亚洲一区二区三区妖精| 国产综合色视频| 国产成人精品三级| 成人精品电影在线观看| 不卡电影免费在线播放一区| 成人性视频免费网站| av电影在线观看一区| 日本精品一级二级| 欧美日韩亚洲另类| 精品国内二区三区| 国产精品女人毛片| 一区二区高清免费观看影视大全| 亚洲高清一区二区三区| 老司机精品视频线观看86 | 91精品国产欧美一区二区成人| 日韩欧美在线123| 国产精品美女久久久久aⅴ| 日韩中文字幕1| 韩日欧美一区二区三区| 亚洲天堂av一区| 欧美老年两性高潮| 国产乱子伦一区二区三区国色天香| 亚洲愉拍自拍另类高清精品| 欧美做爰猛烈大尺度电影无法无天| 亚洲另类色综合网站| 欧美性色综合网| 国产麻豆精品一区二区| 美国毛片一区二区三区| 精品国产髙清在线看国产毛片| 日韩欧美视频一区| 国产蜜臀av在线一区二区三区| 亚洲欧美激情在线| 国产在线一区观看| 欧美女孩性生活视频| 中文一区在线播放| 亚洲欧美日韩国产手机在线 | 日韩视频在线一区二区| 国产麻豆91精品| 欧美一区二区三区思思人| 亚洲在线视频一区| 91香蕉视频污在线| 国产精品久久久久久亚洲伦 | 国产剧情一区二区| 精品久久久久99| 青青草国产成人av片免费| 欧美日韩精品一区二区三区蜜桃| 中文av一区二区| 国产成人欧美日韩在线电影| 欧美成人免费网站| 精品一区二区三区av| 久久精品人人做人人综合 | 欧美精品国产精品| 午夜精品久久久久久久99樱桃| 欧洲亚洲精品在线| 亚洲一区二区三区爽爽爽爽爽 | 91精品国产综合久久久久久久 | 国产一区二区三区综合| 日韩小视频在线观看专区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产精品一色哟哟哟| 久久久久久久精| 97se狠狠狠综合亚洲狠狠| 一区二区三区在线观看视频| 欧美三级蜜桃2在线观看| 日产国产高清一区二区三区| 日韩欧美一级精品久久| 国产精品一区一区三区| 亚洲人成电影网站色mp4| 欧美日韩在线观看一区二区| 美女网站一区二区| 国产欧美日韩亚州综合 | eeuss鲁片一区二区三区在线观看| 亚洲欧美日韩电影| 国产尤物一区二区在线| 中文字幕av一区 二区| 欧美日韩国产免费一区二区| 精品亚洲porn| 亚洲一本大道在线| 欧美精品一区二区三区视频| 色综合一区二区| 国产一区二区在线观看视频| 亚洲自拍偷拍网站| 亚洲国产美女搞黄色| 日本韩国欧美在线| 国产日韩欧美高清| 日韩国产欧美三级| 99国产精品国产精品毛片| 欧美日韩三级视频| 欧美va亚洲va在线观看蝴蝶网| 亚洲欧洲无码一区二区三区| 美女一区二区三区| 欧美videofree性高清杂交| 亚洲天堂中文字幕| 在线观看免费亚洲| 国产精品不卡在线| 97se狠狠狠综合亚洲狠狠| 99精品国产热久久91蜜凸| 亚洲国产综合在线| 精品欧美一区二区三区精品久久| 成人app网站| 国产一区二区免费在线| 日本中文字幕一区二区视频| 亚洲精品日产精品乱码不卡| 国产精品国模大尺度视频| 国产色产综合产在线视频| 欧美成人福利视频| 久久久综合精品| 国内精品视频666| 国产美女精品在线| 亚洲一区二区三区四区五区中文 | 欧美电影精品一区二区| 91精品国产色综合久久不卡电影| 欧美视频在线观看一区二区| 精品视频色一区| 宅男在线国产精品| 欧美日本不卡视频| 欧美一区二区福利在线| 日韩精品中文字幕一区| 久久综合给合久久狠狠狠97色69| 久久亚洲捆绑美女| 久久色在线观看| 亚洲欧洲三级电影| 性感美女久久精品| 久久国产尿小便嘘嘘| 国产麻豆视频一区二区| av成人免费在线观看| 欧美日韩精品一区二区| 欧美成人video| 免费在线看成人av| 精品久久久久久综合日本欧美| 久久精品一二三| 亚洲自拍偷拍av| 精品系列免费在线观看| 日本黄色一区二区| 精品成a人在线观看| 亚洲一区二区欧美日韩| 国产一区二区日韩精品| 91国偷自产一区二区开放时间 | 亚洲激情中文1区| 美女一区二区在线观看| eeuss鲁一区二区三区| 成人免费电影视频| 精品久久国产老人久久综合| 亚洲日本va在线观看| 国模大尺度一区二区三区| 欧美人与z0zoxxxx视频| 亚洲人成人一区二区在线观看| 精品一区二区国语对白| 欧洲精品在线观看| 亚洲婷婷在线视频| 成人精品高清在线| 亚洲自拍与偷拍| 4438x亚洲最大成人网| 日韩精品一区国产麻豆| 亚洲第一狼人社区| 欧美中文字幕亚洲一区二区va在线 | 在线亚洲+欧美+日本专区| 中文字幕中文字幕在线一区| 国产成a人无v码亚洲福利| 久久在线观看免费| 国产在线看一区| 久久久www成人免费毛片麻豆 | 在线不卡中文字幕播放| 欧美日韩精品系列| 91黄色免费版| 91福利视频网站| 日韩一二三四区| 日韩精品一区二区在线| 欧美va亚洲va香蕉在线| 国产精品久久久久久户外露出| 国产乱子轮精品视频| 日本高清不卡在线观看| 欧美一级免费大片| 中文字幕在线一区| 国产精品电影院| 国产精品自拍在线| 91精品91久久久中77777| 欧洲在线/亚洲| 国产精品国产馆在线真实露脸| 一区二区高清在线| 91视频在线观看| 精品国产自在久精品国产| 日韩一区二区三区高清免费看看| 久久久久久免费网| 日本韩国精品一区二区在线观看| 欧美一区二区啪啪| 亚洲一区二区在线观看视频| 国产91精品在线观看|