
用AT91SAM7S256做sim卡或读卡器

移动
10.0.0.1 config.cmpassport.com
10.0.0.1 www.cmpassport.com
10.0.0.1 wap.cmpassport.com
https://onekey1.cmpassport.com/unisdk/rs/ckRequest
https://config.cmpassport.com/client/uniConfig
https://log1.cmpassport.com:9443/log/logReport
https://onekey1.cmpassport.com/unisdk/
https://smsks1.cmpassport.com/unisdk/
http://www.cmpassport.com/unisdk/
https://config.cmpassport.com/client/uniConfig
————-
https://www.cmpassport.com/unisdk/rs/getPrePhonescrip
encrypted
reqdata
securityreinforce
http://wap.cmpassport.com/openapi/wabGetuserInfo?channelId=
expandParams=
message=
msgId=
openType=
sign=
userId=
{“detailErrorCode”:””,
“msgId”:””,
“pcId”:””,
“resultcode”:”121″,
“systemTime”:””
“desc”:”获取移动手机失败”}
独有网关认证及sim卡快捷认证方式可实现免密一键登录
6种认证方式,在不同场景下提供更加安全的认证
https://onekey1.cmpassport.com/unisdk/rs/ckRequest
appid
apppackage
appsign
clienttype
interfacever
keyid
msgid
sdkver
sign
timestamp
ver
https://onekey1.cmpassport.com/client/queryUpgrade
中国移动南方基地–中移互联网有限公司
http://www.cmpassport.com/unisdk/rs/getphonescrip
interfacever
keyid
reqdata
ver
电信
10.0.0.1 id6.me
10.0.0.1 open.e.189.cn
https://open.e.189.cn/openapi/flow/getOpenId=?timestamp
state
clientId
clientType
format=json
version=1.5
sign=
http://id6.me/openapi/networkauth/preGetMobile.do?paramKey=
paramStr
clientId=
clientType=
format=json
version=v1.5
sign=
https://open.e.189.cn/api/logbox/oauth2/getPreMobileUrl.do?appKey=8023528553&clientType=2&format=json&version=v1.0&preUrlCBN=jsonp_gj1n&bussinessType=5&callbackMsg=callbackMsg&sFlag=false&callback=callbackMsg
callbackMsg({ “result”:0, “preUrl”:”http://id6.me/openapi/networkauth/preGetMobile.do?sign=83C635DFA36E9E119C25EE3350CC7E46E4D8F9E9¶mStr=DCE7D0A0714A333877466D264ACFAF95D781BB52204DB909059E13D0F27CED71374E9FD9D8B42C34F4DD2B8FFB52BAF9BF80C41502AEDA5BA05E2B70BE536FBCEBF42FA6C63B79F82FD12E5FF851090FD1DC2A9DE1508B35A4701B4A91AF0B6AF2783BA67BE71BED5CBCF73D6D10BD7B05A5B835E4D4AAC36CA078216C98DE73BF9447006B9E76FF9B050EE4F45DD36B&format=jsonp¶mKey=A5AFB2B7167CC91D9126EF900B16B3A6A183712BF6A1659C56A2B1239B5B85BEB72575085E3E362664602B8E1129BD1183C57739601FC42352C5DAE685F196AAD18B86922B520FDE06CDF09DDD05227EA08730504B7DD338A053E8246FD6D5D487116A3C614DD6C6BD13CFF1D77BEEDAEEE7462BC7BCD7FF5A927A06FC88D69C&clientId=8023528553&version=v1.0&clientType=2″, “msg”:”success”, “aesCacheKey”:”191abc14-4a6c-44b7-966a-559dae683db5″ })
http://id6.me/openapi/networkauth/preGetMobile.do?sign=83C635DFA36E9E119C25EE3350CC7E46E4D8F9E9¶mStr=DCE7D0A0714A333877466D264ACFAF95D781BB52204DB909059E13D0F27CED71374E9FD9D8B42C34F4DD2B8FFB52BAF9BF80C41502AEDA5BA05E2B70BE536FBCEBF42FA6C63B79F82FD12E5FF851090FD1DC2A9DE1508B35A4701B4A91AF0B6AF2783BA67BE71BED5CBCF73D6D10BD7B05A5B835E4D4AAC36CA078216C98DE73BF9447006B9E76FF9B050EE4F45DD36B&format=jsonp¶mKey=A5AFB2B7167CC91D9126EF900B16B3A6A183712BF6A1659C56A2B1239B5B85BEB72575085E3E362664602B8E1129BD1183C57739601FC42352C5DAE685F196AAD18B86922B520FDE06CDF09DDD05227EA08730504B7DD338A053E8246FD6D5D487116A3C614DD6C6BD13CFF1D77BEEDAEEE7462BC7BCD7FF5A927A06FC88D69C&clientId=8023528553&version=v1.0&clientType=2
http://id6.me/openapi/networkauth/preGetMobile.do?sign=83C635DFA36E9E119C25EE3350CC7E46E4D8F9E9¶mStr=DCE7D0A0714A333877466D264ACFAF95D781BB52204DB909059E13D0F27CED71374E9FD9D8B42C34F4DD2B8FFB52BAF9BF80C41502AEDA5BA05E2B70BE536FBCEBF42FA6C63B79F82FD12E5FF851090FD1DC2A9DE1508B35A4701B4A91AF0B6AF2783BA67BE71BED5CBCF73D6D10BD7B05A5B835E4D4AAC36CA078216C98DE73BF9447006B9E76FF9B050EE4F45DD36B&format=jsonp¶mKey=A5AFB2B7167CC91D9126EF900B16B3A6A183712BF6A1659C56A2B1239B5B85BEB72575085E3E362664602B8E1129BD1183C57739601FC42352C5DAE685F196AAD18B86922B520FDE06CDF09DDD05227EA08730504B7DD338A053E8246FD6D5D487116A3C614DD6C6BD13CFF1D77BEEDAEEE7462BC7BCD7FF5A927A06FC88D69C&clientId=8023528553&version=v1.0&clientType=2
请使用电信号在4G网络下使用
联通
10.0.0.1 opencloud.wostore.cn 小沃科技有限公司
10.0.0.1 auth.wosms.cn 联通在线信息科技有限公司
10.0.0.1 id.mail.wo.cn 中国联合网络通信集团有限公司
mdn.open.wo.cn
hmrz.wo.cn
nishub1.10010.com
nisportal.10010.com (这个可能没关系)
enrichgw.10010.com
联通有多个子公司对外提供这个服务,需要屏蔽的域名最多
https://hmrz.wo.cn/sdk-resource/terms/number_authentication.html
https://auth.wosms.cn/api/netm/v1.0/gmbs?seq=
返回:
{
“code”:1,
“msg”:”公网IP无效”,
“seq”:””
“status”:1101
}
https://auth.wosms.cn/dro/netm/v1.0/qc
apiKey
params
paramsKey
sign
sign_Type
https://nisportal.10010.com:9004/api?appid=&ret_url=
https://id.mail.wo.cn/openapi/auth/accessToken.do?appId=
appType=
version=
paramKey
paramStr
sign
重定向:
http://123.125.99.9:9001/api?
appid=
https://id.mail.wo.cn/openapi/auth/accessToken/callback.do?appId
operatorType
appName
appType
version
aeskey
{ “msg”:网络不能识别
“result”:3002}
——————-
https://mail.wo.cn/wap/noPwdLogin.wo
返回
{
“paramLogin”:
“https://id.mail.wo.cn/openapi/auth/accessToken.do?
appId=D0C910F6135849B1B347BAE6ADC2930D
&appType=17
&version=v1.0
&sign=
¶mKey=
¶mStr=
”
}
libccid
/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist -> /etc/libccid_Info.plist
修改 ifdDriverOptions 的值
0 表示输出 5V电压(这也是默认值)
16 也就是0x10, 表示输出3V电压,如果失败,再输出5V
32, 也就是0x20, 表述输出1.8V,如果失败,再分别尝试3V和5V
48, 也就是0x30, 让读卡器自己选择。
某些读卡器不支持驱动对其进行电压设置
比如 深圳神州科技 用Identive/SCM芯片做的
Identiv SCR35xx USB Smart Card Reader [CCID Interface]
Identive CLOUD 2700 R Smart Card Reader [CCID Interface]
始终使用5V电压
而 SSK和Hawk用 Realtek 芯片做的读卡器 就支持驱动设置电压
Generic USB2.0-CRW [Smart Card Reader Interface]
Generic Smart Card Reader Interface [Smart Card Reader Interface]
1970 年,日本 Kunitaka Arimura 博士申请了智能卡概念的第1个也是唯一的专利。
1974年,法国的Roland Moreno申请了IC卡的原始专利,后来被称为“智能卡”。当时的原型只是一个安全存储卡,并没有处理器。
1977年,三家法国公司Bull CP8,SGS Thomson和Schlumberger都开始开发IC卡。
其中,Honeywell Bull公司的Michel Ugon在1977年发明了第一次使用微处理器的智能卡,于1978年获得 self-programmable one-chip microcomputer (SPOM)专利。
1979年, 美国摩托罗拉公司 基于Michel Ugon的这个专利,开发了首个用于法国银行业的安全单芯片微控制器CP8.
1982年,法国开始IC卡电话测试,1983年用于payphone
1984年, 带芯片的ATM银行卡测试
1986年, Bull CP8在弗吉尼亚银行和马里兰国家银行分发了14,000张
1987年, 与美国农业部的全国性花生营销卡一起在美国实施了第一个大规模智能卡应用程序。
1991年, 德国慕尼黑智能卡制造商Giesecke&Devrient开发了第一张SIM卡,第一批300张SIM卡卖给了芬兰无线网络运营商Radiolinja。
1992年, 在丹麦启动了全国性的预付费(电子钱包)卡项目(DANMONT)。
1993年, 在法国雷恩对多功能智能卡应用程序进行了现场测试,其中在智能银行卡中启用了Telecarte功能(用于公用电话)。
1994年, Europay,MasterCard和Visa(EMV)发布了有关基于全球微芯片的银行卡(智能卡)的联合规范。
但ISO 7816国际标准的,主要雏形是 日本东芝公司的 JPN 2537199 号专利 Integrated circuit card,(priority date: 1986-06-20;publication date: 1996-07-08)
USA 5161231 号专利 Processing system which transmits a predetermined
error code upon detection of an incorrect transmission code,
(priority date: 1991-03-12;publication date: 1992-11-03).
7816-3: 接触卡 — 电气接口和传输协议
创建于 1989, 补充于 1992 (增加 T=1 协议),
再次补充于 1994 (修改了协议类型选择),
更新于 1997 (包含了 3V电压),
补充于 2002 (添加 1.8 电压),
最后更新时间是 2006 (移除 Vpp触点)
https://github.com/corberan/ctce8_cfg_tool
用法:
.\ctce8_cfg_tool.exe unpack “E:\e8_Config_Backup\ctce8_ZXHN_F450.cfg” ctce8_ZXHN_F450.xml
.\ctce8_cfg_tool.exe pack ctce8_ZXHN_F450.xml ctce8_ZXHN_F450.cfg “ZXHN F450”
pack 打包命令的第三个参数是光猫设备名,一般为配置文件名中的字段。如我得到的配置文件名为 ctce8_ZXHN_F450.cfg,那么这个字符串就是 “ZXHN F450″,注意中间是空格。
如果已经有web admin权限, 可进到“设备管理” usb备份配置
这里开启 telnet 权限
Selection of transmission Parameters and protocol
在完成复位应答(ATR)后,卡应该等待从接口设备来的字符:
传输受传输参数(transmission Parameters)控制; 它们的解释受协议(protocol)约束。
如果ATR的TA2字段存在(也就是卡处于特定模式),那么接口设备应该用特定的传输参数来开始一个特定的传输协议。
否则(也就是卡处于协商模式), 那么 ATR期间使用的传输参数(也就是默认参数), 应该被继续使用, 以便接收 协商数据。
1. 如果卡在ATR之后收到的第1个字节是 FF, 那么接口设备应该开始了 PPS交换。默认的传输参数在PPS交换期间应该被继续使用,直到PPS交换成功。
2. 否则, 接口设备不支持PPS, 应该继续使用 默认参数。
如果卡受到 接口设备 发送的PPS字节后,如果能接受这个参数,也应回应同样的PPS字节给 接口设备。这样完成一次PPS协商。
卡片可以支持5V, 3V, 1.8V 的电压的一种或者多种。
如果支持多种,则必须连续。 也就是可以支持
5, 3, 1.8
或
5, 3
或
3, 1.8
但是,不能支持 5, 1.8 (这种是跳跃的)
如果接口设备 给卡指定了一种它能支持的电压, 那么卡就必须按这种电压操作。
如果接口设备支持多种电压, 实施这些电压的顺序,没有定义
一般来说,应该从低电压开始尝试。
但是, 因为所有的卡,都应该保护自己在高电压下不被损坏, 所以,即使从高电压开始尝试,也是符合规范的。
激活序列:
RST为低电平,
VCC加电(先1.8V,后3.3V,再5V)
I/O脚置于 接收模式, 也就是高电平. 但接口设备在激活过程中,要忽略I/O脚上的数据。
为CLK提供稳定的时钟信号。在复位应答期间,f在1~5MHz(5V卡), 1~4M(3V卡)
在给VCC上电,设置IO处于接收模式,提供时钟信号, 这几个操作间,应该存在一个延时。
但具体延时多长时间,没做定义,实现者自己把握。
————补充说明——————
SIM_IO的 输入(接收模式recption,一般此时接口设备来发送)
输出(发送模式transmission mode).
状态H- 如果卡和接口设备都处于接收模式(reception mode)
或者 发送方 强加此状态(trasmitter imposed this state), 也就是说 发送方,要发送1
状态L– 发送方 强制此状态, 也就是发送方要发送0
————补充说明完毕——————
在激活完成之后,准备冷复位
此时, RST处于低电平, VCC上电,IO处于高电平也就是接收模式,CLK提供了合适且稳定的时钟。
卡就准备好了冷复位。
$ git clone git://github.com/DreamSourceLab/DSView
$ cd DSView
$ cd libsigrok4DSL
$ ./autogen.sh
$ ./configure –prefix=/home/softsim/utils/dsview
或者
PKG_CONFIG_PATH=/home/softsim/utils/dsview/lib/pkgconfig ./configure –prefix=/home/softsim/utils/dsview
$ make
$ make install
$ cd ../libsigrokdecode4DSL
$ ./autogen.sh
$ ./configure –prefix=/home/softsim/utils/dsview
$ make
$ make install
$ cd ../DSView
$ PKG_CONFIG_PATH=/home/softsim/utils/dsview/lib/pkgconfig cmake -DCMAKE_INSTALL_PREFIX:PATH=/home/softsim/utils/dsview .
$ make
$ make install
参考资料
https://github.com/DreamSourceLab/DSView/blob/master/INSTALL
ARM7TDMI ® ARM ® Thumb ® Processor Core
当SAM7S64复位时, ARM核心处于重启模式,访问外部存储器(通常是ROM), 位于地址0
而SRAM位于 0x20 0000处。
当软件执行 remap命令(往AMC_RCR寄存器的RCB字段写入1), 内部SRAM会自动定位到
0x0处
0 -> F FFFF remap前是Flash, remap后是SRAM
10 0000 -> 1F FFFF Internal Flash
20 0000 -> 2F FFFF Internal SRAM
设备初始化流程
remap前
ROM 0x0000 0000 – 0x23FF FFFF 64M (实际只有8K)
RAM 0x0800 0000 – 0x0FFF FFFF 128M
remap后
Norflash 0x0000 0000 – 0x03FF FFFF 64M (实际584k)
RAM 0x0800 0000 – 0x0FFF FFFF 128M
ROM 0x2000 0000 – 0x23FF FFFF 64M
芯片上电后是从 8k ROM (地址0开始) 启动,在 ROM 启动程序中,将会判断 跳转地址
0x20144800(此时 NORFLASH 起始地址为 0x2000 0000)中的跳转判断字符,若该地
址读出字符为 0x55,则当前程序将会向系统重映射寄存器写入 0x00000001,进
行系统重映射,并在重映射之后进行软复位(系统不断电复位),arm 核将从
NORFLASH 读取第一条指令开始执行程序。此时 NORFLASH 起始地址映射到
0x00000000,程序开始运行。
如果芯片在 8k ROM 启动程序中未进行地址重映射,程序将会进入 7816 接口
hex 下载模式,hex 文件转换为符合 7816 协议数据格式,将 hex 数据下载入
NORFLASH 中(其中将会进行 flash 擦除、写入、读出 crc 校验、写入跳转判断 0x55
操作),不同操作类型由 APDU 头和 Lc 数据组成。
智能卡COS操作系统,目前主要有两种下载方式:一种是把已经经过验证的COS直接通过掩膜的方式,在生产过程中固化到智能卡芯片的只读存储器ROM中;另一种是芯片生产结束后,通过ROM中的Boot Loader将COS下载到智能卡中的Flash、EEPROM等非易失储存器中。相比于COS固化在ROM中COS不会被恶意修改的优势,采用Boot Loader下载COS的方式使COS具有更大的灵活性,避免修改掩膜周期长的麻烦,在市场上更具竞争优势。
实际生产中,需要把COS数据提供给厂商,由厂商来生产SIM模块或卡产品。如果把从芯片供应商处订购的芯片和委托方的COS程序直接提供给厂商生产,可能存在厂商将芯片用作其它用途的风险。厂商获得COS程序直接找芯片供应商订购芯片,下载COS程序后即可出售,会直接损害委托方和使用者的利益。因此,在制卡过程中如何从技术手段保证COS程序下载到芯片的安全,是现有技术需要解决的一个重要问题。
目前常用的COS数据的加解密方案是,加密机方案或软件加解密方案。其中,加密机方案较为成熟,但其成本高昂;软件加解密方案不便于对密钥的管理,且容易泄露密钥,安全性极差。
Parallel Input/Output Controller (PIO) 并行IO控制器
连接 USART 的引脚可与 PIO 线复用。必须先对 PIO 编程以将 USART 引脚分配到期望的外设功能。若 USART 的 I/O 线未使用, PIO 控制器可将其用作其它功能
当USART功能关闭是,为了防止TXD管脚变为低电平,需要使用一个内部上拉。
如果硬件握手功能启用,或者使用modem模式,也需要使用内部上拉。
USART中断线与高级中断控制器的一个内部中断源连接。 使用USART中断请求前要先对AIC编程。注意,边沿敏感模式下不推荐使用 USART 中断线。
USART有一个与ISO7816兼容模式。该模式允许与智能卡连接并可通过ISO7816链接与安全访问模块 (SAM) 通信。支持 ISO7816 规范定义的 T = 0 与 T = 1 协议。
将 US_MR 寄存器 USART_MODE 域写 0x4,将设置 USART 在 ISO7816 的 T = 0 模式下工作;若 USART_MODE 域写 0x5,则 USART 在 ISO7816 的 T = 1 模式下工作。
ISO7816为一条双向线的半双工通信。波特率由远程器件(读卡器/modem)提供的时钟分频提供.
USART 与智能卡的连接见下图。 TXD 线变为双向, 波特率发生器由 SCK 引脚向 ISO7816提供时钟。由于 TXD 引脚变为双向,其输出还是由发送器输出驱动,但只有当发送器激活 时,其输入被重定向为接收器的输入。(也就是说,发送器激活时,输入到了RXD线上)
由于 USART 产生时钟,因此它被视为通信的主设备。
The TXD line becomes bidirectional and the Baud Rate Generator feeds the ISO7816 clock on the SCK pin. As the TXD pin becomes idirectional, its output remains driven by the output of the transmitter but only when the transmitter is active while its input is directed to the input of the receiver. The USART is considered as the master of the communication as it generates the clock.
当设置为7816模式是, 字符格式固定。不管 CHRL、 MODE9、 PAR
及 CHMODE 域中是什么值,其配置始终万为 8 位数据位,偶检验及 1 或 2 位停止位。 MSBF 可设置发送是高位在先还是低位在先。奇偶校验 (PAR)可以用普通模式或者 反相模式.
由于通信不是双向的,USART 不能同时在发送器与接收器模式下操作。因而必须根据需要使能或禁用接收器/发送器。 ISO7816 模式下同时使能发送器与接收器结果无法预知。
ULINK2 根据PID分为两个可用固件版本:2720 或者 2722
lsusb 可以看到
Bus 001 Device 011: ID c251:2720 Keil Software, Inc. 4-Port USB 2.0 Hub
2720
ULINK2 固件版本为 1.42 或者更低
ULINK2 固件版本为 2.00 或者更高,但是 用UL2_Configure工具配置成了 ulink boot模式
2722
ULINK2 固件版本为 2.00 或者更高, 配置成了CMSIS-DAP兼容模式, 默认的boot模式也是 CMSIS-DAP
2727
没有固件,只有bootloader
CMSIS-DAP is the interface firmware for a Debug Unit that connects the Debug Port to USB. Debuggers, which execute on a host computer, connect via USB to the Debug Unit and to the Device that runs the application software. The Debug Unit connects via JTAG or SW to the target Device. ARM Cortex processors provide the CoreSight Debug and Trace Unit. CMSIS-DAP supports target devices that contain one or more Cortex processors.
CMSIS-DAP can be used with:
MDK-ARM V4.54. (or later).
The Debug Unit in use must support the Firmware for the CoreSight Debug Access Port (CMSIS-DAP). The firmware gets implemented by the vendor of the device or debug adapter.
CMSIS-DAP firmware needs to be version V1.10 or newer to support SWO trace. Verify the firmware in CMSIS-DAP JTAG/SW Adapter.
ULINK2 and ULINK-ME firmware updates have always been backward compatible to all previous µVision versions but unfortunately firmware version 2.01 is an exception. The firmware version 2.01 and later is now CMSIS-DAP compatible by default.