- 博客(37)
- 收藏
- 关注
原创 PCSC那事儿(三十七--PCSCD)
<br />StatSynchronize做了两件事情,同步共享内存,往pipe写入'/0'.<br />319行, StatSynchronize的入口参数rContext->readerState,在执行StatSynchronize之前已经做了足够的初始化。现在通过同步共享内存,并通过pipe告知客户端,状态readerState发生了变化。使得客户端根据共享内存获得最新的状态。<br /> <br /><br />321 while (1) <br />322 { <
2010-12-01 12:51:00 1907 2
原创 PCSC那事儿(三十六--PCSCD)
<br /> <br />回头吧,回到 EHSpawnEventHandler 177行,接着往下看。<br /><br />184 /* <br />185 * Find an empty reader slot and insert the new reader <br />186 */ <br />187 for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++) <br />188
2010-12-01 12:49:00 1359
原创 PCSC那事儿(三十五--PCSCD)
<br />回到RFAddReader<br /> 237 <br /> 238 /* asynchronous card movement? */ <br /> 239 { <br /> 240 RESPONSECODE (*fct)(DWORD) = NULL; <br /> 241 <br /> 242 dwGetSize = sizeof(fct); <br /> 243 <br /> 244
2010-12-01 12:47:00 1544
原创 PCSC那事儿(三十四--PCSCD)
<br />这个还是放在后面解说比较好,因为关系到和一个reader上下文相关的线程终止的问题。<br />可是目前还没有解说到该线程的启动。<br /> <br />418行, RFUnInitializeReader定义在readerfactory.c<br />实现如下:<br /> <br /> <br />1062 LONG RFUnInitializeReader(PREADER_CONTEXT rContext) <br />1063 { <br />1064 Log2(PCS
2010-12-01 12:42:00 1310
原创 PCSC那事儿(三十三--PCSCD)
RFLoadReader定义在readerfactory.c实现如下: 736 LONG RFLoadReader(PREADER_CONTEXT rContext) 737 { 738 if (rContext->vHandle != 0) 739 { 740 Log2(PCSC_LOG_INFO, "Reusing already loaded driver for %s", 741
2010-12-01 12:36:00 1270
原创 PCSC那事儿(三十二--PCSCD)
<br />RFLoadReader定义在readerfactory.c<br />实现如下:<br /> 736 LONG RFLoadReader(PREADER_CONTEXT rContext) <br /> 737 { <br /> 738 if (rContext->vHandle != 0) <br /> 739 { <br /> 740 Log2(PCSC_LOG_INFO, "Reusing already loaded dr
2010-12-01 12:35:00 1474
原创 PCSC那事儿(三十一--PCSCD)
121 122 if ((strcmp(lpcReader, lpcStripReader) == 0) && 123 (dwPort == (sReadersConte
2010-01-28 09:35:00 1900 1
原创 PCSC那事儿(三十--PCSCD)
464 /* 465 * Allocate memory for reader structures 466 */ 467 (void)RFAllocateReaderSpace(); 468 RFAllocateRead
2010-01-28 09:34:00 1748
原创 PCSC那事儿(二十九--PCSCD)
绕来绕去,回到pcscdaemon.c346 else 347 { 348 if (HotPlug) 349 { 350
2010-01-28 09:30:00 3471 1
原创 PCSC那事儿(二十八--PCSCD)
Info.plist这个文件以后再说。 所以呢,serial和PCMCIA类型的读卡器在/etc/reader.conf配置。usb类型的读卡器在/usr/local/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist配置。 307~312行,表示出现
2010-01-28 09:24:00 4385
原创 PCSC那事儿(二十七--开始服务端代码分析)
服务端代码分析 服务端,明显比客户端复杂,而且还用到了多线程。 从pcscdaemon.c开始。从main开始。 继续继续... 190 int main(int argc, char **argv) 191 { 192 int rv;
2010-01-26 14:59:00 2000
原创 PCSC那事儿(二十六--SCardReconnect)
SCardReconnect SCardReconnect定义在winscard_clnt.c实现如下:等等,问:前面提过的API有SCardConnect,这次SCardReconnect做什么?为什么需要这个API?答案是,在共享访问模式下,其中一个应用rese
2010-01-26 14:57:00 3963 1
原创 PCSC那事儿(二十五--SCardDisconnect)
SCardDisconnect SCardDisconnect定义在winscard_clnt.c实现如下: 1030 LONG SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition)1031 {1032 LONG rv;
2010-01-26 14:56:00 2799
原创 PCSC那事儿(二十四--SCardStatus)
SCardStatus 1532 LONG SCardStatus(SCARDHANDLE hCard, LPSTR mszReaderName,1533 LPDWORD pcchReaderLen, LPDWORD pdwState,1534 LPDWORD pdwProtocol, LPB
2010-01-26 14:54:00 4004 1
原创 PCSC那事儿(二十三--SCardSetAttrib)
SCardSetAttrib 343行,SCardSetAttrib定义在winscard_clnt.c实现如下: 2732 LONG SCardSetAttrib(SCARDHANDLE hCard, DWORD dwAttrId, LPCBYTE pbAttr,2733 DW
2010-01-26 14:53:00 1766
原创 PCSC那事儿(二十二--SCardGetAttrib)
SCardGetAttribSCardGetAttrib定义在winscard_clnt.c实现如下: 2658 LONG SCardGetAttrib(SCARDHANDLE hCard, DWORD dwAttrId, LPBYTE pbAttr,2659 LPDWORD pcbAttrLen)
2010-01-26 14:51:00 3841
原创 PCSC那事儿(二十一--SCardControl)
SCardControl SCardControl定义在winscard_clnt.c实现如下: 2365 LONG SCardControl(SCARDHANDLE hCard, DWORD dwControlCode, LPCVOID pbSendBuffer,2366
2010-01-26 14:50:00 4703 7
原创 PCSC那事儿(二十--SCardTransmit)
SCardTransmit245行SCardTransmit定义在winscard_clnt.c实现如下:2915 LONG SCardTransmit(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci,2916 LPCBYTE pbSendBu
2010-01-26 14:46:00 6972 1
原创 PCSC那事儿(十九--SCardConnect)
SCardConnect214行,SCardConnect定义在winscard_clnt.c实现如下: 734 LONG SCardConnect(SCARDCONTEXT hContext, LPCSTR szReader, 735 DWORD dwShareMode, DWO
2010-01-26 14:45:00 6395 2
原创 PCSC那事儿(十八--SCardCancel)
SCardCancel 3495 LONG SCardCancel(SCARDCONTEXT hContext)3496 {3497 LONG dwContextIndex;3498 LONG rv = SCARD_S_SUCCESS;3499 3500
2010-01-26 14:43:00 2250
原创 PCSC那事儿(十七--SCardGetStatusChange)
SCardGetStatusChangeSCardGetStatusChange定义在winscard_clnt.c实现如下:1872 LONG SCardGetStatusChange(SCARDCONTEXT hContext, DWORD dwTimeout,1873 LPSCARD_READERST
2010-01-26 14:32:00 5323 2
原创 PCSC那事儿(十六--SCardListReaders)
SCardListReadersSCardListReaders做了什么?定义在winscard_clnt.c实现如下:3202 LONG SCardListReaders(SCARDCONTEXT hContext, /*@unused@*/ LPCSTR mszGroups,3203 LPS
2010-01-26 14:31:00 6958 2
原创 PCSC那事儿(十五--SCardFreeMemory)
SCardFreeMemory定义在 winscard_clnt.c实现如下:3321 LONG SCardFreeMemory(SCARDCONTEXT hContext, LPCVOID pvMem)3322 {3323 LONG rv = SCARD_S_SUCCESS;3324
2010-01-26 14:30:00 2466 1
原创 PCSC那事儿(十四--SCardReleaseContext)
SCardReleaseContext看看SCardReleaseContext发生了什么。 576 LONG SCardReleaseContext(SCARDCONTEXT hContext) 577 { 578 LONG rv; 579 rele
2010-01-26 14:26:00 2601
原创 PCSC那事儿(十三--SCardListReaderGroups)
SCardListReaderGroups实现在winscard_clnt.c定义如下:3395 LONG SCardListReaderGroups(SCARDCONTEXT hContext, LPSTR mszGroups,3396 LPDWORD pcchGroups)3397 {339
2010-01-26 14:24:00 2236
原创 PCSC那事儿(十二--SCardIsValidContext)
SCardIsValidContext在winscard_clnt.c中定义实现如下:3543 LONG SCardIsValidContext(SCARDCONTEXT hContext)3544 {3545 LONG rv;3546 LONG dwContextI
2010-01-26 14:23:00 2636 1
原创 PCSC那事儿(十一--SCardEstablishContext)
这个很典型的,socket写操作。采用非阻塞方式写数据。同样的SHMMessageReceive也很典型,socket读操作。采用非阻塞方式读数据。不再罗列了。 提前说明,testpcsc和pcscd之间的通讯,是通过结构体sharedSegmentMsg (仅仅是通用的一个,后续的用到的AP
2010-01-26 14:14:00 4727
原创 PCSC那事儿(十--SCardEstablishContext)
381行, isExecuted,在本文件开头187 static short isExecuted = 0; 初始化为0,所以首次运行的时候会进入这个条件体。 393行, mapAddr = SYS_OpenFile(PCSCLITE_PUBSHM_FIL
2009-12-25 17:49:00 3374 2
原创 PCSC那事儿(九--SCardEstablishContext)
SCardEstablishContext305 LONG SCardEstablishContext(DWORD dwScope, LPCVOID pvReserved1, 306 LPCVOID pvReserved2, LPSCARDCONTEXT phContext) 307 { 308
2009-12-25 17:43:00 6458 1
原创 PCSC那事儿(八--SCardEstablishContext)
客户端代码分析前提:至少已经了解linux进程和进程间通讯,线程和线程间通讯。 继续。Everybody,Oh my god.We re back again.... 主要目的是分析PCSC-LITE1.5.5版本的框架和部分代码。首先,看看到底有几行代码.
2009-12-25 17:39:00 5769
原创 PCSC那事儿(七)
卷5上面说了,很多情况下,得直面ResourceManager。既然如此,就耐心分析分析。 RESOURCEMANAGER ClassRESOURCEMANAGER[6]属性HANDLE hContext 方法RESOURCEMANAGER()~RESOUR
2009-12-21 13:38:00 4987
原创 PCSC那事儿(六)
卷6 这卷谈到了SP。 直奔编程接口。 SCARD 要满足PCSC2,这是必须实现的接口[4]。定义了支持ICC应用接口的方法。通常,作为ICCSPs或CSP的一部分来实现。 属性HANDLEhContext方法
2009-12-21 13:36:00 4549
原创 PCSC那事儿(五)
卷1前面说过了,现在的人基本都很忙。没有所谓的闲功夫,从外到内,从下到上了解所有内容。所以这里直接把APPLICATION这位TOP先请出来给大家见见面。下面说说卷1。 问:卷1谈什么?答案是,别着急。卷1 简要介绍上面的金字塔中的各个层次。看看APPLICATION是如何调用(EXPLOIT)它的下层。
2009-12-21 13:30:00 5833 1
原创 PCSC那事儿(四)
卷7打开卷7。我们一起来,大声点“Lesson seven”… 本部分描述了智能卡应用程序使用PC/SC体系提供的功能的方法。通过使用智能卡资源管理器和智能卡服务提供者所提供的高层函数接口,智能卡应用程序可以做到一定程度的IFD无关性和IC卡无关性。在PC/SC规范规定的体系结构中,接口设备是由接
2009-12-18 09:50:00 6256
原创 PCSC那事儿(三)
工作组的使命 工作组?上面提到了PC/SC工作组,大佬们组织的。很快,你就想知道,工作组的职责是什么。工作组当然要制定强势规范。要在windows下工作的读卡器都要遵守。制定了什么规范?各有什么用?Hold your horse,让我慢些说。 工作组,当然要做些工作的。这个很好理解。历史上的新撰组,为了维护幕府的利益,也
2009-12-18 09:46:00 5759
原创 PCSC那事儿(二)
历史春花秋月何时了,往事知多少。回顾过去,展望未来。所以我们先了解PCSC的背景。 1996年3月,由Microsoft,IBM,BULL等八家IC卡厂商和PC软硬件厂商发起制定了PC/SC(Interoperability Specification forICCs and Personal Computer Systems)规范。 读懂历史是很必要的。PCSC大有来
2009-12-17 15:51:00 6660
原创 PCSC那事儿(一)
写作背景 由于微软在PC/SC工作组中的领头羊地位,且PC/SC的一个关键组件——资源管理器已经在Microsoft Windows中得到了支持,PC/SC发展非常迅速,市面上出现了一系列的支持PC/SC的智能卡读写器。近年来,自由开放的Linux各种开源代码包括操作系统正在不断地发展并得到了广泛的应用。因为开源PCSC-LITE套件实现了windows下同样的winscard
2009-12-17 15:42:00 12145 7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人