]> cvs.zerfleddert.de Git - proxmark3-svn/commitdiff
ADD: `lf cotag` - added first try at basic functionality to read samples from Cotag...
authoriceman1001 <iceman@iuse.se>
Fri, 27 Jan 2017 09:49:34 +0000 (10:49 +0100)
committericeman1001 <iceman@iuse.se>
Fri, 27 Jan 2017 09:49:34 +0000 (10:49 +0100)
armsrc/appmain.c
armsrc/apps.h
armsrc/lfops.c
client/Makefile
client/cmdlf.c
client/cmdlf.h
client/cmdlfcotag.c [new file with mode: 0644]
client/cmdlfcotag.h [new file with mode: 0644]
client/hid-flasher/usb_cmd.h
client/lualibs/commands.lua
include/usb_cmd.h

index d4b22465eb3d51670ac703cc11805f693d16bddd..905fd3200406d73776c0d4ef2c4f1cf45d91966f 100644 (file)
@@ -1009,6 +1009,9 @@ void UsbPacketReceived(uint8_t *packet, int len)
         case CMD_VIKING_CLONE_TAG:
                        CopyVikingtoT55xx(c->arg[0], c->arg[1], c->arg[2]);
             break;
+               case CMD_COTAG:
+                       Cotag();
+                       break;
 #endif
 
 #ifdef WITH_HITAG
index 6289223b04f808ac9a50ad36b0b5513653557fd7..6ea9d5ead4b4db527d4750827fceebe59abddab8 100644 (file)
@@ -98,6 +98,7 @@ void T55xxWakeUp(uint32_t Pwd);
 void TurnReadLFOn(uint32_t delay);
 void EM4xReadWord(uint8_t Address, uint32_t Pwd, uint8_t PwdMode);
 void EM4xWriteWord(uint32_t Data, uint8_t Address, uint32_t Pwd, uint8_t PwdMode);
+void Cotag();
 
 /// iso14443b.h
 void SimulateIso14443bTag(uint32_t pupi);
index 71d9ba95db49488dabf1c6c13f7ef0f6a6edc4ce..28927c33b1357dedd62f88603550ed7b0b391c1e 100644 (file)
@@ -1737,3 +1737,49 @@ void EM4xWriteWord(uint32_t Data, uint8_t Address, uint32_t Pwd, uint8_t PwdMode
        FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); // field off
        LED_D_OFF();
 }
+
+void Cotag() {
+
+#define WAIT2200       { FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); WaitUS(2200); }
+
+       LED_A_ON();
+       
+       //clear buffer now so it does not interfere with timing later
+       BigBuf_Clear_keep_EM();
+
+       // Set up FPGA, 132kHz to power up the tag
+       FpgaDownloadAndGo(FPGA_BITSTREAM_LF);
+       FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 89);
+       FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_ADC | FPGA_LF_ADC_READER_FIELD);
+
+       // Connect the A/D to the peak-detected low-frequency path.
+       SetAdcMuxFor(GPIO_MUXSEL_LOPKD);
+       
+       // 50ms for the resonant antenna to settle.
+       SpinDelay(50);
+       
+       // Now set up the SSC to get the ADC samples that are now streaming at us.
+       FpgaSetupSsc();
+       // start a 1.5ticks is 1us
+       StartTicks();
+       
+       //send start pulse
+       TurnReadLFOn(800);
+       WAIT2200
+       TurnReadLFOn(3600);
+       WAIT2200
+       TurnReadLFOn(800);
+       WAIT2200
+       TurnReadLFOn(3600);     
+       
+       // Turn field on to read the response
+       TurnReadLFOn(READ_GAP);
+       
+       // Acquisition
+       doT55x7Acquisition(20000);
+       
+       // Turn the field off
+       FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); // field off
+       cmd_send(CMD_ACK,0,0,0,0,0);    
+       LED_A_OFF();
+}
index 7da69d73b7e7323295c47c9e1905fe24a840d2af..0191ff25c52dd533c7c6fb5d8f84460948f305be 100644 (file)
@@ -143,6 +143,7 @@ CMDSRCS =   mifarehost.c \
                        cmdlfvisa2000.c \
                        cmdlfnoralsy.c \
                        cmdlffdx.c \
+                       cmdlfcotag.c \
                        pm3_binlib.c \
                        scripting.c \
                        cmdscript.c \
index 43131428df70bcc7e8d7df52263a3c23bf278d50..2daa46abd7a3563fb46f0a84a67f55be1a1c6716 100644 (file)
@@ -1192,6 +1192,7 @@ static command_t CommandTable[] =
        {"help",        CmdHelp,            1, "This help"},
        {"animal",      CmdLFFdx,           1, "{ Animal RFIDs... }"},
        {"awid",        CmdLFAWID,          1, "{ AWID RFIDs... }"},
+       {"cotag",       CmdLFCOTAG,         1, "{ COTAG RFIDs... }"},
        {"em4x",        CmdLFEM4X,          1, "{ EM4X RFIDs... }"},
        {"guard",       CmdLFGuard,         1, "{ Guardall RFIDs... }"},
        {"hid",         CmdLFHID,           1, "{ HID RFIDs... }"},
index f8f048a13e52e73b661bc82adc9679632a821a0a..802975328bf65e07b829555c6de26931c6ad99ea 100644 (file)
@@ -40,6 +40,7 @@
 #include "cmdlfvisa2000.h"  // for VISA2000 menu
 #include "cmdlfnoralsy.h"      // for NORALSY meny
 #include "cmdlffdx.h"          // for FDX-B meny
+#include "cmdlfcotag.h"                // for COTAG meny
 
 #define T55XX_WRITE_TIMEOUT    1500
 
diff --git a/client/cmdlfcotag.c b/client/cmdlfcotag.c
new file mode 100644 (file)
index 0000000..e200e83
--- /dev/null
@@ -0,0 +1,41 @@
+//-----------------------------------------------------------------------------
+// Authored by Iceman
+//
+// 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.
+//-----------------------------------------------------------------------------
+// Low frequency COTAG commands
+//-----------------------------------------------------------------------------
+#include "cmdlfcotag.h"  // COTAG function declarations
+static int CmdHelp(const char *Cmd);
+
+int CmdCOTAGRead(const char *Cmd) {
+
+//     if (Cmd[0] == 'h' || Cmd[0] == 'H') return usage_lf_cotag_read();
+
+       UsbCommand c = {CMD_COTAG, {0, 0, 0}};
+       clearCommandBuffer();
+       SendCommand(&c);
+
+       getSamples("20000", TRUE);
+       return CmdFSKdemodAWID(Cmd);
+}
+
+static command_t CommandTable[] = {
+       {"help",      CmdHelp,         1, "This help"},
+       {"read",      CmdCOTAGRead,     0, "Attempt to read and extract tag data"},
+       {NULL, NULL, 0, NULL}
+};
+
+int CmdLFCOTAG(const char *Cmd) {
+       clearCommandBuffer();
+       CmdsParse(CommandTable, Cmd);
+       return 0;
+}
+
+int CmdHelp(const char *Cmd) {
+       CmdsHelp(CommandTable);
+       return 0;
+}
diff --git a/client/cmdlfcotag.h b/client/cmdlfcotag.h
new file mode 100644 (file)
index 0000000..9bf7407
--- /dev/null
@@ -0,0 +1,22 @@
+//-----------------------------------------------------------------------------
+// Copyright (C) 2010 iZsh <izsh at fail0verflow.com>
+//
+// 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.
+//-----------------------------------------------------------------------------
+// Low frequency AWID commands
+//-----------------------------------------------------------------------------
+
+#ifndef CMDLFCOTAG_H__
+#define CMDLFCOTAG_H__
+
+#include "proxmark3.h"  // Definitions, USB controls, etc
+#include "cmddata.h"   // getSamples
+#include "cmdparser.h"  // CmdsParse, CmdsHelp
+#include "cmdmain.h"
+
+int CmdLFCOTAG(const char *Cmd);
+int CmdCOTAGRead(const char *Cmd);
+
+#endif
index 82e4cecbfc0391a4244af809a707b2cc3e033d46..4d0f5e8eafb6a2634e9058382f52d7dea2615937 100644 (file)
@@ -95,7 +95,8 @@ typedef struct {
 #define CMD_PSK_SIM_TAG                                                   0x0220
 #define CMD_AWID_DEMOD_FSK                                                0x0221
 #define CMD_VIKING_CLONE_TAG                                              0x0222
-
+#define CMD_T55XX_WAKEUP                                                     0x0224
+#define CMD_COTAG                                                                                                                0x0225
 
 /* CMD_SET_ADC_MUX: ext1 is 0 for lopkd, 1 for loraw, 2 for hipkd, 3 for hiraw */
 
index 2347ffe55d0fe5b3d9e453c8ab94120fddf4177c..7aaa17459d9fde0032ea21bc44f818848c640996 100644 (file)
@@ -62,6 +62,7 @@ local _commands = {
        CMD_AWID_DEMOD_FSK =                                                 0x0221,
        CMD_VIKING_CLONE_TAG =                                               0x0222,
        CMD_T55XX_WAKEUP =                                                       0x0224,
+       CMD_COTAG =                                                                                                                      0x0225,
        
        --/* CMD_SET_ADC_MUX: ext1 is 0 for lopkd, 1 for loraw, 2 for hipkd, 3 for hiraw */
 
index 53ac18e7a8c21bfcec585a811f3769109fc30a02..e312f93ac1c92d9f31bcb4770de02e0ad73150df 100644 (file)
@@ -105,6 +105,7 @@ typedef struct{
 #define CMD_AWID_DEMOD_FSK                                                0x0221
 #define CMD_VIKING_CLONE_TAG                                              0x0222
 #define CMD_T55XX_WAKEUP                                                     0x0224
+#define CMD_COTAG                                                                                                                0x0225
 
 /* CMD_SET_ADC_MUX: ext1 is 0 for lopkd, 1 for loraw, 2 for hipkd, 3 for hiraw */
 
Impressum, Datenschutz