diff --git a/armsrc/Makefile b/armsrc/Makefile index eb8158dd7..d03448293 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -75,10 +75,12 @@ else endif # Generic standalone Mode injection of source code + + SRC_STANDALONE = # WITH_STANDALONE_LF_ICERUN ifneq (,$(findstring WITH_STANDALONE_LF_ICERUN,$(APP_CFLAGS))) - SRC_STANDALONE = + SRC_STANDALONE = lf_icerun.c endif # WITH_STANDALONE_LF_SAMYRUN ifneq (,$(findstring WITH_STANDALONE_LF_SAMYRUN,$(APP_CFLAGS))) diff --git a/armsrc/Standalone/hf_bog.c b/armsrc/Standalone/hf_bog.c index 36e600392..151282f3a 100644 --- a/armsrc/Standalone/hf_bog.c +++ b/armsrc/Standalone/hf_bog.c @@ -281,6 +281,10 @@ void RAMFUNC SniffAndStore(uint8_t param) { } } +void ModInfo(void) { + DbpString(" HF 14a sniff standalone with ULC/ULEV1/NTAG auth storing in flashmem - aka BogitoRun (Bogito)"); +} + void RunMod() { StandAloneMode(); diff --git a/armsrc/Standalone/hf_colin.c b/armsrc/Standalone/hf_colin.c index d8c1063e3..681223a02 100644 --- a/armsrc/Standalone/hf_colin.c +++ b/armsrc/Standalone/hf_colin.c @@ -195,6 +195,10 @@ void WriteTagToFlash(uint8_t index, size_t size) { return; } +void ModInfo(void) { + DbpString(" HF Mifare ultra fast sniff/sim/clone - aka VIGIKPWN (Colin Brigato)"); +} + void RunMod() { StandAloneMode(); FpgaDownloadAndGo(FPGA_BITSTREAM_HF); diff --git a/armsrc/Standalone/hf_mattyrun.c b/armsrc/Standalone/hf_mattyrun.c index de22d11f9..9bcfd63d3 100644 --- a/armsrc/Standalone/hf_mattyrun.c +++ b/armsrc/Standalone/hf_mattyrun.c @@ -191,6 +191,10 @@ static int saMifareChkKeys(uint8_t blockNo, uint8_t keyType, bool clearTrace, ui return -1; } +void ModInfo(void) { + DbpString(" HF Mifare sniff/clone - aka MattyRun (Matías A. Ré Medina)"); +} + void RunMod() { StandAloneMode(); Dbprintf(">> Matty mifare chk/dump/sim a.k.a MattyRun Started <<"); diff --git a/armsrc/Standalone/hf_young.c b/armsrc/Standalone/hf_young.c index 24e20dd7f..f09a5eaa0 100644 --- a/armsrc/Standalone/hf_young.c +++ b/armsrc/Standalone/hf_young.c @@ -18,6 +18,10 @@ typedef struct { } __attribute__((__packed__)) card_clone_t; +void ModInfo(void) { + DbpString(" HF Mifare sniff/simulation - (Craig Young)"); +} + void RunMod() { StandAloneMode(); Dbprintf(">> Craig Young Mifare sniff UID/clone uid 2 magic/sim a.k.a YoungRun Started <<"); diff --git a/armsrc/Standalone/lf_hidbrute.c b/armsrc/Standalone/lf_hidbrute.c index 8571c0ce1..fbd71a704 100644 --- a/armsrc/Standalone/lf_hidbrute.c +++ b/armsrc/Standalone/lf_hidbrute.c @@ -26,6 +26,10 @@ //----------------------------------------------------------------------------------- #include "lf_hidbrute.h" +void ModInfo(void) { + DbpString(" LF HID corporate 1000 bruteforce - aka Corporatebrute (Federico dotta & Maurizio Agazzini)"); +} + // samy's sniff and repeat routine for LF void RunMod() { StandAloneMode(); diff --git a/armsrc/Standalone/lf_icerun.c b/armsrc/Standalone/lf_icerun.c new file mode 100644 index 000000000..b9a87e397 --- /dev/null +++ b/armsrc/Standalone/lf_icerun.c @@ -0,0 +1,41 @@ +//----------------------------------------------------------------------------- +// Christian Herrmann, 2019 +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// main code for skeleton aka IceRun by Iceman +//----------------------------------------------------------------------------- +#include "lf_icerun.h" + +void ModInfo(void) { + DbpString(" LF skeleton mode - aka IceRun (iceman)"); +} + +// samy's sniff and repeat routine for LF +void RunMod() { + StandAloneMode(); + Dbprintf("[=] LF skeleton code a.k.a IceRun started"); + FpgaDownloadAndGo(FPGA_BITSTREAM_LF); + + // the main loop for your standalone mode + for (;;) { + WDT_HIT(); + + // exit from IceRun, send a usbcommand. + if (usb_poll_validate_length()) break; + + // Was our button held down or pressed? + int button_pressed = BUTTON_HELD(1000); + + Dbprintf("button %d", button_pressed); + + if ( button_pressed ) + break; + } + +out: + DbpString("[=] exiting"); + LEDsoff(); +} diff --git a/armsrc/Standalone/lf_icerun.h b/armsrc/Standalone/lf_icerun.h new file mode 100644 index 000000000..50427320a --- /dev/null +++ b/armsrc/Standalone/lf_icerun.h @@ -0,0 +1,17 @@ +//----------------------------------------------------------------------------- +// Iceman, Christian Herrmann, 2019 +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// StandAlone Mod +//----------------------------------------------------------------------------- + +#ifndef __LF_ICERUN_H +#define __LF_ICERUN_H + +#include "standalone.h" // standalone definitions +#include "apps.h" // debugstatements, lfops? + +#endif /* __LF_ICERUN_H */ diff --git a/armsrc/Standalone/lf_proxbrute.c b/armsrc/Standalone/lf_proxbrute.c index 178ce98fb..c9fce3ac6 100644 --- a/armsrc/Standalone/lf_proxbrute.c +++ b/armsrc/Standalone/lf_proxbrute.c @@ -11,6 +11,10 @@ //----------------------------------------------------------------------------- #include "lf_proxbrute.h" +void ModInfo(void) { + DbpString(" LF HID ProxII bruteforce - aka Proxbrute (Brad Antoniewicz)"); +} + // samy's sniff and repeat routine for LF void RunMod() { StandAloneMode(); diff --git a/armsrc/Standalone/lf_samyrun.c b/armsrc/Standalone/lf_samyrun.c index b4530fa2f..8b3ae5360 100644 --- a/armsrc/Standalone/lf_samyrun.c +++ b/armsrc/Standalone/lf_samyrun.c @@ -10,6 +10,10 @@ //----------------------------------------------------------------------------- #include "lf_samyrun.h" +void ModInfo(void) { + DbpString(" LF HID26 standalone - aka SamyRun (Samy Kamkar)"); +} + // samy's sniff and repeat routine for LF void RunMod() { StandAloneMode(); diff --git a/armsrc/Standalone/readme.md b/armsrc/Standalone/readme.md index 3d0005def..e5746e97b 100644 --- a/armsrc/Standalone/readme.md +++ b/armsrc/Standalone/readme.md @@ -3,6 +3,7 @@ This contains functionality for different StandAlone modes. The fullimage will be built given the correct compiler flags used. Build targets for these files are contained in `armsrc/Makefile`. If you want to implement a new standalone mode, you need to implement the methods provided in `standalone.h`. +Have a look at the skeleton standalone mode called IceRun, in the files `lf_icerun.c lf_icerun.h`. ## Implementing a standalone mode @@ -10,7 +11,11 @@ Each standalone mod needs to have its own compiler flag to be added in `armsrc\m The RunMod function is your "main" function when running. You need to check for Usb commands, in order to let the pm3 client break the standalone mode. See this basic skeleton of main function RunMod(). ```` -void RunMod() { +void ModInfo(void) { + DbpString(" HF good description of your mode - (my name)"); +} + +void RunMod(void) { // led show StandAloneMode(); FpgaDownloadAndGo(FPGA_BITSTREAM_LF); @@ -56,16 +61,12 @@ endif ``` ## Adding identification of your mode -Do please add a identification string in the function `printStandAloneModes` inside `armsrc\appmain.c` +Do please add a identification string in a function called `ModInfo` inside your source code file. This will enable an easy way to detect on client side which standalone mods has been installed on the device. -``` -#if defined(WITH_STANDALONE_HF_COLIN) - DbpString(" HF Mifare ultra fast sniff/sim/clone - aka VIGIKPWN (Colin Brigato)"); -#endif -```` +## Compiling your standalone mode Once all this is done, you and others can now easily compile different standalone modes by just selecting one of the standalone modes in `common/Makefile.hal`, e.g.: -```` +``` PLATFORM_DEFS += -DWITH_STANDALONE_HF_COLIN -```` +``` diff --git a/armsrc/Standalone/standalone.h b/armsrc/Standalone/standalone.h index 334bbc2b4..217c7b4cf 100644 --- a/armsrc/Standalone/standalone.h +++ b/armsrc/Standalone/standalone.h @@ -15,5 +15,6 @@ #include // PRIu64 void RunMod(); +void ModInfo(); #endif /* __STANDALONE_H */ diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 3a2f14d04..b6bba90d6 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -411,7 +411,15 @@ void SendStatus(void) { Dbprintf(" ToSendMax...............%d", ToSendMax); Dbprintf(" ToSendBit...............%d", ToSendBit); Dbprintf(" ToSend BUFFERSIZE.......%d", TOSEND_BUFFER_SIZE); - printStandAloneModes(); + DbpString("Installed StandAlone Mode"); + ModInfo(); + + //DbpString("Running "); + //Dbprintf(" Is Device attached to USB| %s", USB_ATTACHED() ? "Yes" : "No"); + //Dbprintf(" Is Device attached to FPC| %s", send_using_0 ? "Yes" : "No"); + //Dbprintf(" Is USB_reconnect value | %d", GetUSBreconnect() ); + //Dbprintf(" Is USB_configured value | %d", GetUSBconfigured() ); + cmd_send(CMD_ACK, 1, 0, 0, 0, 0); } @@ -427,48 +435,6 @@ void StandAloneMode(void) { SpinDown(50); SpinDelay(500); } -// detection of which Standalone Modes is installed -// (iceman) -void printStandAloneModes(void) { - - DbpString("Installed StandAlone Mode"); - -#if defined(WITH_STANDALONE_LF_ICERUN) - DbpString(" LF sniff/clone/simulation - aka IceRun (iceman)"); -#endif -#if defined(WITH_STANDALONE_HF_YOUNG) - DbpString(" HF Mifare sniff/simulation - (Craig Young)"); -#endif -#if defined(WITH_STANDALONE_LF_SAMYRUN) - DbpString(" LF HID26 standalone - aka SamyRun (Samy Kamkar)"); -#endif -#if defined(WITH_STANDALONE_LF_PROXBRUTE) - DbpString(" LF HID ProxII bruteforce - aka Proxbrute (Brad Antoniewicz)"); -#endif -#if defined(WITH_STANDALONE_LF_HIDBRUTE) - DbpString(" LF HID corporate 1000 bruteforce - aka Corporatebrute (Federico dotta & Maurizio Agazzini)"); -#endif -#if defined(WITH_STANDALONE_HF_MATTYRUN) - DbpString(" HF Mifare sniff/clone - aka MattyRun (Matías A. Ré Medina)"); -#endif -#if defined(WITH_STANDALONE_HF_COLIN) - DbpString(" HF Mifare ultra fast sniff/sim/clone - aka VIGIKPWN (Colin Brigato)"); -#endif -#if defined(WITH_STANDALONE_HF_BOG) - DbpString(" HF 14a sniff standalone with ULC/ULEV1/NTAG auth storing in flashmem - aka BogitoRun (Bogito)"); -#endif - - //DbpString("Running "); - //Dbprintf(" Is Device attached to USB| %s", USB_ATTACHED() ? "Yes" : "No"); - //Dbprintf(" Is Device attached to FPC| %s", 0 ? "Yes" : "No"); - //Dbprintf(" Is USB_reconnect value | %d", GetUSBreconnect() ); - //Dbprintf(" Is USB_configured value | %d", GetUSBconfigured() ); - - //.. add your own standalone detection based on with compiler directive you are used. - // don't "reuse" the already taken ones, this will make things easier when trying to detect the different modes - // 2017-08-06 must adapt the makefile and have individual compilation flags for all mods - // -} /* OBJECTIVE