diff --git a/client/cmdlfawid.c b/client/cmdlfawid.c index 34a231f11..8fec408a1 100644 --- a/client/cmdlfawid.c +++ b/client/cmdlfawid.c @@ -550,11 +550,11 @@ int CmdAWIDBrute(const char *Cmd) { } static command_t CommandTable[] = { - {"help", CmdHelp, 1, "This help"}, - {"demod", CmdAWIDDemod, 0, "Demodulate an AWID FSK tag from the GraphBuffer"}, - {"read", CmdAWIDRead, 0, "Attempt to read and extract tag data"}, - {"sim", CmdAWIDSim, 0, "AWID tag simulator"}, - {"clone", CmdAWIDClone, 0, "Clone AWID to T55x7"}, + {"help", CmdHelp, 1, "this help"}, + {"demod", CmdAWIDDemod, 0, "demodulate an AWID FSK tag from the GraphBuffer"}, + {"read", CmdAWIDRead, 0, "attempt to read and extract tag data"}, + {"clone", CmdAWIDClone, 0, "clone AWID to T55x7"}, + {"sim", CmdAWIDSim, 0, "simulate AWID tag"}, {"brute", CmdAWIDBrute, 0, "Bruteforce card number against reader"}, {NULL, NULL, 0, NULL} }; diff --git a/client/cmdlfem4x.c b/client/cmdlfem4x.c index cba5fdd9b..64d86b472 100644 --- a/client/cmdlfem4x.c +++ b/client/cmdlfem4x.c @@ -16,10 +16,12 @@ static int CmdHelp(const char *Cmd); //////////////// 410x commands int usage_lf_em410x_demod(void){ - PrintAndLog("Usage: lf em 410x_demod [clock] <0|1> [maxError]"); - PrintAndLog(" [set clock as integer] optional, if not set, autodetect."); - PrintAndLog(" , 1 for invert output"); - PrintAndLog(" [set maximum allowed errors], default = 100."); + PrintAndLog("Usage: lf em 410x_demod [h] [clock] <0|1> [maxError]"); + PrintAndLog("Options:"); + PrintAndLog(" h - this help"); + PrintAndLog(" clock - set clock as integer, optional, if not set, autodetect."); + PrintAndLog(" <0|1> - 0 normal output, 1 for invert output"); + PrintAndLog(" maxerror - set maximum allowed errors, default = 100."); PrintAndLog(""); PrintAndLog(" sample: lf em 410x_demod = demod an EM410x Tag ID from GraphBuffer"); PrintAndLog(" : lf em 410x_demod 32 = demod an EM410x Tag ID from GraphBuffer using a clock of RF/32"); @@ -31,66 +33,66 @@ int usage_lf_em410x_demod(void){ int usage_lf_em410x_write(void) { PrintAndLog("Writes EM410x ID to a T55x7 / T5555 (Q5) tag"); PrintAndLog(""); - PrintAndLog("Usage: lf em 410xwrite [h] [clock]"); + PrintAndLog("Usage: lf em 410x_write [h] [clock]"); PrintAndLog("Options:"); PrintAndLog(" h - this help"); PrintAndLog(" - ID number"); PrintAndLog(" - 0|1 T5555 (Q5) / T55x7"); PrintAndLog(" - 16|32|40|64, optional, set R/F clock rate, defaults to 64"); PrintAndLog("samples:"); - PrintAndLog(" lf em 410xwrite 0F0368568B"); + PrintAndLog(" lf em 410x_write 0F0368568B"); return 0; } int usage_lf_em410x_ws(void) { PrintAndLog("Watch 'nd Spoof, activates reader, waits until a EM410x tag gets presented then it starts simulating the found UID"); PrintAndLog(""); - PrintAndLog("Usage: lf em 410xspoof [h]"); + PrintAndLog("Usage: lf em 410x_spoof [h]"); PrintAndLog("Options:"); PrintAndLog(" h - this help"); PrintAndLog("samples:"); - PrintAndLog(" lf em 410xspoof"); + PrintAndLog(" lf em 410x_spoof"); return 0; } int usage_lf_em410x_clone(void) { PrintAndLog("Simulating EM410x tag"); PrintAndLog(""); - PrintAndLog("Usage: lf em 410xclone [h] "); + PrintAndLog("Usage: lf em 410x_clone [h] "); PrintAndLog("Options:"); PrintAndLog(" h - this help"); PrintAndLog(" uid - uid (10 HEX symbols)"); PrintAndLog(" clock - clock (32|64) (optional)"); PrintAndLog("samples:"); - PrintAndLog(" lf em 410xclone 0F0368568B"); - PrintAndLog(" lf em 410xclone 0F0368568B 32"); + PrintAndLog(" lf em 410x_clone 0F0368568B"); + PrintAndLog(" lf em 410x_clone 0F0368568B 32"); return 0; } int usage_lf_em410x_sim(void) { PrintAndLog("Simulating EM410x tag"); PrintAndLog(""); - PrintAndLog("Usage: lf em 410xsim [h] "); + PrintAndLog("Usage: lf em 410x_sim [h] "); PrintAndLog("Options:"); PrintAndLog(" h - this help"); PrintAndLog(" uid - uid (10 HEX symbols)"); PrintAndLog(" clock - clock (32|64) (optional)"); PrintAndLog("samples:"); - PrintAndLog(" lf em 410xsim 0F0368568B"); - PrintAndLog(" lf em 410xsim 0F0368568B 32"); + PrintAndLog(" lf em 410x_sim 0F0368568B"); + PrintAndLog(" lf em 410x_sim 0F0368568B 32"); return 0; } int usage_lf_em410x_brute(void) { PrintAndLog("Bruteforcing by emulating EM410x tag"); PrintAndLog(""); - PrintAndLog("Usage: lf em 410xbrute [h] ids.txt [d 2000] [c clock]"); + PrintAndLog("Usage: lf em 410x_brute [h] ids.txt [d 2000] [c clock]"); PrintAndLog("Options:"); PrintAndLog(" h - this help"); PrintAndLog(" ids.txt - file with UIDs in HEX format, one per line"); PrintAndLog(" d (2000) - pause delay in milliseconds between UIDs simulation, default 1000 ms (optional)"); PrintAndLog(" c (32) - clock (32|64), default 64 (optional)"); PrintAndLog("samples:"); - PrintAndLog(" lf em 410xbrute ids.txt"); - PrintAndLog(" lf em 410xbrute ids.txt c 32"); - PrintAndLog(" lf em 410xbrute ids.txt d 3000"); - PrintAndLog(" lf em 410xbrute ids.txt d 3000 c 32"); + PrintAndLog(" lf em 410x_brute ids.txt"); + PrintAndLog(" lf em 410x_brute ids.txt c 32"); + PrintAndLog(" lf em 410x_brute ids.txt d 3000"); + PrintAndLog(" lf em 410x_brute ids.txt d 3000 c 32"); return 0; } @@ -98,40 +100,40 @@ int usage_lf_em410x_brute(void) { int usage_lf_em4x50_dump(void) { PrintAndLog("Dump EM4x50/EM4x69. Tag must be on antenna. "); PrintAndLog(""); - PrintAndLog("Usage: lf em 4x50dump [h] "); + PrintAndLog("Usage: lf em 4x50_dump [h] "); PrintAndLog("Options:"); PrintAndLog(" h - this help"); PrintAndLog(" pwd - password (hex) (optional)"); PrintAndLog("samples:"); - PrintAndLog(" lf em 4x50dump"); - PrintAndLog(" lf em 4x50dump 11223344"); + PrintAndLog(" lf em 4x50_dump"); + PrintAndLog(" lf em 4x50_dump 11223344"); return 0; } int usage_lf_em4x50_read(void) { PrintAndLog("Read EM 4x50/EM4x69. Tag must be on antenna. "); PrintAndLog(""); - PrintAndLog("Usage: lf em 4x50read [h]
"); + PrintAndLog("Usage: lf em 4x50_read [h]
"); PrintAndLog("Options:"); PrintAndLog(" h - this help"); PrintAndLog(" address - memory address to read. (0-15)"); PrintAndLog(" pwd - password (hex) (optional)"); PrintAndLog("samples:"); - PrintAndLog(" lf em 4x50read 1"); - PrintAndLog(" lf em 4x50read 1 11223344"); + PrintAndLog(" lf em 4x50_read 1"); + PrintAndLog(" lf em 4x50_read 1 11223344"); return 0; } int usage_lf_em4x50_write(void) { PrintAndLog("Write EM 4x50/4x69. Tag must be on antenna. "); PrintAndLog(""); - PrintAndLog("Usage: lf em 4x50write [h]
"); + PrintAndLog("Usage: lf em 4x50_write [h]
"); PrintAndLog("Options:"); PrintAndLog(" h - this help"); PrintAndLog(" address - memory address to write to. (0-15)"); PrintAndLog(" data - data to write (hex)"); PrintAndLog(" pwd - password (hex) (optional)"); PrintAndLog("samples:"); - PrintAndLog(" lf em 4x50write 1 deadc0de"); - PrintAndLog(" lf em 4x50write 1 deadc0de 11223344"); + PrintAndLog(" lf em 4x50_write 1 deadc0de"); + PrintAndLog(" lf em 4x50_write 1 deadc0de 11223344"); return 0; } @@ -139,52 +141,52 @@ int usage_lf_em4x50_write(void) { int usage_lf_em4x05_dump(void) { PrintAndLog("Dump EM4x05/EM4x69. Tag must be on antenna. "); PrintAndLog(""); - PrintAndLog("Usage: lf em 4x05dump [h] "); + PrintAndLog("Usage: lf em 4x05_dump [h] "); PrintAndLog("Options:"); PrintAndLog(" h - this help"); PrintAndLog(" pwd - password (hex) (optional)"); PrintAndLog("samples:"); - PrintAndLog(" lf em 4x05dump"); - PrintAndLog(" lf em 4x05dump 11223344"); + PrintAndLog(" lf em 4x05_dump"); + PrintAndLog(" lf em 4x05_dump 11223344"); return 0; } int usage_lf_em4x05_read(void) { PrintAndLog("Read EM4x05/EM4x69. Tag must be on antenna. "); PrintAndLog(""); - PrintAndLog("Usage: lf em 4x05read [h]
"); + PrintAndLog("Usage: lf em 4x05_read [h]
"); PrintAndLog("Options:"); PrintAndLog(" h - this help"); PrintAndLog(" address - memory address to read. (0-15)"); PrintAndLog(" pwd - password (hex) (optional)"); PrintAndLog("samples:"); - PrintAndLog(" lf em 4x05read 1"); - PrintAndLog(" lf em 4x05read 1 11223344"); + PrintAndLog(" lf em 4x05_read 1"); + PrintAndLog(" lf em 4x05_read 1 11223344"); return 0; } int usage_lf_em4x05_write(void) { PrintAndLog("Write EM4x05/4x69. Tag must be on antenna. "); PrintAndLog(""); - PrintAndLog("Usage: lf em 4x05write [h]
"); + PrintAndLog("Usage: lf em 4x05_write [h]
"); PrintAndLog("Options:"); PrintAndLog(" h - this help"); PrintAndLog(" address - memory address to write to. (0-15)"); PrintAndLog(" data - data to write (hex)"); PrintAndLog(" pwd - password (hex) (optional)"); PrintAndLog("samples:"); - PrintAndLog(" lf em 4x05write 1 deadc0de"); - PrintAndLog(" lf em 4x05write 1 deadc0de 11223344"); + PrintAndLog(" lf em 4x05_write 1 deadc0de"); + PrintAndLog(" lf em 4x05_write 1 deadc0de 11223344"); return 0; } int usage_lf_em4x05_info(void) { PrintAndLog("Tag information EM4205/4305/4469//4569 tags. Tag must be on antenna."); PrintAndLog(""); - PrintAndLog("Usage: lf em 4x05info [h] "); + PrintAndLog("Usage: lf em 4x05_info [h] "); PrintAndLog("Options:"); PrintAndLog(" h - this help"); PrintAndLog(" pwd - password (hex) (optional)"); PrintAndLog("samples:"); - PrintAndLog(" lf em 4x05info"); - PrintAndLog(" lf em 4x05info deadc0de"); + PrintAndLog(" lf em 4x05_info"); + PrintAndLog(" lf em 4x05_info deadc0de"); return 0; } @@ -1422,20 +1424,20 @@ int CmdEM4x05Info(const char *Cmd) { static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, //{"410x_demod", CmdEMdemodASK, 0, "Extract ID from EM410x tag on antenna)"}, - {"410x_demod", CmdEM410xDemod, 0, "Extract ID from EM410x tag on antenna)"}, - {"410x_read", CmdEM410xRead, 1, "Extract ID from EM410x tag from GraphBuffer"}, + {"410x_demod", CmdEM410xDemod, 0, "demodulate a EM410x tag from the GraphBuffer"}, + {"410x_read", CmdEM410xRead, 1, "attempt to read and extract tag data"}, {"410x_sim", CmdEM410xSim, 0, "simulate EM410x tag"}, - {"410x_brute", CmdEM410xBrute, 0, "Reader bruteforce attack by simulating EM410x tags"}, - {"410x_watch", CmdEM410xWatch, 0, "Watches for EM410x 125/134 kHz tags (option 'h' for 134)"}, - {"410x_spoof", CmdEM410xWatchnSpoof, 0, "Watches for EM410x 125/134 kHz tags, and replays them. (option 'h' for 134)" }, - {"410x_write", CmdEM410xWrite, 0, "Write EM410x UID to T5555(Q5) or T55x7 tag"}, + {"410x_brute", CmdEM410xBrute, 0, "reader bruteforce attack by simulating EM410x tags"}, + {"410x_watch", CmdEM410xWatch, 0, "watches for EM410x 125/134 kHz tags (option 'h' for 134)"}, + {"410x_spoof", CmdEM410xWatchnSpoof, 0, "watches for EM410x 125/134 kHz tags, and replays them. (option 'h' for 134)" }, + {"410x_write", CmdEM410xWrite, 0, "write EM410x UID to T5555(Q5) or T55x7 tag"}, {"4x05_dump", CmdEM4x05Dump, 0, "dump EM4x05/EM4x69 tag"}, {"4x05_info", CmdEM4x05Info, 0, "tag information EM4x05/EM4x69"}, {"4x05_read", CmdEM4x05Read, 0, "read word data from EM4x05/EM4x69"}, {"4x05_write", CmdEM4x05Write, 0, "write word data to EM4x05/EM4x69"}, + {"4x50_dump", CmdEM4x50Dump, 0, "dump EM4x50 tag"}, {"4x50_read", CmdEM4x50Read, 0, "read word data from EM4x50"}, {"4x50_write", CmdEM4x50Write, 0, "write word data to EM4x50"}, - {"4x50_dump", CmdEM4x50Dump, 0, "dump EM4x50 tag"}, {NULL, NULL, 0, NULL} }; diff --git a/client/cmdlffdx.c b/client/cmdlffdx.c index 6ca87ed6c..85b5f919a 100644 --- a/client/cmdlffdx.c +++ b/client/cmdlffdx.c @@ -396,11 +396,11 @@ int CmdFdxSim(const char *Cmd) { } static command_t CommandTable[] = { - {"help", CmdHelp, 1, "This help"}, - {"demod", CmdFdxDemod, 1, "Attempt to extract FDX-B ISO11784/85 data from the GraphBuffer"}, - {"read", CmdFdxRead, 0, "Attempt to read and extract FDX-B ISO11784/85 data"}, - {"clone", CmdFdxClone, 0, "Clone animal ID tag to T55x7 (or to q5/T5555)"}, - {"sim", CmdFdxSim, 0, "Animal ID tag simulator"}, + {"help", CmdHelp, 1, "this help"}, + {"demod", CmdFdxDemod,1, "demodulate a FDX-B ISO11784/85 tag from the GraphBuffer"}, + {"read", CmdFdxRead, 0, "attempt to read and extract tag data"}, + {"clone", CmdFdxClone,0, "clone animal ID tag to T55x7 (or to q5/T5555)"}, + {"sim", CmdFdxSim, 0, "simulate Animal ID tag"}, {NULL, NULL, 0, NULL} }; diff --git a/client/cmdlfguard.c b/client/cmdlfguard.c index 5f7528ca1..ead8b7ec1 100644 --- a/client/cmdlfguard.c +++ b/client/cmdlfguard.c @@ -16,13 +16,13 @@ int usage_lf_guard_clone(void){ PrintAndLog("The facility-code is 8-bit and the card number is 16-bit. Larger values are truncated. "); PrintAndLog("Currently work only on 26bit"); PrintAndLog(""); - PrintAndLog("Usage: lf guard clone "); + PrintAndLog("Usage: lf gprox clone [h] "); PrintAndLog("Options :"); PrintAndLog(" : format length 26|32|36|40"); PrintAndLog(" : 8-bit value facility code"); PrintAndLog(" : 16-bit value card number"); PrintAndLog(""); - PrintAndLog("Sample : lf guard clone 26 123 11223"); + PrintAndLog("Sample : lf gprox clone 26 123 11223"); return 0; } @@ -32,13 +32,13 @@ int usage_lf_guard_sim(void) { PrintAndLog("The facility-code is 8-bit and the card number is 16-bit. Larger values are truncated."); PrintAndLog("Currently work only on 26bit"); PrintAndLog(""); - PrintAndLog("Usage: lf guard sim "); + PrintAndLog("Usage: lf gprox sim [h] "); PrintAndLog("Options :"); PrintAndLog(" : format length 26|32|36|40"); PrintAndLog(" : 8-bit value facility code"); PrintAndLog(" : 16-bit value card number"); PrintAndLog(""); - PrintAndLog("Sample : lf guard sim 26 123 11223"); + PrintAndLog("Sample : lf gprox sim 26 123 11223"); return 0; } @@ -332,11 +332,11 @@ int CmdGuardSim(const char *Cmd) { } static command_t CommandTable[] = { - {"help", CmdHelp, 1, "This help"}, - {"demod", CmdGuardDemod, 1, "Demodulate a G Prox II tag from the GraphBuffer"}, - {"read", CmdGuardRead, 0, "Attempt to read and extract tag data from the antenna"}, - {"clone", CmdGuardClone, 0, " clone Guardall tag"}, - {"sim", CmdGuardSim, 0, " simulate Guardall tag"}, + {"help", CmdHelp, 1, "this help"}, + {"demod", CmdGuardDemod, 1, "demodulate a G Prox II tag from the GraphBuffer"}, + {"read", CmdGuardRead, 0, "attempt to read and extract tag data from the antenna"}, + {"clone", CmdGuardClone, 0, "clone Guardall tag"}, + {"sim", CmdGuardSim, 0, "simulate Guardall tag"}, {NULL, NULL, 0, NULL} }; diff --git a/client/cmdlfhid.c b/client/cmdlfhid.c index a9f72ae34..3a910d5e9 100644 --- a/client/cmdlfhid.c +++ b/client/cmdlfhid.c @@ -558,13 +558,13 @@ int CmdHIDBrute(const char *Cmd){ } static command_t CommandTable[] = { - {"help", CmdHelp, 1, "This help"}, - {"demod", CmdHIDDemod, 0, "Demodulate HID Prox tag from the GraphBuffer"}, - {"read", CmdHIDRead, 0, "Attempt to read and extract tag data"}, - {"sim", CmdHIDSim, 0, "HID tag simulator"}, - {"clone", CmdHIDClone, 0, "Clone HID to T55x7"}, - {"wiegand", CmdHIDWiegand, 1, "Convert facility code/card number to Wiegand code"}, - {"brute", CmdHIDBrute, 0, "Bruteforce card number against reader"}, + {"help", CmdHelp, 1, "this help"}, + {"demod", CmdHIDDemod, 0, "demodulate HID Prox tag from the GraphBuffer"}, + {"read", CmdHIDRead, 0, "attempt to read and extract tag data"}, + {"clone", CmdHIDClone, 0, "clone HID to T55x7"}, + {"sim", CmdHIDSim, 0, "simulate HID tag"}, + {"wiegand", CmdHIDWiegand, 1, "convert facility code/card number to Wiegand code"}, + {"brute", CmdHIDBrute, 0, "bruteforce card number against reader"}, {NULL, NULL, 0, NULL} }; diff --git a/client/cmdlfhitag.c b/client/cmdlfhitag.c index 41f1e09b3..a5a0c00e4 100644 --- a/client/cmdlfhitag.c +++ b/client/cmdlfhitag.c @@ -382,8 +382,7 @@ int CmdLFHitagWP(const char *Cmd) { return 0; } -static command_t CommandTable[] = -{ +static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, {"list", CmdLFHitagList, 1, " List Hitag trace history"}, {"reader", CmdLFHitagReader, 1, "Act like a Hitag Reader"}, diff --git a/client/cmdlfindala.c b/client/cmdlfindala.c index 26406823b..002ae821e 100644 --- a/client/cmdlfindala.c +++ b/client/cmdlfindala.c @@ -387,12 +387,12 @@ int CmdIndalaClone(const char *Cmd) { } static command_t CommandTable[] = { - {"help", CmdHelp, 1, "This help"}, - {"demod", CmdIndalaDemod, 1, "Demodulate an indala tag (PSK1) from GraphBuffer"}, - {"altdemod", CmdIndalaDemodAlt, 1, "Alternative method to Demodulate samples for Indala 64 bit UID (option '224' for 224 bit)"}, - {"read", CmdIndalaRead, 0, "Read an Indala Prox tag from the antenna"}, - {"sim", CmdIndalaSim, 0, "Indala tag simulator"}, - {"clone", CmdIndalaClone, 0, "Clone Indala to T55x7"}, + {"help", CmdHelp, 1, "this help"}, + {"demod", CmdIndalaDemod, 1, "demodulate an indala tag (PSK1) from GraphBuffer"}, + {"altdemod", CmdIndalaDemodAlt, 1, "alternative method to Demodulate samples for Indala 64 bit UID (option '224' for 224 bit)"}, + {"read", CmdIndalaRead, 0, "read an Indala Prox tag from the antenna"}, + {"clone", CmdIndalaClone, 0, "clone Indala to T55x7"}, + {"sim", CmdIndalaSim, 0, "simulate Indala tag"}, {NULL, NULL, 0, NULL} }; diff --git a/client/cmdlfio.c b/client/cmdlfio.c index 57584485a..4addbf034 100644 --- a/client/cmdlfio.c +++ b/client/cmdlfio.c @@ -336,11 +336,11 @@ int CmdIOProxClone(const char *Cmd) { } static command_t CommandTable[] = { - {"help", CmdHelp, 1, "This help"}, - {"demod", CmdIOProxDemod, 1, "Demodulate an IOProx tag from the GraphBuffer"}, - {"read", CmdIOProxRead, 1, "Attempt to read and extract tag data"}, - {"sim", CmdIOProxSim, 0, "IOProx tag simulator"}, - {"clone", CmdIOProxClone, 0, "Clone IOProx to T55x7"}, + {"help", CmdHelp, 1, "this help"}, + {"demod", CmdIOProxDemod, 1, "demodulate an IOProx tag from the GraphBuffer"}, + {"read", CmdIOProxRead, 1, "attempt to read and extract tag data"}, + {"clone", CmdIOProxClone, 0, "clone IOProx to T55x7"}, + {"sim", CmdIOProxSim, 0, "simulate IOProx tag"}, {NULL, NULL, 0, NULL} }; diff --git a/client/cmdlfnedap.c b/client/cmdlfnedap.c index f87f063d0..fa74a9c8a 100644 --- a/client/cmdlfnedap.c +++ b/client/cmdlfnedap.c @@ -68,10 +68,6 @@ int GetNedapBits(uint32_t cn, uint8_t *nedapBits) { //----from this part, the UID in clear text, with a 1bit ZERO as separator between bytes. pre[64] = 0; - - // cardnumber (uid) - num_to_bytebits(cn, 24, pre+64); - pre[73] = 0; pre[82] = 0; pre[91] = 0; @@ -79,9 +75,29 @@ int GetNedapBits(uint32_t cn, uint8_t *nedapBits) { pre[109] = 0; pre[118] = 0; - // add paritybits (bitsource, dest, sourcelen, paritylen, parityType (odd, even,) - addParity(pre+64, pre+64, 128, 8, 1); + // cardnumber (uid) + num_to_bytebits( (cn >> 0) & 0xFF, 8, pre+65); + num_to_bytebits( (cn >> 8) & 0xFF, 8, pre+74); + num_to_bytebits( (cn >> 16) & 0xFF, 8, pre+83); + // two ? + num_to_bytebits( 0, 8, pre+92); + num_to_bytebits( 0, 8, pre+101); + + // chksum + num_to_bytebits( (0 >> 0) & 0xFF, 8, pre+110); + num_to_bytebits( (0 >> 8) & 0xFF, 8, pre+119); + + + // add paritybits (bitsource, dest, sourcelen, paritylen, parityType (odd, even,) + addParity(pre, pre+64, 64, 8, 1); + addParity(pre+64, pre+64, 64, 8, 1); + + pre[63] = GetParity( DemodBuffer, EVEN, 63); + pre[127] = GetParity( DemodBuffer+64, EVEN, 63); + + + memcpy(nedapBits, pre, 128); //1111111110001011010000010110100011001001000010110101001101011001000110011010010000000000100001110001001000000001000101011100111 return 1; } @@ -97,7 +113,7 @@ int GetNedapBits(uint32_t cn, uint8_t *nedapBits) { int CmdLFNedapDemod(const char *Cmd) { //raw ask demod no start bit finding just get binary from wave - if (!ASKbiphaseDemod("0 64 0 0", false)) { + if (!ASKbiphaseDemod("0 64 1 0", false)) { if (g_debugMode) PrintAndLog("DEBUG: Error - Nedap ASKbiphaseDemod failed"); return 0; } @@ -277,23 +293,24 @@ int CmdLFNedapClone(const char *Cmd) { int CmdLFNedapSim(const char *Cmd) { + uint32_t cardnumber = 0, cn = 0; + char cmdp = param_getchar(Cmd, 0); if (strlen(Cmd) == 0 || cmdp == 'h' || cmdp == 'H') return usage_lf_nedap_sim(); - uint32_t cardnumber = 0, cn = 0; + if (sscanf(Cmd, "%u", &cn ) != 1) return usage_lf_nedap_sim(); + + cardnumber = (cn & 0x00FFFFFF); uint8_t bs[128]; size_t size = sizeof(bs); memset(bs, 0x00, size); // NEDAP, Biphase = 2, clock 64, inverted, (DIPhase == inverted BIphase - uint8_t encoding = 2, separator = 0, clk=64, invert=1; + uint8_t clk = 64, encoding = 2, separator = 0, invert = 1; uint16_t arg1, arg2; arg1 = clk << 8 | encoding; arg2 = invert << 8 | separator; - - if (sscanf(Cmd, "%u", &cn ) != 1) return usage_lf_nedap_sim(); - cardnumber = (cn & 0x00FFFFFF); if ( !GetNedapBits(cardnumber, bs)) { PrintAndLog("Error with tag bitstream generation."); @@ -357,12 +374,12 @@ int CmdLFNedapChk(const char *Cmd){ } static command_t CommandTable[] = { - {"help", CmdHelp, 1, "This help"}, - {"demod", CmdLFNedapDemod,0, "Demodulate an Nedap tag from the GraphBuffer"}, - {"read", CmdLFNedapRead, 0, "Attempt to read and extract tag data"}, + {"help", CmdHelp, 1, "this help"}, + {"demod", CmdLFNedapDemod,0, "demodulate an Nedap tag from the GraphBuffer"}, + {"read", CmdLFNedapRead, 0, "attempt to read and extract tag data"}, // {"clone", CmdLFNedapClone,0, " clone nedap tag"}, - {"sim", CmdLFNedapSim, 0, " simulate nedap tag"}, - {"chk", CmdLFNedapChk, 1, "Calculate Nedap Checksum "}, + {"sim", CmdLFNedapSim, 0, "simulate nedap tag"}, + {"chk", CmdLFNedapChk, 1, "calculate Nedap Checksum "}, {NULL, NULL, 0, NULL} }; diff --git a/client/cmdlfnoralsy.c b/client/cmdlfnoralsy.c index 8811d65e0..e16e18bbd 100644 --- a/client/cmdlfnoralsy.c +++ b/client/cmdlfnoralsy.c @@ -264,8 +264,8 @@ static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, {"demod", CmdNoralsyDemod,1, "Demodulate an Noralsy tag from the GraphBuffer"}, {"read", CmdNoralsyRead, 0, "Attempt to read and extract tag data from the antenna"}, - {"sim", CmdNoralsySim, 0, "Noralsy tag simulator"}, {"clone", CmdNoralsyClone,0, "clone Noralsy to T55x7"}, + {"sim", CmdNoralsySim, 0, "simulate Noralsy tag"}, {NULL, NULL, 0, NULL} }; diff --git a/client/cmdlfparadox.c b/client/cmdlfparadox.c index a11d230ea..0e0276c5c 100644 --- a/client/cmdlfparadox.c +++ b/client/cmdlfparadox.c @@ -121,6 +121,8 @@ static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, {"demod", CmdParadoxDemod, 1, "Demodulate a Paradox FSK tag from the GraphBuffer"}, {"read", CmdParadoxRead, 0, "Attempt to read and Extract tag data from the antenna"}, +// {"clone", CmdParadoxClone,0, "clone paradox tag"}, +// {"sim", CmdParadoxSim, 0, "simulate paradox tag"}, {NULL, NULL, 0, NULL} }; diff --git a/client/cmdlfpresco.c b/client/cmdlfpresco.c index 751e94877..a6073b3ed 100644 --- a/client/cmdlfpresco.c +++ b/client/cmdlfpresco.c @@ -12,8 +12,9 @@ static int CmdHelp(const char *Cmd); int usage_lf_presco_clone(void){ PrintAndLog("clone a Presco tag to a T55x7 tag."); - PrintAndLog("Usage: lf presco clone d H "); + PrintAndLog("Usage: lf presco clone [h] d H "); PrintAndLog("Options :"); + PrintAndLog(" h : this help"); PrintAndLog(" d : 9 digit presco card ID"); PrintAndLog(" H : 8 digit hex card number"); PrintAndLog(" : specify write to Q5 (t5555 instead of t55x7)"); @@ -27,8 +28,9 @@ int usage_lf_presco_sim(void) { PrintAndLog("Simulation runs until the button is pressed or another USB command is issued."); PrintAndLog("Per presco format, the card number is 9 digit number and can contain *# chars. Larger values are truncated."); PrintAndLog(""); - PrintAndLog("Usage: lf presco sim d or H "); + PrintAndLog("Usage: lf presco sim [h] d or H "); PrintAndLog("Options :"); + PrintAndLog(" h : this help"); PrintAndLog(" d : 9 digit presco card number"); PrintAndLog(" H : 8 digit hex card number"); PrintAndLog(""); @@ -249,8 +251,8 @@ int CmdPrescoSim(const char *Cmd) { static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, {"read", CmdPrescoRead, 0, "Attempt to read and Extract tag data"}, - {"clone", CmdPrescoClone, 0, "d <9 digit ID> or h [Q5] clone presco tag"}, - {"sim", CmdPrescoSim, 0, "d <9 digit ID> or h simulate presco tag"}, + {"clone", CmdPrescoClone, 0, "clone presco tag"}, + {"sim", CmdPrescoSim, 0, "simulate presco tag"}, {NULL, NULL, 0, NULL} }; diff --git a/client/cmdlfpyramid.c b/client/cmdlfpyramid.c index 06a703fb7..d4ac19d27 100644 --- a/client/cmdlfpyramid.c +++ b/client/cmdlfpyramid.c @@ -16,8 +16,9 @@ int usage_lf_pyramid_clone(void){ PrintAndLog("The facility-code is 8-bit and the card number is 16-bit. Larger values are truncated. "); PrintAndLog("Currently only works on 26bit"); PrintAndLog(""); - PrintAndLog("Usage: lf pyramid clone "); + PrintAndLog("Usage: lf pyramid clone [h] "); PrintAndLog("Options :"); + PrintAndLog(" h : this help"); PrintAndLog(" : 8-bit value facility code"); PrintAndLog(" : 16-bit value card number"); PrintAndLog(" Q5 : optional - clone to Q5 (T5555) instead of T55x7 chip"); @@ -32,8 +33,9 @@ int usage_lf_pyramid_sim(void) { PrintAndLog("The facility-code is 8-bit and the card number is 16-bit. Larger values are truncated."); PrintAndLog("Currently work only on 26bit"); PrintAndLog(""); - PrintAndLog("Usage: lf pyramid sim "); + PrintAndLog("Usage: lf pyramid sim [h] "); PrintAndLog("Options :"); + PrintAndLog(" h : this help"); PrintAndLog(" : 8-bit value facility code"); PrintAndLog(" : 16-bit value card number"); PrintAndLog(""); @@ -333,11 +335,11 @@ int CmdPyramidSim(const char *Cmd) { } static command_t CommandTable[] = { - {"help", CmdHelp, 1, "This help"}, - {"demod", CmdPyramidDemod,0, "Demodulate a Pyramid FSK tag from the GraphBuffer"}, - {"read", CmdPyramidRead, 0, "Attempt to read and extract tag data"}, - {"clone", CmdPyramidClone,0, " clone pyramid tag"}, - {"sim", CmdPyramidSim, 0, " simulate pyramid tag"}, + {"help", CmdHelp, 1, "this help"}, + {"demod", CmdPyramidDemod,0, "demodulate a Pyramid FSK tag from the GraphBuffer"}, + {"read", CmdPyramidRead, 0, "attempt to read and extract tag data"}, + {"clone", CmdPyramidClone,0, "clone pyramid tag"}, + {"sim", CmdPyramidSim, 0, "simulate pyramid tag"}, {NULL, NULL, 0, NULL} }; diff --git a/client/cmdlfsecurakey.c b/client/cmdlfsecurakey.c index 5f4ccbe4d..13bcfb992 100644 --- a/client/cmdlfsecurakey.c +++ b/client/cmdlfsecurakey.c @@ -117,6 +117,8 @@ static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, {"demod", CmdSecurakeyDemod,1, "Demodulate an Securakey tag from the GraphBuffer"}, {"read", CmdSecurakeyRead, 0, "Attempt to read and extract tag data from the antenna"}, + //{"clone", CmdSecurakeyClone,0, "clone Securakey tag"}, + //{"sim", CmdSecurakeydSim, 0, "simulate Securakey tag"}, {NULL, NULL, 0, NULL} };