X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/3a532acfe14cf8be11f1f4b26685acbef33a6595..4ccdc189bdf814137a8023397f7bf89b707b0465:/client/cmdlfhid.c diff --git a/client/cmdlfhid.c b/client/cmdlfhid.c index 02c2fdb7..00a4722a 100644 --- a/client/cmdlfhid.c +++ b/client/cmdlfhid.c @@ -22,26 +22,26 @@ static int CmdHelp(const char *Cmd); int usage_lf_hid_wiegand(void){ - PrintAndLog("Usage: lf hid wiegand [h] [oem] [FacilityCode] [cardnumber]"); - PrintAndLog("This command converts FC/Cardnum to wiegand code"); + PrintAndLog("Usage: lf hid wiegand [h] [OEM] [FC] [CN]"); + PrintAndLog("This command converts facility code/card number to Wiegand code"); PrintAndLog("Options:"); - PrintAndLog(" h - This help"); - PrintAndLog(" oem - Oem number"); - PrintAndLog(" facilitynum - Facility number"); - PrintAndLog(" cardnum - Card number"); + PrintAndLog(" h - This help"); + PrintAndLog(" OEM - OEM number"); + PrintAndLog(" FC - facility code"); + PrintAndLog(" CN - card number"); PrintAndLog("Examples:"); PrintAndLog(" lf hid wiegand 0 101 2001"); return 0; } int usage_lf_hid_brute(void){ - PrintAndLog("Enables bruteforce of HID readers with specified facility-code."); + PrintAndLog("Enables bruteforce of HID readers with specified facility code."); PrintAndLog("Different formatlength is supported"); PrintAndLog("This is a incremental attack against reader."); PrintAndLog(""); - PrintAndLog("Usage: lf hid brute "); + PrintAndLog("Usage: lf hid brute "); PrintAndLog("Options :"); - PrintAndLog(" : 26|33|34|35|37|40|44|84 "); - PrintAndLog(" : 8-bit value HID facility code"); + PrintAndLog(" - 26|33|34|35|37|40|44|84"); + PrintAndLog(" - 8-bit value HID facility code"); PrintAndLog(""); PrintAndLog("Sample : lf hid brute 26 224"); return 0; @@ -166,12 +166,11 @@ static void getParity34(uint32_t *hi, uint32_t *lo){ *lo |= !result; } -static void getParity35(uint32_t *hi, uint32_t *lo){ - *hi = *hi; +static void getParity35(uint32_t *hi, uint32_t *lo){ } static void getParity37S(uint32_t *hi,uint32_t *lo){ uint32_t result = 0; - uint8_t i; + int i; // even parity for (i = 4; i >= 0; i--) @@ -295,7 +294,7 @@ int CmdHIDWiegand(const char *Cmd) { uint64_t cardnum = 0; uint8_t ctmp = param_getchar(Cmd, 0); - if ( strlen(Cmd) < 0 || strlen(Cmd) < 3 || ctmp == 'H' || ctmp == 'h' ) return usage_lf_hid_wiegand(); + if ( strlen(Cmd) == 0 || strlen(Cmd) < 3 || ctmp == 'H' || ctmp == 'h' ) return usage_lf_hid_wiegand(); oem = param_get8(Cmd, 0); fc = param_get32ex(Cmd, 1, 0, 10); @@ -304,14 +303,14 @@ int CmdHIDWiegand(const char *Cmd) { uint8_t ftmlen[] = {26,33,34,35,37,38,40}; for (uint8_t i = 0; i < sizeof(ftmlen); i++){ calcWiegand( ftmlen[i], fc, cardnum, &hi, &lo); - PrintAndLog("HID %d bit | FC: %d CN: %llu | Wiegand Code: %08X%08X", ftmlen[i], fc, cardnum, hi, lo); + PrintAndLog("HID %d bit | OEM: %d FC: %d CN: %llu | Wiegand code: %08X%08X", ftmlen[i], oem, fc, cardnum, hi, lo); } return 0; } int CmdHIDBrute(const char *Cmd){ - bool error = FALSE; + bool error = TRUE; uint8_t fc = 0, fmtlen = 0; uint32_t hi = 0, lo = 0; @@ -321,26 +320,19 @@ int CmdHIDBrute(const char *Cmd){ if (strlen(Cmd) > 2 || strlen(Cmd) == 0 || cmdp == 'h' || cmdp == 'H') return usage_lf_hid_brute(); fmtlen = param_get8(Cmd, 0); - switch(fmtlen){ - case 26: - case 33: - case 34: - case 35: - case 37: { + uint8_t ftms[] = {26,33,34,35,37}; + for ( uint8_t i = 0; i < sizeof(ftms); i++){ + if ( ftms[i] == fmtlen ) { error = FALSE; - break; - } - default: { - error = TRUE; - break; } } + if ( error ) return usage_lf_hid_brute(); fc = param_get8(Cmd, 1); if ( fc == 0) return usage_lf_hid_brute(); - PrintAndLog("Bruteforceing HID Reader"); + PrintAndLog("Brute-forcing HID reader"); PrintAndLog("Press pm3-button to abort simulation or run another command"); for ( uint16_t cn = 1; cn < 0xFFFF; ++cn){ @@ -370,16 +362,18 @@ int CmdHIDBrute(const char *Cmd){ } static command_t CommandTable[] = { - {"help", CmdHelp, 1, "This help"}, - //{"demod", CmdHIDDemod, 1, "Demodulate HID Prox Card II (not optimal)"}, - {"fskdemod", CmdHIDDemodFSK, 0, "['1'] Realtime HID FSK demodulator (option '1' for one tag only)"}, - {"sim", CmdHIDSim, 0, " -- HID tag simulator"}, - {"clone", CmdHIDClone, 0, " ['l'] -- Clone HID to T55x7 (tag must be in antenna)(option 'l' for 84bit ID)"}, - {"wiegand", CmdHIDWiegand, 1, " -- convert facilitycode, cardnumber to Wiegand code"}, + {"help", CmdHelp, 1, "This help"}, +// {"demod", CmdHIDDemod, 1, "Demodulate HID Prox Card II (not optimal)"}, + {"fskdemod",CmdHIDDemodFSK, 0, "['1'] Realtime HID FSK demodulator (option '1' for one tag only)"}, + {"sim", CmdHIDSim, 0, " -- HID tag simulator"}, + {"clone", CmdHIDClone, 0, " ['l'] -- Clone HID to T55x7 (tag must be in antenna)(option 'l' for 84bit ID)"}, + {"wiegand", CmdHIDWiegand, 0, " -- convert facility code/card number to Wiegand code"}, + {"brute", CmdHIDBrute, 0, " -- brute force card number"}, {NULL, NULL, 0, NULL} }; int CmdLFHID(const char *Cmd) { + clearCommandBuffer(); CmdsParse(CommandTable, Cmd); return 0; }