From eb891c385e5b580dfafbe3f1ffbae41054adbdd9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 6 Mar 2016 07:56:44 +0100 Subject: [PATCH] ADD; added Marshmellow42 's fixes for indala and stuff. CHG: updated the CHANGELOG.md --- CHANGELOG.md | 10 +++++++++- README.md | 3 ++- client/Makefile | 11 +++++------ client/cmddata.c | 49 ++++++++++++++++++++++++------------------------ client/cmddata.h | 6 ++++++ client/cmdlf.h | 39 +++++++++++++++++++------------------- client/util.h | 5 ++--- 7 files changed, 68 insertions(+), 55 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b365dcf0..1539360e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,15 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Started to add Peter Fillmore's EMV fork into Iceman fork. ref: https://github.com/peterfillmore/proxmark3 (peter fillmore, iceman) - Added Travis-CI automatic build integration with GitHub fork. (iceman) - Updated the Reveng 1.30 sourcecode to 1.31 from Reveng projecthomepage (iceman) - + + - Added possibility to write direct to a Legic Prime Tag (MIM256/1024) without using values from the 'BigBuffer' -> 'hf legic writeRaw ' (icsom) + - Added possibility to decrease DCF values at address 0x05 & 0x06 on a Legic Prime Tag + DCF-value will be pulled from the BigBuffer (address 0x05 & 0x06) so you have to + load the data into the BigBuffer before with 'hf legic load ' & then + write the DCF-Values (both at once) with 'hf legic write 0x05 0x02' (icsom) + - Added script `legic.lua` for display and edit Data of Legic-Prime Tags (icsom) + - Added the experimental HITAG_S support (spenneb) + ### Added - Added a LF ASK Sequence Terminator detection option to the standard ask demod - and applied it to `lf search u`, `lf t55xx detect`, and `data rawdemod am s` (marshmellow) - `lf awid bruteforce ` - Simple bruteforce attack against a AWID reader. diff --git a/README.md b/README.md index 4e6920c9..2c02d0ef 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,8 @@ Among the stuff is * A Bruteforce for AWID 26, starting w a facilitycode then trying all 0xFFFF cardnumbers via simulation. To be used against a AWID Reader. * A Bruteforce for HID, starting w a facilitycode then trying all 0xFFFF cardnumbers via simulation. To be used against a HID Reader. * Blaposts Crapto1 v3.3 - + + * icsom's legic script and legic enhancements Give me a hint, and I'll see if I can't merge in the stuff you have. diff --git a/client/Makefile b/client/Makefile index 3345aa8b..135227e0 100644 --- a/client/Makefile +++ b/client/Makefile @@ -110,11 +110,14 @@ CMDSRCS = nonce2key/crapto1.c\ cmdlfem4x.c \ cmdlfhitag.c \ cmdlfti.c \ - cmdlfviking.c\ cmdparser.c \ cmdmain.c \ cmdlft55xx.c \ cmdlfpcf7931.c\ + cmdlfviking.c\ + cmdlfpresco.c\ + cmdlfpyramid.c\ + cmdlfguard.c\ pm3_binlib.c\ scripting.c\ cmdscript.c\ @@ -133,11 +136,7 @@ CMDSRCS = nonce2key/crapto1.c\ tea.c\ prng.c\ radixsort.c\ - bucketsort.c\ - cmdlfpresco.c\ - cmdlfpyramid.c\ - cmdlfguard.c - + bucketsort.c ZLIBSRCS = deflate.c adler32.c trees.c zutil.c inflate.c inffast.c inftrees.c ZLIB_FLAGS = -DZ_SOLO -DZ_PREFIX -DNO_GZIP -DZLIB_PM3_TUNED #-DDEBUG -Dverbose=1 diff --git a/client/cmddata.c b/client/cmddata.c index 967fa28f..902a6363 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -8,23 +8,22 @@ // Data and Graph commands //----------------------------------------------------------------------------- -#include -#include -#include -#include -#include "proxmark3.h" -#include "data.h" -#include "ui.h" -#include "graph.h" -#include "cmdparser.h" +#include // also included in util.h +#include // also included in util.h +#include // for CmdNorm INT_MIN && INT_MAX +#include "data.h" // also included in util.h +#include "cmddata.h" #include "util.h" #include "cmdmain.h" -#include "cmddata.h" -#include "lfdemod.h" -#include "usb_cmd.h" -#include "crc.h" -#include "crc16.h" -#include "loclass/cipherutils.h" +#include "proxmark3.h" +#include "ui.h" // for show graph controls +#include "graph.h" // for graph data +#include "cmdparser.h"// already included in cmdmain.h +#include "usb_cmd.h" // already included in cmdmain.h and proxmark3.h +#include "lfdemod.h" // for demod code +#include "crc.h" // for pyramid checksum maxim +#include "crc16.h" // for FDXB demod checksum +#include "loclass/cipherutils.h" // for decimating samples in getsamples uint8_t DemodBuffer[MAX_DEMOD_BUF_LEN]; uint8_t g_debugMode=0; @@ -1265,7 +1264,7 @@ int CmdFSKdemodAWID(const char *Cmd) //get binary from fsk wave int idx = AWIDdemodFSK(BitStream, &size); if (idx<=0){ - if (g_debugMode==1){ + if (g_debugMode){ if (idx == -1) PrintAndLog("DEBUG: Error - not enough samples"); else if (idx == -2) @@ -1303,7 +1302,7 @@ int CmdFSKdemodAWID(const char *Cmd) size = removeParity(BitStream, idx+8, 4, 1, 88); if (size != 66){ - if (g_debugMode==1) PrintAndLog("DEBUG: Error - at parity check-tag size does not match AWID format"); + if (g_debugMode) PrintAndLog("DEBUG: Error - at parity check-tag size does not match AWID format"); return 0; } // ok valid card found! @@ -1363,7 +1362,7 @@ int CmdFSKdemodPyramid(const char *Cmd) //get binary from fsk wave int idx = PyramiddemodFSK(BitStream, &size); if (idx < 0){ - if (g_debugMode==1){ + if (g_debugMode){ if (idx == -5) PrintAndLog("DEBUG: Error - not enough samples"); else if (idx == -1) @@ -1419,7 +1418,7 @@ int CmdFSKdemodPyramid(const char *Cmd) size = removeParity(BitStream, idx+8, 8, 1, 120); if (size != 105){ - if (g_debugMode==1) + if (g_debugMode) PrintAndLog("DEBUG: Error at parity check - tag size does not match Pyramid format, SIZE: %d, IDX: %d, hi3: %x",size, idx, rawHi3); return 0; } @@ -1637,21 +1636,21 @@ int CmdIndalaDecode(const char *Cmd) } if (!ans){ - if (g_debugMode==1) + if (g_debugMode) PrintAndLog("Error1: %d",ans); return 0; } uint8_t invert=0; size_t size = DemodBufferLen; - size_t startIdx = indala26decode(DemodBuffer, &size, &invert); - if (startIdx < 1 || size > 224) { - if (g_debugMode==1) + int startIdx = indala26decode(DemodBuffer, &size, &invert); + if (startIdx < 0 || size > 224) { + if (g_debugMode) PrintAndLog("Error2: %d",ans); return -1; } - setDemodBuf(DemodBuffer, size, startIdx); + setDemodBuf(DemodBuffer, size, (size_t)startIdx); if (invert) - if (g_debugMode==1) + if (g_debugMode) PrintAndLog("Had to invert bits"); PrintAndLog("BitLen: %d",DemodBufferLen); diff --git a/client/cmddata.h b/client/cmddata.h index 20bdbd2b..9b9f2da9 100644 --- a/client/cmddata.h +++ b/client/cmddata.h @@ -11,6 +11,12 @@ #ifndef CMDDATA_H__ #define CMDDATA_H__ +#include //size_t +#include //uint_32+ +#include //bool + +#include "cmdparser.h" // for command_t + command_t * CmdDataCommands(); int CmdData(const char *Cmd); diff --git a/client/cmdlf.h b/client/cmdlf.h index 21c79b42..1bb94162 100644 --- a/client/cmdlf.h +++ b/client/cmdlf.h @@ -15,26 +15,27 @@ #include #include #include "proxmark3.h" -#include "data.h" -#include "graph.h" -#include "ui.h" -#include "cmdparser.h" -#include "cmdmain.h" -#include "cmddata.h" -#include "util.h" -#include "cmdlfhid.h" -#include "cmdlfawid.h" -#include "cmdlfti.h" -#include "cmdlfem4x.h" -#include "cmdlfhitag.h" -#include "cmdlft55xx.h" -#include "cmdlfpcf7931.h" -#include "cmdlfio.h" #include "lfdemod.h" -#include "cmdlfviking.h" -#include "cmdlfpresco.h" -#include "cmdlfpyramid.h" -#include "cmdlfguard.h" + +#include "util.h" // for parsing cli command utils +#include "ui.h" // for show graph controls +#include "graph.h" // for graph data +#include "cmdparser.h" // for getting cli commands included in cmdmain.h +#include "cmdmain.h" // for sending cmds to device +#include "data.h" // for GetFromBigBuf +#include "cmddata.h" // for `lf search` +#include "cmdlfawid.h" // for awid menu +#include "cmdlfem4x.h" // for em4x menu +#include "cmdlfhid.h" // for hid menu +#include "cmdlfhitag.h" // for hitag menu +#include "cmdlfio.h" // for ioprox menu +#include "cmdlft55xx.h" // for t55xx menu +#include "cmdlfti.h" // for ti menu +#include "cmdlfpresco.h" // for presco menu +#include "cmdlfpcf7931.h"// for pcf7931 menu +#include "cmdlfpyramid.h"// for pyramid menu +#include "cmdlfviking.h" // for viking menu +#include "cmdlfguard.h" // for GuardAll menu int CmdLF(const char *Cmd); diff --git a/client/util.h b/client/util.h index 9c16ba5b..990a8444 100644 --- a/client/util.h +++ b/client/util.h @@ -9,13 +9,12 @@ //----------------------------------------------------------------------------- #include -#include -#include +#include //included in data.h #include #include #include #include -#include "data.h" +#include "data.h" //for FILE_PATH_SIZE #ifndef ROTR # define ROTR(x,n) (((uintmax_t)(x) >> (n)) | ((uintmax_t)(x) << ((sizeof(x) * 8) - (n)))) -- 2.39.5