線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:15116
推到 Plurk!
推到 Facebook!

使用VB呼叫WinScard.DLL執行二代金融卡Smart Card command

 
sockman
一般會員


發表:24
回覆:29
積分:10
註冊:2003-03-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-11 10:10:41 IP:61.66.xxx.xxx 未訂閱
在使用VB呼叫使用Windows的WinScard.DLL Library時請先安裝Windows Smart Card ToolKit其中範例中附有scardapi.bas及scardErr.bas二個Module將其inclure至VB的專案中!若是想以BCB來呼叫使用的話必須先以BCB的implib.exe這個tool先將Winscard.DLL產生的.Lib檔include進來即可! 在VB使用上需要將command轉換為Smart Card之APDU Command,轉譯的Function如下! Public Function APDUTransmit(ByRef bytCMDarray() As Byte, ByVal CMDLen As Long, ByVal phCard As Long) As SCARD_T1_RESPONSE Dim retValue As Long Dim recPCI As SCARD_IO_REQUEST Dim retBuf(0 To 254) As Byte Dim retBufLen As Long Dim i As Integer retBufLen = 254 recPCI.dwProtocol = SCARD_PROTOCOL_T1 recPCI.dbPciLength = Len(recPCI) retValue = SCardTransmit(phCard, recPCI, bytCMDarray(0), CMDLen, recPCI, retBuf(0), retBufLen) If retValue <> 0 Then Exit Function End If If retBufLen = 2 Then ReDim APDUTransmit.bytRData(retBufLen) As Byte APDUTransmit.SW1 = retBuf(0) APDUTransmit.SW2 = retBuf(1) APDUTransmit.bytRDataLen = 0 Else ReDim APDUTransmit.bytRData(retBufLen - 3) APDUTransmit.bytRDataLen = retBufLen - 2 For i = 0 To retBufLen - 2 - 1 APDUTransmit.bytRData(i) = retBuf(i) Next APDUTransmit.SW1 = retBuf(i) APDUTransmit.SW2 = retBuf(i 1) End If APDUTransmit.bytRetValue = retValue End Function 接下來介紹如何連結卡機及Smart Card並讀取二代金融卡卡片序號 1.首先開啟Smart Card Service 在Global定義Smart Card context及handle Dim ScardContext As Long Dim phCard1 As Long Private Sub Form_Load() Dim retValue As Long retValue = SCardEstablishContext(SCARD_SCOPE_USER, lngNull, lngNull, ScardContext) If retValue <> 0 Then MsgBox "智慧卡元件啟動失敗, 程式將關閉", vbCritical, "智慧卡服務錯誤" Exit Sub End If End Sub 2.取得目前卡機名稱 Private Sub Form_Load() Dim retValue As Long Dim lstReaders As String Dim lngReaderLen As Long Dim ReaderCnt As Integer Dim ReaderArry() As String Dim hContext As Long Dim i As Integer '取得Reader Name lstReaders = String(256, vbNullChar) lngReaderLen = Len(String(256, vbNullChar)) retValue = SCardListReadersA(hContext, vbNullChar, lstReaders, lngReaderLen) ReaderArry = ParseMultistring(lstReaders, ReaderCnt) If (ReaderCnt = 0) Then MsgBox "no reader is available", vbExclamation, "error" End If For i = 0 To ReaderCnt - 1 ComboReader1.List(i) = ReaderArry(i) Next End Sub 3.將卡機名稱存入ini File中 Private Sub cmdOK_Click() Dim ret As Long ret = WritePrivateProfileString("Reader", "ICC", ComboReader1.Text, App.Path & "\Setup.ini") End Sub 4.與卡片連線 Privite Sub Command1_Click() Dim retData As SCARD_T1_RESPONSE Dim retValue As Long Dim ret As Long ret = GetPrivateProfileString("Reader", "ICC", App.Path & "\" & "Setup.ini", DataBuffer, Len(DataBuffer), App.Path & "\" & "Setup.ini") ICCReader = Left$(DataBuffer, ret) retValue = SCardConnectA(ScardContext, ICCReader, SCARD_SHARE_SHARED, SCARD_PROTOCOL_T1, phCard1, Activepro) If retValue <> 0 Then StatusBar1.Panels(2).Text = "子卡連線失敗" Exit Sub End If End Sub 與卡片連線後取得Handle為phCard1 5.讀取卡片序號 Privite Sub Command2_Click() Dim retData As SCARD_T1_RESPONSE Dim retValue As Long Dim ret As Long 'Get Chip ID retData = GetCID(phCard1) If retData.SW1 <> &H90 Then StatusBar1.Panels(2).Text = "Get CID 錯誤" MsgBox "Get CID Fail!", vbCritical, "警告" Exit Sub End If ReDim bytSNR(retData.bytRDataLen - 1) As Byte For i = 0 To retData.bytRDataLen - 1 bytSNR(i) = retData.bytRData(i) Next End Sub Public Function GetCID(ByVal phCard As Long) As SCARD_T1_RESPONSE Dim bytArray(4) As Byte Dim bytArrayLen As Long Dim T1_response As SCARD_T1_RESPONSE bytArrayLen = 5 bytArray(0) = &H0 bytArray(1) = &HB0 bytArray(2) = &H0 bytArray(3) = &H4 bytArray(4) = &H8 T1_response = APDUTransmit(bytArray, bytArrayLen, phCard) GetCID = T1_response End Function 當執行GetCID回應的Smart Card T1 Response之SW1及SW2為 &H9000時即為成功 並將結果存入bytSNR Array中,其中二代金融卡的命令需參閱二代晶片金融卡規 格囉! 以上是簡單的使用WinScard.DLL執行對二代晶片金融卡讀取序號範例!
bio
一般會員


發表:42
回覆:36
積分:20
註冊:2003-03-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-24 11:11:41 IP:210.68.xxx.xxx 未訂閱
您好 我可跟你要Windows Smart Card ToolKit嗎?? 因為我找不著耶 拜託你
sockman
一般會員


發表:24
回覆:29
積分:10
註冊:2003-03-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-17 13:58:04 IP:61.66.xxx.xxx 未訂閱
sorry我不知道怎麼上傳so..我的e-mail gerryz@ms94.url.com.tw 請來信索取吧!
orson
中階會員


發表:5
回覆:135
積分:58
註冊:2002-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-18 09:45:13 IP:211.74.xxx.xxx 未訂閱
引言: 恕刪
你少了一個select file的步驟。 如果這張晶片卡是多功能的話,這樣的程序是不足夠的。 Orson
sockman
一般會員


發表:24
回覆:29
積分:10
註冊:2003-03-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-18 17:13:49 IP:61.66.xxx.xxx 未訂閱
二代金資卡是native card所以取得卡序只需要下Read Binary這個Command即可 不需要Select File!在二代金的卡片中即使未開卡沒任何File這個command還是有效可用的,主要的原因是在作預製卡(preperso)時所開的Key需要跟chip id作Diversify
shing.net
中階會員


發表:207
回覆:124
積分:66
註冊:2002-03-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-12 10:12:52 IP:61.218.xxx.xxx 未訂閱
請問若使用Delphi開發,應該如何實做? 謝謝    
引言: 在使用VB呼叫使用Windows的WinScard.DLL Library時請先安裝Windows Smart Card ToolKit其中範例中附有scardapi.bas及scardErr.bas二個Module將其inclure至VB的專案中!若是想以BCB來呼叫使用的話必須先以BCB的implib.exe這個tool先將Winscard.DLL產生的.Lib檔include進來即可! 在VB使用上需要將command轉換為Smart Card之APDU Command,轉譯的Function如下!
Public Function APDUTransmit(ByRef bytCMDarray() As Byte, ByVal CMDLen As Long, ByVal phCard As Long) As SCARD_T1_RESPONSE
    Dim retValue As Long
    Dim recPCI As SCARD_IO_REQUEST
    Dim retBuf(0 To 254) As Byte
    Dim retBufLen As Long
    Dim i As Integer
     
    retBufLen = 254
    recPCI.dwProtocol = SCARD_PROTOCOL_T1
    recPCI.dbPciLength = Len(recPCI)
    retValue = SCardTransmit(phCard, recPCI, bytCMDarray(0), CMDLen, recPCI, retBuf(0), retBufLen)
        
    If retValue <> 0 Then
        Exit Function
    End If
    
    If retBufLen = 2 Then
        ReDim APDUTransmit.bytRData(retBufLen) As Byte
        APDUTransmit.SW1 = retBuf(0)
        APDUTransmit.SW2 = retBuf(1)
        APDUTransmit.bytRDataLen = 0
    Else
        ReDim APDUTransmit.bytRData(retBufLen - 3)
        APDUTransmit.bytRDataLen = retBufLen - 2
        For i = 0 To retBufLen - 2 - 1
            APDUTransmit.bytRData(i) = retBuf(i)
        Next
        APDUTransmit.SW1 = retBuf(i)
        APDUTransmit.SW2 = retBuf(i   1)
    End If
    
    APDUTransmit.bytRetValue = retValue
End Function    接下來介紹如何連結卡機及Smart Card並讀取二代金融卡卡片序號    1.首先開啟Smart Card Service    在Global定義Smart Card context及handle
Dim ScardContext As Long
Dim phCard1 As Long    Private Sub Form_Load()        Dim retValue As Long        retValue = SCardEstablishContext(SCARD_SCOPE_USER, lngNull, lngNull, ScardContext)
    If retValue <> 0 Then
        MsgBox "智慧卡元件啟動失敗, 程式將關閉", vbCritical, "智慧卡服務錯誤"
        Exit Sub
    End If
    
End Sub    2.取得目前卡機名稱    Private Sub Form_Load()
    Dim retValue As Long
    Dim lstReaders As String
    Dim lngReaderLen As Long
    Dim ReaderCnt As Integer
    Dim ReaderArry() As String
    Dim hContext As Long
    Dim i As Integer
    
    '取得Reader Name
    lstReaders = String(256, vbNullChar)
    lngReaderLen = Len(String(256, vbNullChar))
    retValue = SCardListReadersA(hContext, vbNullChar, lstReaders, lngReaderLen)
        
    ReaderArry = ParseMultistring(lstReaders, ReaderCnt)
    
    If (ReaderCnt = 0) Then
        MsgBox "no reader is available", vbExclamation, "error"
    End If
    
    For i = 0 To ReaderCnt - 1
        ComboReader1.List(i) = ReaderArry(i)
    Next    End Sub    3.將卡機名稱存入ini File中    Private Sub cmdOK_Click()
    
    Dim ret As Long        ret = WritePrivateProfileString("Reader", "ICC", ComboReader1.Text, App.Path & "\Setup.ini")
   
End Sub    4.與卡片連線    Privite Sub Command1_Click()
    Dim retData As SCARD_T1_RESPONSE
    Dim retValue As Long
    Dim ret As Long         ret = GetPrivateProfileString("Reader", "ICC", App.Path & "\" & "Setup.ini", DataBuffer, Len(DataBuffer), App.Path & "\" & "Setup.ini")
    ICCReader = Left$(DataBuffer, ret)
    
    retValue = SCardConnectA(ScardContext, ICCReader, SCARD_SHARE_SHARED, SCARD_PROTOCOL_T1, phCard1, Activepro)
    If retValue <> 0 Then
        StatusBar1.Panels(2).Text = "子卡連線失敗"
        Exit Sub
    End If
End Sub    與卡片連線後取得Handle為phCard1    5.讀取卡片序號    Privite Sub Command2_Click()        Dim retData As SCARD_T1_RESPONSE
    Dim retValue As Long
    Dim ret As Long         'Get Chip ID
    retData = GetCID(phCard1)
    If retData.SW1 <> &H90 Then
        StatusBar1.Panels(2).Text = "Get CID 錯誤"
        MsgBox "Get CID Fail!", vbCritical, "警告"
        Exit Sub
    End If
    ReDim bytSNR(retData.bytRDataLen - 1) As Byte
    For i = 0 To retData.bytRDataLen - 1
        bytSNR(i) = retData.bytRData(i)
    Next    End Sub    Public Function GetCID(ByVal phCard As Long) As SCARD_T1_RESPONSE        Dim bytArray(4) As Byte
    Dim bytArrayLen As Long
    Dim T1_response  As SCARD_T1_RESPONSE
    
    bytArrayLen = 5
    bytArray(0) = &H0
    bytArray(1) = &HB0
    bytArray(2) = &H0
    bytArray(3) = &H4
    bytArray(4) = &H8
    
    T1_response = APDUTransmit(bytArray, bytArrayLen, phCard)
    GetCID = T1_response
     
End Function
當執行GetCID回應的Smart Card T1 Response之SW1及SW2為 &H9000時即為成功 並將結果存入bytSNR Array中,其中二代金融卡的命令需參閱二代晶片金融卡規 格囉! 以上是簡單的使用WinScard.DLL執行對二代晶片金融卡讀取序號範例!
sockman
一般會員


發表:24
回覆:29
積分:10
註冊:2003-03-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-04-13 16:13:24 IP:61.66.xxx.xxx 未訂閱
不好意思Delphi不熟..但是BCB的作法就是先將在System32目錄下的wiscard.dll使用BCB的Tool implib.exe來作轉換產生.lib檔加入後即可!並include winscard.h即可!
SFIC
一般會員


發表:0
回覆:2
積分:0
註冊:2005-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-04-15 18:00:04 IP:203.70.xxx.xxx 未訂閱
拜讀sockman 之文章獲益良多! 1.若為COMBO卡則有錯誤(2/18 orson 的回應可能是在講這種信用卡與金融卡合一之COMBO卡) 2.FISCII Command Set 要去哪裡找? 謝謝!
sockman
一般會員


發表:24
回覆:29
積分:10
註冊:2003-03-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-04-18 00:23:16 IP:219.71.xxx.xxx 未訂閱
引言: 拜讀sockman 之文章獲益良多! 1.若為COMBO卡則有錯誤(2/18 orson 的回應可能是在講這種信用卡與金融卡合一之COMBO卡) 2.FISCII Command Set 要去哪裡找? 謝謝!
1. Combo卡也有分Protocal T=0 和 T=1的..要先知道是它是T=0還是T=1的卡片 這個時候FISCII和信用卡部分都是以Applet的形式存在於卡片中,因此若要 使用FISCII的部分時要先Select FISCII Applet 2. 金資中心有在賣它的Spec吧請參考http://www.fisc.com.tw,但是好像只限認証過的廠商,但是簡單的一些Select EF,Select DF,Read...etc的command和ISO7816的大部分都相同! FISCII大部分的一些Command我己寫在此範例中的ActiveX Component了 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=67092
SFIC
一般會員


發表:0
回覆:2
積分:0
註冊:2005-04-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-04-18 19:01:36 IP:203.70.xxx.xxx 未訂閱
引言:
引言:
恕刪
1.我想發展的是將晶片卡之金融卡帳號或信用卡卡號讀出,現除了sockman所教的單純金融卡會了以外其餘皆不知如何著手,不知是否能賜教! 2.按上述程式所讀出之8 bytes HEX碼又如何轉成一般之金融卡帳號? 3.sockman建議之文章範例之前便已拜讀,依其價值若該元件要販賣一點都不為過;我曾花了點時間在網路(國內外)搜尋晶片卡之參考,就屬您之文章最實用。不過因目前之需求較簡單,所以可能的話還是直接寫這部分之控制程式便足夠了。
orson
中階會員


發表:5
回覆:135
積分:58
註冊:2002-07-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-04-19 17:19:14 IP:211.74.xxx.xxx 未訂閱
引言: 拜讀sockman 之文章獲益良多! 1.若為COMBO卡則有錯誤(2/18 orson 的回應可能是在講這種信用卡與金融卡合一之COMBO卡) 2.FISCII Command Set 要去哪裡找? 謝謝!
沒錯 我說的是combo card。所以在應用層,你沒有先做Select File的話,保證不行。 在EMV的規格裡面有提到,我記得FISC的規格也有提到。 這是我是用DELPHI直接操作PC/SC(改國外的元件),的時候,玩出來的。 金融卡的卡號,我記得有兩個地方有紀錄。是TEXT,其中一個應該是user field 1。 很久沒完了,忘光了。 Orson
sockman
一般會員


發表:24
回覆:29
積分:10
註冊:2003-03-17

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-04-21 21:30:29 IP:219.71.xxx.xxx 未訂閱
引言:
引言:
引言:
恕刪
1.我想發展的是將晶片卡之金融卡帳號或信用卡卡號讀出,現除了sockman所教的單純金融卡會了以外其餘皆不知如何著手,不知是否能賜教! 2.按上述程式所讀出之8 bytes HEX碼又如何轉成一般之金融卡帳號? 3.sockman建議之文章範例之前便已拜讀,依其價值若該元件要販賣一點都不為過;我曾花了點時間在網路(國內外)搜尋晶片卡之參考,就屬您之文章最實用。不過因目前之需求較簡單,所以可能的話還是直接寫這部分之控制程式便足夠了。
1.其實我最熟的部分也只有金融卡部分,再來就是SLE4442這類的Memory card了..其餘的CPU卡我也都不熟,因為畢竟卡片太多了,其實還有Open Platform等等的卡片各家作的都不一樣!信用卡的部分的話您可能必須要取得文件,不管是VISA還是Master它的資料都是以Template中tag的方式儲存,也就是說Select信用卡的Applet之後讀出來的file都是以Template包tag的方式儲存!下次我再弄個範例上來好了!因為手邊現在沒卡片! 2.二代金融卡的帳號是放在EF 1001這個檔案中Record 3,讀出來的應為16 byte的資料其帳號以ASCII方式儲存,例如帳號為1234..則存31323334
shing.net
中階會員


發表:207
回覆:124
積分:66
註冊:2002-03-16

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-04-22 12:09:19 IP:61.218.xxx.xxx 未訂閱
我想請問若我有一張白卡(cpu卡) 我應該如何初始化(設定pin number) 謝謝
sockman
一般會員


發表:24
回覆:29
積分:10
註冊:2003-03-17

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-04-25 14:42:59 IP:61.66.xxx.xxx 未訂閱
引言: 我想請問若我有一張白卡(cpu卡) 我應該如何初始化(設定pin number) 謝謝
CPU卡有很多..你是那一種?
sockman
一般會員


發表:24
回覆:29
積分:10
註冊:2003-03-17

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-05-16 09:47:36 IP:61.66.xxx.xxx 未訂閱
> >您好.我有下載了範例.那是銀行的卡資訊讀取. >但是我讀自然人憑證他說1001FULL >請問有"讀自然人憑證的序號基本資料"範例嗎?? >我找好久試好久都不行.拜託幫我謝謝 回答一下很多人問的問題! 你必須要取得中華電信的API..裡面有包含自然人憑證的APDU command 但是不是完全都有我不能確定因為它有所謂的標準版, 所以要讀取序號必須要知道它的Command怎麼下的 因為它是RSA加密法的卡片,它具有憑證及資料加密的功能 不過API要至內政部自然人憑證中心下載..很麻煩..還要註冊及簽保密合約 相關網址請參考 http://moica.nat.gov.tw/html/cover05_02.htm 使用.Net對自然人憑證的應用範例 http://www.flaginfo.com.tw/runpc/download/200410/129P210.txt 此範例並未使用APDU Command因此不需要使用中華電信的API 發表人 - sockman 於 2005/05/16 09:54:54
raincaller
一般會員


發表:0
回覆:2
積分:0
註冊:2005-01-22

發送簡訊給我
#16 引用回覆 回覆 發表時間:2005-06-02 12:51:47 IP:203.203.xxx.xxx 未訂閱
引言: 不知大家有沒有用java寫的範例可以參考 包括自然人憑證與sockman大大拋磚引玉的二代金融卡讀卡程式 > >您好.我有下載了範例.那是銀行的卡資訊讀取. >但是我讀自然人憑證他說1001FULL >請問有"讀自然人憑證的序號基本資料"範例嗎?? >我找好久試好久都不行.拜託幫我謝謝 回答一下很多人問的問題! 你必須要取得中華電信的API..裡面有包含自然人憑證的APDU command 但是不是完全都有我不能確定因為它有所謂的標準版, 所以要讀取序號必須要知道它的Command怎麼下的 因為它是RSA加密法的卡片,它具有憑證及資料加密的功能 不過API要至內政部自然人憑證中心下載..很麻煩..還要註冊及簽保密合約 相關網址請參考 http://moica.nat.gov.tw/html/cover05_02.htm 使用.Net對自然人憑證的應用範例 http://www.flaginfo.com.tw/runpc/download/200410/129P210.txt 此範例並未使用APDU Command因此不需要使用中華電信的API 發表人 - sockman 於 2005/05/16 09:54:54
raincaller
一般會員


發表:0
回覆:2
積分:0
註冊:2005-01-22

發送簡訊給我
#17 引用回覆 回覆 發表時間:2005-06-02 13:14:04 IP:203.203.xxx.xxx 未訂閱
引言:
引言: 不知大家有沒有用java寫的範例可以參考 包括自然人憑證與sockman大大拋磚引玉的二代金融卡讀卡程式 > >您好.我有下載了範例.那是銀行的卡資訊讀取. >但是我讀自然人憑證他說1001FULL >請問有"讀自然人憑證的序號基本資料"範例嗎?? >我找好久試好久都不行.拜託幫我謝謝 回答一下很多人問的問題! 你必須要取得中華電信的API..裡面有包含自然人憑證的APDU command 但是不是完全都有我不能確定因為它有所謂的標準版, 所以要讀取序號必須要知道它的Command怎麼下的 因為它是RSA加密法的卡片,它具有憑證及資料加密的功能 不過API要至內政部自然人憑證中心下載..很麻煩..還要註冊及簽保密合約 相關網址請參考 http://moica.nat.gov.tw/html/cover05_02.htm 使用.Net對自然人憑證的應用範例 http://www.flaginfo.com.tw/runpc/download/200410/129P210.txt 此範例並未使用APDU Command因此不需要使用中華電信的API 發表人 - sockman 於 2005/05/16 09:54:54
akira
一般會員


發表:7
回覆:4
積分:2
註冊:2003-08-19

發送簡訊給我
#18 引用回覆 回覆 發表時間:2005-06-08 14:54:26 IP:61.64.xxx.xxx 未訂閱
不知大家有沒有用java寫的範例可以參考 包括自然人憑證與sockman大大拋磚引玉的二代金融卡讀卡程式 我最進也在寫java 讀晶片卡 已經可以讀取了 過程真是 @#$%!! 有機會再post
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#19 引用回覆 回覆 發表時間:2005-06-21 13:27:22 IP:222.35.xxx.xxx 未訂閱
sockman 您好,我在使用SCardConnectA时老是返回错误代码(80100069) The smart card has been removed, so that further communication is not possible.请问这是什么原因呢?
sockman
一般會員


發表:24
回覆:29
積分:10
註冊:2003-03-17

發送簡訊給我
#20 引用回覆 回覆 發表時間:2005-06-24 01:21:55 IP:219.71.xxx.xxx 未訂閱
引言: sockman 您好,我在使用SCardConnectA时老是返回错误代码(80100069) The smart card has been removed, so that further communication is not possible.请问这是什么原因呢?
你是不是使用SLE4428的Memory Card呢? 如果連不上那你可能要改Card Type.. 可以先用ScardConnect時參數下SCARD_SHARD_DIRECT 再用ScardControl,參數下IOCTL_SMARTCARD_SET_CARD_TYPE 再用ScardDisconnect中斷連線,接下來再connect一次 用ScardConnect時參數下SCARD_SHARE_EXCLUSIVE和SCARD_PROTOCOL_RAW 如果成功接下來你就可以使用ScardTransmit下APDU了!
1234
一般會員


發表:1
回覆:2
積分:0
註冊:2002-06-03

發送簡訊給我
#21 引用回覆 回覆 發表時間:2005-10-28 11:29:17 IP:60.248.xxx.xxx 未訂閱
各位高手好,弟找了7816-4的規格書苦讀了四天,結果拿中國信託的晶片卡(金融卡 信用卡)來測試,居然連Select MF都無法成功!請問您: 1.這可能是什麼原因呢? 2.是否大部分的卡都符合7816的規格? 3.如果是因為combo卡的關係,請問要Select FISCII Applet時,FISCII的AID是多少呢?(我們公司並非金資會員,買不到Spec) 4.以上只是弟學習過程中測試失敗而產生的疑問。事實上,弟的專案需要的功能只是「在CPU卡上建立一個檔案,儲存會員資料,並且可以修改或刪除。」請問,在卡上建立一個檔案(DF或EF)的相關指令是哪幾道呢? 拜託各位高手賜教了,謝謝!
orson
中階會員


發表:5
回覆:135
積分:58
註冊:2002-07-11

發送簡訊給我
#22 引用回覆 回覆 發表時間:2005-10-28 14:06:14 IP:211.74.xxx.xxx 未訂閱
A000000172950001
引言: 各位高手好,弟找了7816-4的規格書苦讀了四天,結果拿中國信託的晶片卡(金融卡 信用卡)來測試,居然連Select MF都無法成功!請問您: 1.這可能是什麼原因呢? 2.是否大部分的卡都符合7816的規格? 3.如果是因為combo卡的關係,請問要Select FISCII Applet時,FISCII的AID是多少呢?(我們公司並非金資會員,買不到Spec) 4.以上只是弟學習過程中測試失敗而產生的疑問。事實上,弟的專案需要的功能只是「在CPU卡上建立一個檔案,儲存會員資料,並且可以修改或刪除。」請問,在卡上建立一個檔案(DF或EF)的相關指令是哪幾道呢? 拜託各位高手賜教了,謝謝!
Orson
1234
一般會員


發表:1
回覆:2
積分:0
註冊:2002-06-03

發送簡訊給我
#23 引用回覆 回覆 發表時間:2005-11-01 00:59:00 IP:211.76.xxx.xxx 未訂閱
感謝orson大大!現在可以選出FISCII的Applet,也可以順利的執行sockman大大的讀取程式了!感謝!    另外...可否煩請各位高手指導我第四題呢?謝謝!
mrbig
一般會員


發表:0
回覆:1
積分:0
註冊:2004-12-09

發送簡訊給我
#24 引用回覆 回覆 發表時間:2007-03-02 15:16:33 IP:59.120.xxx.xxx 未訂閱
http://www.taconet.com.tw/DerYuChang/index.htm
可以到上面這個網站看看,有介紹到如何讀取二代金融卡的一些APDU指令,
連自然人憑證、I-Cash卡都有,不過不包含所有的指令。
系統時間:2024-05-02 15:46:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!