# IC卡扇区数据格式
# 普通注册授权卡
第1个扇区的第0块
位置 | 代称 | 说明 |
---|---|---|
0 | Year | 减2000后的值,BCD码 |
1 | Month | BCD码 |
2 | Day | BCD码 |
3 | Hour | BCD码 |
4 | Minute | BCD码 |
5-6 | 内部使用 | |
7 | CardType | 0 固定 表示授权卡 |
8 | CardLevel | 0普通卡1无限制卡2无有效期 |
9 | Rand | 随机数,每次写卡产生,表示卡片被重写 |
10 | FunMast | bit0全部楼层,bit2使用次数限制 |
11 | CardTimesH | 有效次数 高位 |
12 | CardTimesL | 有效次数 低位 |
13-15 | 3字节卡片编号,从0开始;高位在前(15是个位数) |
无限制卡
不受门、有效次数、电梯地址、电梯楼层、有效期的限制,都可以开。
第1个扇区的第1块
位置 | 代称 | 说明 |
---|---|---|
0-15 | Bit128 | 表示可以开启128个门 |
第1个扇区的第2块
位置 | 代称 | 说明 |
---|---|---|
0 | A | 第1个电梯的地址 |
1 | B | 第2个电梯的地址 |
2 | C | 第3个电梯的地址 |
3 | D | 第4个电梯的地址 |
4 | E | 第5个电梯的地址 |
5 | F | 第6个电梯的地址 |
6-15 | 第(22-31)*8bit个门 地址从176到248 (未用) |
表示总共可以最多选择6个电梯
第2扇区第0-2块 :用来存储6个电梯每个楼层的权限
块 | 位置 | 代称 | 说明 |
---|---|---|---|
0 | 0-7 | Bit 64 | 第1个电梯的64层 |
0 | 8-15 | Bit 64 | 第2个电梯的64层 |
1 | 0-7 | Bit 64 | 第3个电梯的64层 |
1 | 8-15 | Bit 64 | 第4个电梯的64层 |
2 | 0-7 | Bit 64 | 第5个电梯的64层 |
2 | 8-15 | Bit 64 | 第6个电梯的64层 |
# 母卡
母卡用来存储普通注册卡的密码,以及开始使用的扇区的第一个扇区号码。
只固定使用第3
扇区,也就是2
扇区第0
块,结构如下
块 | 位置 | 代称 | 说明 |
---|---|---|---|
0 | 0 | 备用 | |
0 | 1 | 备用 | |
0 | 2 | SectorNumber | IC卡数据第1个扇区号 1-14,即前面注册卡锁使用的2个连续扇区的第一个扇区的号码 |
0 | 3-14 | Password | IC卡验证密码,A模式 |
0 | 15 | XOR | 前面15个数字的校验,异或 |
密码由6位
字符组成,存储为12
个字节。转换算法如下
void DoKey6_12(unsigned char *key,unsigned char *buff)
{
unsigned char i;
for(i=0;i<6;i++){
key[i*2] = ((~buff[i])& 0xF0) |(buff[i]>>4);
key[i*2+1] = (((~buff[i])<<4)& 0xF0) |(buff[i]&0x0F);
}
}
例子
000004C378C378C378C378C378C37804,表示密码为888888
,加密用户卡扇区4和5。