|
自從80年代中期出現(xiàn)IC電話卡后 , 基本已取代了原來流行的電話磁卡,磁卡存在存在嚴(yán)重的安全問題,已逐步淘汰。 即使IC電話卡,也不能算很安全,卡內(nèi)所有數(shù)據(jù)只要有簡單的讀寫裝置并按時序操作都能讀取,事實上電話卡和信用卡一樣內(nèi)部沒有什么秘密信息,僅僅是帶串行輸出的128位EPROM而已(對二類卡是256位PROM),不要以為弄懂了它是怎么工作你就有辦法重新對卡內(nèi)數(shù)據(jù)重新填充,其開始的64位是帶寫保護(hù)的,在出廠時其熔絲位已被編程,你已無法對其更改,其后的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é)) 寫保護(hù)區(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é)議進(jìn)行雙向數(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端上的一個脈沖(即從低到高再回低)將允許芯片進(jìn)行位寫操作。在緊跟著的時鐘脈沖期間執(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é)的前面一位進(jìn)行一次正常的寫操作,就可以對此字節(jié)后一字節(jié)進(jìn)行字節(jié)擦除操作。也就是說,每向高一字節(jié)進(jìn)行借位(即寫一位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
|