mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-12-31 04:39:49 +08:00
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:
parent
e4b65f5bc1
commit
8cdf15c2b3
3 changed files with 20 additions and 15 deletions
|
@ -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}
|
||||
};
|
||||
|
|
|
@ -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) {
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue