CHG: 'lf awid brute' - extra check if device gotten offline

CHG: 'lf t55x7 brute' - extra check if device gotten offline
CHG: 'lf nedap' - Nedap is supposed to be Diphase.
This commit is contained in:
iceman1001 2016-12-19 14:55:58 +01:00
parent e4b65f5bc1
commit 8cdf15c2b3
3 changed files with 20 additions and 15 deletions

View file

@ -127,7 +127,7 @@ int CmdHIDSim(const char *Cmd) {
int CmdHIDClone(const char *Cmd) {
unsigned int hi2 = 0, hi = 0, lo = 0;
uint32_t hi2 = 0, hi = 0, lo = 0;
int n = 0, i = 0;
UsbCommand c;
@ -482,7 +482,7 @@ static command_t CommandTable[] = {
{"fskdemod",CmdHIDDemodFSK, 0, "Realtime HID FSK demodulator"},
{"sim", CmdHIDSim, 0, "HID tag simulator"},
{"clone", CmdHIDClone, 0, "Clone HID to T55x7"},
{"wiegand", CmdHIDWiegand, 0, "Convert facility code/card number to Wiegand code"},
{"wiegand", CmdHIDWiegand, 1, "Convert facility code/card number to Wiegand code"},
{"brute", CmdHIDBrute, 0, "Bruteforce card number against reader"},
{NULL, NULL, 0, NULL}
};

View file

@ -226,13 +226,14 @@ int CmdLFNedapClone(const char *Cmd) {
return 1;
}
((ASK/biphase data rawdemod ab 0 64 1 0
//NEDAP - compat mode, ASK/Biphase, data rate 64, 4 data blocks
blocks[0] = T55x7_MODULATION_BIPHASE | T55x7_BITRATE_RF_64 | 4<<T55x7_MAXBLOCK_SHIFT;
((ASK/DIphase data rawdemod ab 0 64 1 0
//NEDAP - compat mode, ASK/DIphase, data rate 64, 4 data blocks
// DI-pahse (CDP) T55x7_MODULATION_DIPHASE
blocks[0] = T55x7_MODULATION_DIPHASE | T55x7_BITRATE_RF_64 | 7<<T55x7_MAXBLOCK_SHIFT;
if (param_getchar(Cmd, 3) == 'Q' || param_getchar(Cmd, 3) == 'q')
//t5555 (Q5) BITRATE = (RF-2)/2 (iceman)
blocks[0] = T5555_MODULATION_BIPHASE | T5555_INVERT_OUTPUT | 64<<T5555_BITRATE_SHIFT | 4<<T5555_MAXBLOCK_SHIFT;
blocks[0] = T5555_MODULATION_BIPHASE | T5555_INVERT_OUTPUT | 64<<T5555_BITRATE_SHIFT | 7<<T5555_MAXBLOCK_SHIFT;
blocks[1] = bytebits_to_byte(bs,32);
blocks[2] = bytebits_to_byte(bs+32,32);
@ -273,7 +274,7 @@ int CmdLFNedapSim(const char *Cmd) {
size_t size = sizeof(bs);
memset(bs, 0x00, size);
// NEDAP, Bihase = 2, clock 64, inverted,
// NEDAP, Biphase = 2, clock 64, inverted, (DIPhase == inverted BIphase
uint8_t encoding = 2, separator = 0, clk=64, invert=1;
uint16_t arg1, arg2;
arg1 = clk << 8 | encoding;
@ -312,7 +313,7 @@ int CmdLFNedapChk(const char *Cmd){
uint8_t cl = 0x1D, ch = 0x1D, carry = 0;
uint8_t al, bl, temp;
for (int i = 0; i < len; ++i){
for (int i = len; i >=0; --i){
al = data[i];
for (int j = 8; j > 0; --j) {

View file

@ -1463,8 +1463,7 @@ int CmdT55xxBruteForce(const char *Cmd) {
if (len > FILE_PATH_SIZE) len = FILE_PATH_SIZE;
memcpy(filename, Cmd+2, len);
FILE * f = fopen( filename , "r");
FILE * f = fopen( filename , "r");
if ( !f ) {
PrintAndLog("File: %s: not found or locked.", filename);
free(keyBlock);
@ -1519,7 +1518,13 @@ int CmdT55xxBruteForce(const char *Cmd) {
// loop
uint64_t testpwd = 0x00;
for (uint16_t c = 0; c < keycnt; ++c ) {
if ( offline ) {
printf("Device offline\n");
free(keyBlock);
return 2;
}
if (ukbhit()) {
ch = getchar();
(void)ch;
@ -1531,8 +1536,7 @@ int CmdT55xxBruteForce(const char *Cmd) {
testpwd = bytes_to_num(keyBlock + 4*c, 4);
PrintAndLog("Testing %08X", testpwd);
if ( !AquireData(T55x7_PAGE0, T55x7_CONFIGURATION_BLOCK, TRUE, testpwd)) {
PrintAndLog("Aquireing data from device failed. Quitting");
free(keyBlock);
@ -1540,7 +1544,6 @@ int CmdT55xxBruteForce(const char *Cmd) {
}
found = tryDetectModulation();
if ( found ) {
PrintAndLog("Found valid password: [%08X]", testpwd);
free(keyBlock);
@ -1610,7 +1613,8 @@ int tryOnePassword(uint32_t password) {
if (tryDetectModulation())
return 1;
else return 0;
else
return 0;
}
int CmdT55xxRecoverPW(const char *Cmd) {