關於某IC卡工作流程的研究、分析和改造

作者:Jet@bitunion
摘要:通過對某校某IC卡的研究學習,提供一種一本万利的改造設計,驗證某IC卡流程漏洞。
Abstract:research, modify, save, debug
 
寫在前面(甭管有用沒用,反正我是聲明了,嘎嘎):
本文供且僅供電子愛好者學習及研究使用,歡迎轉載,轉載請確保本聲明以及文章的完整(含圖片),所有内容請勿用於非法用途,本人概不承擔由此帶來的一切後果。
 
首先有必要簡單介紹一下IC卡:
IC卡,又称“集成电路卡”、智能卡,英文名称“Integrated Circuit Card”
是法国人Roland morono 于1974年发明的
将具有存储、加密及数据处理能力的集成电路芯片模块封装于和信用卡尺寸一样大小的塑料基中,便构成了IC卡
按照連接方式分爲接觸式IC卡和非接觸式IC卡
 
北京*工大學(B*T),注意保密,嗯
現正大力推行“校園一卡通”工程,所謂“一卡通”,就是每樣東西都有對應的一張卡……=.=!!!
打水用水卡,吃飯用飯卡,去圖書館用卡務中心一卡通@#$!%%$%^(&()
其中用到的水卡屬於平常最容易看見的接觸式IC卡,以下簡稱水卡
由廣州好*華智能卡設備有限公司製作
正常使用範圍是日常開水(全校自動電熱水器飲用水,研究生樓洗澡用水)
計費方式此處不贅,反正很貴(畫外傳來無數人高呼:還很容易丟!)
 
水卡系統分爲兩部分,水卡和水卡使用控制器(就是做在熱水器上那傢伙,吃錢的)
我摸索了一下,簡要總結水卡工作流程如下(實際工作流程可能會有出入,抛磚引玉了,嘿嘿)


 
沒看懂的話那我簡要總結一下
也就是說
水卡控制器並不是像它在LCD上面顯示的那樣實時地一分錢一分錢的扣除水卡裏面的餘額
而是從你按鈕的那一刻開始
提前扣除你的0.15元寫入IC卡(這招相當狠啊~跟出租車一樣)
然後每隔一段時間X再扣除0.15元寫入IC卡
儅你按紐停止出水的時候,控制器再把LCD上面顯示的正確金額寫入IC卡
而在此過程中,控制器的作用只是本地計時,並且顯示相應餘額而已
 
這樣做有兩個好處
一就是系統設計變得簡單,時序也不會太緊張,不需要頻繁讀寫IC卡
二就是防止用戶非法操作
因爲任何時候你在不按按鈕的情況下拔出水卡
控制器都不會虧錢,因爲已經預扣除了0.15元
這也是爲什麽很多同學發現不按按鈕直接拔卡會少個一毛幾分的原因
 
知道了工作流程
也就可以著手尋找突破點了
在流程圖上我們可以發現很關鍵的一個部分,寫餘額的環節
除了第一次按鈕后的寫入水卡以外,此後的任何一次寫水卡,都不會校驗寫操作的成功與否
估計是設計流程的時候認爲只要第一次可以寫入,便判斷IC卡是完好的,此後就不添加寫校驗
既然不校驗,那就不怪得我了,hiahia…
只要我們能夠阻止除第一次以外的任何寫操作,便可以實現
只需花0.15元而獲得更多的水資源……(掌聲……鮮花……臭雞蛋……)
 
如何實現阻止寫操作,我們需要進一步了解接觸式IC卡的物理結構
下面是ISO7816-2中對於接觸式IC卡的管腳定義
Contact  Designation
 C1           Vcc
 C2           RST
 C3           CLK
 C4           RFU
 C5           GND
 C6           Vpp
 C7           I/O
 C8           RFU
其中的4和8管腳是作爲功能擴充的(Reserved for future use)
所以我們一般碰見的IC卡都是6腳的,而手機裏面的SIM卡是八腳的(octopod)
IC卡管腳實物照片如下:
 
其實到這裡基本上對於集成電路設計有了解的都知道可以怎麽做了
因爲對於一個有數据通信的芯片
必須有基本的電源、地、時鐘、數據信號才可以實現
而復位則是作爲整個芯片的初始化功能管腳出現
以上只要我們隨意阻隔其中一個,都無法實現和芯片的通信
當然,不能讓電源和地短接,除非你想打開水的同時生火泡面=_=!
選擇時鐘或者數據管腳是比較合適的
只要讓其中一個永遠保持低電平,則不會有信號通過
保持低電平只需要讓它跟地管腳短接
選數據管腳吧,誰讓它和地管腳在同一側呢,嘿嘿,有難同儅~
 
將兩個管腳上分別焊接上細銅綫,粗的也行,只要你不怕插不進去……(怎麽聼起來這麽A)
然後引出來,焊上小開関,沒有小開関也無所謂,短接的時候直接把另外兩頭擰上就成

按照卡的工作流程,我們不能一直將兩者短接
只能在讀寫校驗都完成了
也就是插卡后按鈕出水以後,將開關閉合(將兩根銅綫擰上)
此後數據管腳被拉低,實效
所有的寫操作被阻止
再然後……
慢慢洗澡,愛洗多久洗多久,儘管控制器的LCD上依然顯示金額在減少
洗完了按鈕停止,控制器會發出蜂鳴聲“D~~~~~”,提醒你拔卡呢^_^
開關打開再插進去,金額會少了0.15元
這時候感覺身心暢快啊~~
 
當然不得不說的是,當控制器的LCD上面金額減少到0的時候,還是會自動停水的
這點在流程圖裏面沒有體現,但是金額依然只會少0.15元
所以如果不想在洗澡過程中頻繁插拔水卡的話,還是要保證卡裏至少有足夠洗一次的錢
當然打水也可以用……但是我還沒嘗試過打水會打超過0.15元的水……
打水的時候把開關打開,當成正常水卡來用就好了
 
寫在後面:
文章内容内容只針對特定的IC卡和控制器,別的諸如IC電話卡,SIM卡之類的不保證通用
文章的目的在於學習和研究集成電路芯片的工作流程,請勿用於非法用途(唉,又說了一遍)
任何不明白的地方請自行捉摸研究,作者已死,有問不答

Published in: on September 11, 2006 at 5:46 pm  Comments (1)  

TS201 Design Notes (Hard)

  1. nPOR_IN 是内部DRAM的復位使能,管腳直接和 nRST_OUT 相連,儘管我覺得這個設計有點多餘。
  2. 倍頻管腳 SCLKRAT[2..0] 可以畫個三路的三腳的電阻PCB封裝,節省空間。另,TS201的倍頻係數可以到12……真猛
  3. 關於 ACK 一定要搞清楚了,拉低表明尚未 acknowledge ,高了才是“搞定了,您繼續操作”;低速設備與DSP連接的時候,上拉電阻為50歐,偏小,因爲需要快速通知DSP(高速設備)“別着急,且等吧”
  4. 輸入的某些配置管腳,如果需要下拉,直接接地好了,省出電阻空間~
  5. CONTROLIMP[1,0],名字很長,其實就是control impedence的縮寫,當配置成normal模式的時候,DS[2..0]選擇的是管腳驅動能力,當配置成A/D模式的時候,DS選擇的就是管腳的輸出阻抗~
  6. 三种電壓比較煩人,居然還跟選擇的内核頻率有關係,媽的……選定600MHz好了,VDD=1.2、VDD_IO=2.5、VDD_DRAM=1.6,前兩個都好辦,1.6比較麻煩
  7. 沒有了,改天再寫
Published in: on July 28, 2006 at 3:02 am  Leave a Comment  
Follow

Get every new post delivered to your Inbox.