2010-02-21 08:47:22 +08:00
//-----------------------------------------------------------------------------
// 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 commands
//-----------------------------------------------------------------------------
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
# include <stdio.h>
2010-02-07 08:31:32 +08:00
# include <stdlib.h>
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
# include <string.h>
2010-02-18 16:24:26 +08:00
# include <limits.h>
2012-12-05 07:39:18 +08:00
# include "proxmark3.h"
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
# include "cmdlf.h"
2016-03-07 14:01:40 +08:00
# include "lfdemod.h" // for psk2TOpsk1
2016-03-06 12:45:28 +08:00
# 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
2017-02-03 13:14:34 +08:00
# include "cmdlfcotag.h" // for COTAG menu
2017-03-07 21:48:16 +08:00
# include "cmdlfvisa2000.h" // for VISA2000 menu
2017-02-03 13:14:34 +08:00
2017-02-28 12:03:55 +08:00
bool g_lf_threshold_set = false ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
static int CmdHelp ( const char * Cmd ) ;
2015-10-17 22:48:54 +08:00
2016-08-05 01:51:37 +08:00
int usage_lf_cmdread ( void )
2015-10-17 22:48:54 +08:00
{
PrintAndLog ( " Usage: lf cmdread d <delay period> z <zero period> o <one period> c <cmdbytes> [H] " ) ;
PrintAndLog ( " Options: " ) ;
PrintAndLog ( " h This help " ) ;
PrintAndLog ( " L Low frequency (125 KHz) " ) ;
PrintAndLog ( " H High frequency (134 KHz) " ) ;
PrintAndLog ( " d <delay> delay OFF period " ) ;
PrintAndLog ( " z <zero> time period ZERO " ) ;
PrintAndLog ( " o <one> time period ONE " ) ;
PrintAndLog ( " c <cmd> Command bytes " ) ;
PrintAndLog ( " ************* All periods in microseconds " ) ;
PrintAndLog ( " Examples: " ) ;
PrintAndLog ( " lf cmdread d 80 z 100 o 200 c 11000 " ) ;
PrintAndLog ( " lf cmdread d 80 z 100 o 100 c 11000 H " ) ;
return 0 ;
}
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
/* send a command before reading */
int CmdLFCommandRead ( const char * Cmd )
{
2015-10-17 22:48:54 +08:00
static char dummy [ 3 ] = { 0x20 , 0x00 , 0x00 } ;
2015-03-26 02:24:36 +08:00
UsbCommand c = { CMD_MOD_THEN_ACQUIRE_RAW_ADC_SAMPLES_125K } ;
2017-03-07 03:07:02 +08:00
bool errors = false ;
2015-10-17 22:48:54 +08:00
//uint8_t divisor = 95; //125khz
uint8_t cmdp = 0 ;
while ( param_getchar ( Cmd , cmdp ) ! = 0x00 )
{
switch ( param_getchar ( Cmd , cmdp ) )
{
case ' h ' :
return usage_lf_cmdread ( ) ;
case ' H ' :
//divisor = 88;
dummy [ 1 ] = ' h ' ;
cmdp + + ;
break ;
case ' L ' :
cmdp + + ;
break ;
case ' c ' :
2016-05-10 16:33:30 +08:00
param_getstr ( Cmd , cmdp + 1 , ( char * ) & c . d . asBytes ) ;
2015-10-17 22:48:54 +08:00
cmdp + = 2 ;
break ;
case ' d ' :
c . arg [ 0 ] = param_get32ex ( Cmd , cmdp + 1 , 0 , 10 ) ;
cmdp + = 2 ;
break ;
case ' z ' :
c . arg [ 1 ] = param_get32ex ( Cmd , cmdp + 1 , 0 , 10 ) ;
cmdp + = 2 ;
break ;
case ' o ' :
c . arg [ 2 ] = param_get32ex ( Cmd , cmdp + 1 , 0 , 10 ) ;
cmdp + = 2 ;
break ;
default :
PrintAndLog ( " Unknown parameter '%c' " , param_getchar ( Cmd , cmdp ) ) ;
errors = 1 ;
break ;
}
if ( errors ) break ;
}
// No args
if ( cmdp = = 0 ) errors = 1 ;
//Validations
if ( errors ) return usage_lf_cmdread ( ) ;
// in case they specified 'H'
2015-03-26 02:24:36 +08:00
strcpy ( ( char * ) & c . d . asBytes + strlen ( ( char * ) c . d . asBytes ) , dummy ) ;
2015-10-17 22:48:54 +08:00
clearCommandBuffer ( ) ;
2015-03-26 02:24:36 +08:00
SendCommand ( & c ) ;
return 0 ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
}
int CmdFlexdemod ( const char * Cmd )
{
2015-03-26 02:24:36 +08:00
int i ;
for ( i = 0 ; i < GraphTraceLen ; + + i ) {
if ( GraphBuffer [ i ] < 0 ) {
GraphBuffer [ i ] = - 1 ;
} else {
GraphBuffer [ i ] = 1 ;
}
}
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
2015-11-12 13:27:24 +08:00
# define LONG_WAIT 100
2015-03-26 02:24:36 +08:00
int start ;
for ( start = 0 ; start < GraphTraceLen - LONG_WAIT ; start + + ) {
int first = GraphBuffer [ start ] ;
for ( i = start ; i < start + LONG_WAIT ; i + + ) {
if ( GraphBuffer [ i ] ! = first ) {
break ;
}
}
if ( i = = ( start + LONG_WAIT ) ) {
break ;
}
}
if ( start = = GraphTraceLen - LONG_WAIT ) {
PrintAndLog ( " nothing to wait for " ) ;
return 0 ;
}
GraphBuffer [ start ] = 2 ;
GraphBuffer [ start + 1 ] = - 2 ;
2015-01-05 22:51:27 +08:00
uint8_t bits [ 64 ] = { 0x00 } ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
2015-01-05 22:51:27 +08:00
int bit , sum ;
2015-03-26 02:24:36 +08:00
i = start ;
for ( bit = 0 ; bit < 64 ; bit + + ) {
2015-01-05 22:51:27 +08:00
sum = 0 ;
for ( int j = 0 ; j < 16 ; j + + ) {
2015-03-26 02:24:36 +08:00
sum + = GraphBuffer [ i + + ] ;
}
2015-01-05 22:51:27 +08:00
bits [ bit ] = ( sum > 0 ) ? 1 : 0 ;
2015-03-26 02:24:36 +08:00
PrintAndLog ( " bit %d sum %d " , bit , sum ) ;
}
for ( bit = 0 ; bit < 64 ; bit + + ) {
int j ;
int sum = 0 ;
for ( j = 0 ; j < 16 ; j + + ) {
sum + = GraphBuffer [ i + + ] ;
}
if ( sum > 0 & & bits [ bit ] ! = 1 ) {
PrintAndLog ( " oops1 at %d " , bit ) ;
}
if ( sum < 0 & & bits [ bit ] ! = 0 ) {
PrintAndLog ( " oops2 at %d " , bit ) ;
}
}
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
2015-01-05 22:51:27 +08:00
// HACK writing back to graphbuffer.
2015-03-26 02:24:36 +08:00
GraphTraceLen = 32 * 64 ;
i = 0 ;
int phase = 0 ;
for ( bit = 0 ; bit < 64 ; bit + + ) {
2015-01-05 22:51:27 +08:00
phase = ( bits [ bit ] = = 0 ) ? 0 : 1 ;
2015-03-26 02:24:36 +08:00
int j ;
for ( j = 0 ; j < 32 ; j + + ) {
GraphBuffer [ i + + ] = phase ;
phase = ! phase ;
}
}
RepaintGraphWindow ( ) ;
return 0 ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
}
2015-03-26 02:24:36 +08:00
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
int CmdIndalaDemod ( const char * Cmd )
{
2015-03-26 02:24:36 +08:00
// Usage: recover 64bit UID by default, specify "224" as arg to recover a 224bit UID
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
2015-03-26 02:24:36 +08:00
int state = - 1 ;
int count = 0 ;
int i , j ;
2015-01-05 22:51:27 +08:00
2015-03-26 02:24:36 +08:00
// worst case with GraphTraceLen=64000 is < 4096
// under normal conditions it's < 2048
2015-01-05 22:51:27 +08:00
2015-03-26 02:24:36 +08:00
uint8_t rawbits [ 4096 ] ;
int rawbit = 0 ;
int worst = 0 , worstPos = 0 ;
2015-11-12 13:27:24 +08:00
// PrintAndLog("Expecting a bit less than %d raw bits", GraphTraceLen / 32);
// loop through raw signal - since we know it is psk1 rf/32 fc/2 skip every other value (+=2)
2015-03-26 02:24:36 +08:00
for ( i = 0 ; i < GraphTraceLen - 1 ; i + = 2 ) {
count + = 1 ;
if ( ( GraphBuffer [ i ] > GraphBuffer [ i + 1 ] ) & & ( state ! = 1 ) ) {
2015-11-12 13:27:24 +08:00
// appears redundant - marshmellow
2015-03-26 02:24:36 +08:00
if ( state = = 0 ) {
for ( j = 0 ; j < count - 8 ; j + = 16 ) {
rawbits [ rawbit + + ] = 0 ;
}
if ( ( abs ( count - j ) ) > worst ) {
worst = abs ( count - j ) ;
worstPos = i ;
}
}
state = 1 ;
count = 0 ;
} else if ( ( GraphBuffer [ i ] < GraphBuffer [ i + 1 ] ) & & ( state ! = 0 ) ) {
2015-11-12 13:27:24 +08:00
//appears redundant
2015-03-26 02:24:36 +08:00
if ( state = = 1 ) {
for ( j = 0 ; j < count - 8 ; j + = 16 ) {
rawbits [ rawbit + + ] = 1 ;
}
if ( ( abs ( count - j ) ) > worst ) {
worst = abs ( count - j ) ;
worstPos = i ;
}
}
state = 0 ;
count = 0 ;
}
}
if ( rawbit > 0 ) {
PrintAndLog ( " Recovered %d raw bits, expected: %d " , rawbit , GraphTraceLen / 32 ) ;
PrintAndLog ( " worst metric (0=best..7=worst): %d at pos %d " , worst , worstPos ) ;
2015-01-05 22:51:27 +08:00
} else {
return 0 ;
}
2015-03-26 02:24:36 +08:00
// Finding the start of a UID
int uidlen , long_wait ;
if ( strcmp ( Cmd , " 224 " ) = = 0 ) {
uidlen = 224 ;
long_wait = 30 ;
} else {
uidlen = 64 ;
long_wait = 29 ;
}
int start ;
int first = 0 ;
for ( start = 0 ; start < = rawbit - uidlen ; start + + ) {
first = rawbits [ start ] ;
for ( i = start ; i < start + long_wait ; i + + ) {
if ( rawbits [ i ] ! = first ) {
break ;
}
}
if ( i = = ( start + long_wait ) ) {
break ;
}
}
if ( start = = rawbit - uidlen + 1 ) {
PrintAndLog ( " nothing to wait for " ) ;
return 0 ;
}
// Inverting signal if needed
if ( first = = 1 ) {
for ( i = start ; i < rawbit ; i + + ) {
rawbits [ i ] = ! rawbits [ i ] ;
}
}
// Dumping UID
2015-01-05 22:51:27 +08:00
uint8_t bits [ 224 ] = { 0x00 } ;
char showbits [ 225 ] = { 0x00 } ;
2015-03-26 02:24:36 +08:00
int bit ;
i = start ;
int times = 0 ;
if ( uidlen > rawbit ) {
PrintAndLog ( " Warning: not enough raw bits to get a full UID " ) ;
for ( bit = 0 ; bit < rawbit ; bit + + ) {
bits [ bit ] = rawbits [ i + + ] ;
// As we cannot know the parity, let's use "." and "/"
showbits [ bit ] = ' . ' + bits [ bit ] ;
}
showbits [ bit + 1 ] = ' \0 ' ;
PrintAndLog ( " Partial UID=%s " , showbits ) ;
return 0 ;
} else {
for ( bit = 0 ; bit < uidlen ; bit + + ) {
bits [ bit ] = rawbits [ i + + ] ;
showbits [ bit ] = ' 0 ' + bits [ bit ] ;
}
times = 1 ;
}
2015-01-05 22:51:27 +08:00
2015-03-26 02:24:36 +08:00
//convert UID to HEX
uint32_t uid1 , uid2 , uid3 , uid4 , uid5 , uid6 , uid7 ;
int idx ;
2015-01-05 22:51:27 +08:00
uid1 = uid2 = 0 ;
2015-03-26 02:24:36 +08:00
if ( uidlen = = 64 ) {
for ( idx = 0 ; idx < 64 ; idx + + ) {
if ( showbits [ idx ] = = ' 0 ' ) {
uid1 = ( uid1 < < 1 ) | ( uid2 > > 31 ) ;
uid2 = ( uid2 < < 1 ) | 0 ;
} else {
uid1 = ( uid1 < < 1 ) | ( uid2 > > 31 ) ;
uid2 = ( uid2 < < 1 ) | 1 ;
}
}
PrintAndLog ( " UID=%s (%x%08x) " , showbits , uid1 , uid2 ) ;
}
else {
2015-01-05 22:51:27 +08:00
uid3 = uid4 = uid5 = uid6 = uid7 = 0 ;
2015-03-26 02:24:36 +08:00
for ( idx = 0 ; idx < 224 ; idx + + ) {
uid1 = ( uid1 < < 1 ) | ( uid2 > > 31 ) ;
uid2 = ( uid2 < < 1 ) | ( uid3 > > 31 ) ;
uid3 = ( uid3 < < 1 ) | ( uid4 > > 31 ) ;
uid4 = ( uid4 < < 1 ) | ( uid5 > > 31 ) ;
uid5 = ( uid5 < < 1 ) | ( uid6 > > 31 ) ;
uid6 = ( uid6 < < 1 ) | ( uid7 > > 31 ) ;
2015-01-05 22:51:27 +08:00
if ( showbits [ idx ] = = ' 0 ' )
uid7 = ( uid7 < < 1 ) | 0 ;
else
uid7 = ( uid7 < < 1 ) | 1 ;
2015-03-26 02:24:36 +08:00
}
PrintAndLog ( " UID=%s (%x%08x%08x%08x%08x%08x%08x) " , showbits , uid1 , uid2 , uid3 , uid4 , uid5 , uid6 , uid7 ) ;
}
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
2015-03-26 02:24:36 +08:00
// Checking UID against next occurrences
int failed = 0 ;
2015-01-05 22:51:27 +08:00
for ( ; i + uidlen < = rawbit ; ) {
failed = 0 ;
2015-03-26 02:24:36 +08:00
for ( bit = 0 ; bit < uidlen ; bit + + ) {
if ( bits [ bit ] ! = rawbits [ i + + ] ) {
failed = 1 ;
break ;
}
}
if ( failed = = 1 ) {
break ;
}
times + = 1 ;
}
PrintAndLog ( " Occurrences: %d (expected %d) " , times , ( rawbit - start ) / uidlen ) ;
// Remodulating for tag cloning
2015-01-05 22:51:27 +08:00
// HACK: 2015-01-04 this will have an impact on our new way of seening lf commands (demod)
// since this changes graphbuffer data.
2015-03-26 02:24:36 +08:00
GraphTraceLen = 32 * uidlen ;
i = 0 ;
int phase = 0 ;
for ( bit = 0 ; bit < uidlen ; bit + + ) {
if ( bits [ bit ] = = 0 ) {
phase = 0 ;
} else {
phase = 1 ;
}
int j ;
for ( j = 0 ; j < 32 ; j + + ) {
GraphBuffer [ i + + ] = phase ;
phase = ! phase ;
}
}
RepaintGraphWindow ( ) ;
return 1 ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
}
2012-07-02 16:37:50 +08:00
int CmdIndalaClone ( const char * Cmd )
{
2015-03-26 02:24:36 +08:00
UsbCommand c ;
2015-01-05 22:51:27 +08:00
unsigned int uid1 , uid2 , uid3 , uid4 , uid5 , uid6 , uid7 ;
uid1 = uid2 = uid3 = uid4 = uid5 = uid6 = uid7 = 0 ;
2015-03-26 02:24:36 +08:00
int n = 0 , i = 0 ;
if ( strchr ( Cmd , ' l ' ) ! = 0 ) {
while ( sscanf ( & Cmd [ i + + ] , " %1x " , & n ) = = 1 ) {
uid1 = ( uid1 < < 4 ) | ( uid2 > > 28 ) ;
uid2 = ( uid2 < < 4 ) | ( uid3 > > 28 ) ;
uid3 = ( uid3 < < 4 ) | ( uid4 > > 28 ) ;
uid4 = ( uid4 < < 4 ) | ( uid5 > > 28 ) ;
uid5 = ( uid5 < < 4 ) | ( uid6 > > 28 ) ;
uid6 = ( uid6 < < 4 ) | ( uid7 > > 28 ) ;
uid7 = ( uid7 < < 4 ) | ( n & 0xf ) ;
}
PrintAndLog ( " Cloning 224bit tag with UID %x%08x%08x%08x%08x%08x%08x " , uid1 , uid2 , uid3 , uid4 , uid5 , uid6 , uid7 ) ;
c . cmd = CMD_INDALA_CLONE_TAG_L ;
c . d . asDwords [ 0 ] = uid1 ;
c . d . asDwords [ 1 ] = uid2 ;
c . d . asDwords [ 2 ] = uid3 ;
c . d . asDwords [ 3 ] = uid4 ;
c . d . asDwords [ 4 ] = uid5 ;
c . d . asDwords [ 5 ] = uid6 ;
c . d . asDwords [ 6 ] = uid7 ;
2015-01-05 22:51:27 +08:00
} else {
2015-03-26 02:24:36 +08:00
while ( sscanf ( & Cmd [ i + + ] , " %1x " , & n ) = = 1 ) {
uid1 = ( uid1 < < 4 ) | ( uid2 > > 28 ) ;
uid2 = ( uid2 < < 4 ) | ( n & 0xf ) ;
}
PrintAndLog ( " Cloning 64bit tag with UID %x%08x " , uid1 , uid2 ) ;
c . cmd = CMD_INDALA_CLONE_TAG ;
c . arg [ 0 ] = uid1 ;
c . arg [ 1 ] = uid2 ;
}
2015-11-22 13:00:32 +08:00
clearCommandBuffer ( ) ;
2015-03-26 02:24:36 +08:00
SendCommand ( & c ) ;
return 0 ;
2012-07-02 16:37:50 +08:00
}
2016-08-05 01:51:37 +08:00
int usage_lf_read ( void )
2015-01-29 07:57:22 +08:00
{
2015-01-31 06:03:44 +08:00
PrintAndLog ( " Usage: lf read " ) ;
2015-01-29 07:57:22 +08:00
PrintAndLog ( " Options: " ) ;
PrintAndLog ( " h This help " ) ;
2015-03-24 04:29:50 +08:00
PrintAndLog ( " s silent run no printout " ) ;
2015-01-31 06:03:44 +08:00
PrintAndLog ( " This function takes no arguments. " ) ;
PrintAndLog ( " Use 'lf config' to set parameters. " ) ;
return 0 ;
}
2016-08-05 01:51:37 +08:00
int usage_lf_snoop ( void )
2015-01-31 06:03:44 +08:00
{
PrintAndLog ( " Usage: lf snoop " ) ;
PrintAndLog ( " Options: " ) ;
PrintAndLog ( " h This help " ) ;
PrintAndLog ( " This function takes no arguments. " ) ;
PrintAndLog ( " Use 'lf config' to set parameters. " ) ;
return 0 ;
}
2016-08-05 01:51:37 +08:00
int usage_lf_config ( void )
2015-01-31 06:03:44 +08:00
{
PrintAndLog ( " Usage: lf config [H|<divisor>] [b <bps>] [d <decim>] [a 0|1] " ) ;
PrintAndLog ( " Options: " ) ;
PrintAndLog ( " h This help " ) ;
PrintAndLog ( " L Low frequency (125 KHz) " ) ;
PrintAndLog ( " H High frequency (134 KHz) " ) ;
PrintAndLog ( " q <divisor> Manually set divisor. 88-> 134KHz, 95-> 125 Hz " ) ;
PrintAndLog ( " b <bps> Sets resolution of bits per sample. Default (max): 8 " ) ;
PrintAndLog ( " d <decim> Sets decimation. A value of N saves only 1 in N samples. Default: 1 " ) ;
PrintAndLog ( " a [0|1] Averaging - if set, will average the stored sample value when decimating. Default: 1 " ) ;
2015-06-28 10:49:26 +08:00
PrintAndLog ( " t <threshold> Sets trigger threshold. 0 means no threshold (range: 0-128) " ) ;
2015-01-29 07:57:22 +08:00
PrintAndLog ( " Examples: " ) ;
2015-01-31 06:03:44 +08:00
PrintAndLog ( " lf config b 8 L " ) ;
2015-01-29 07:57:22 +08:00
PrintAndLog ( " Samples at 125KHz, 8bps. " ) ;
2015-01-31 06:03:44 +08:00
PrintAndLog ( " lf config H b 4 d 3 " ) ;
2015-01-29 07:57:22 +08:00
PrintAndLog ( " Samples at 134KHz, averages three samples into one, stored with " ) ;
PrintAndLog ( " a resolution of 4 bits per sample. " ) ;
2015-01-31 06:03:44 +08:00
PrintAndLog ( " lf read " ) ;
PrintAndLog ( " Performs a read (active field) " ) ;
PrintAndLog ( " lf snoop " ) ;
PrintAndLog ( " Performs a snoop (no active field) " ) ;
2015-01-29 07:57:22 +08:00
return 0 ;
}
2015-01-31 06:03:44 +08:00
int CmdLFSetConfig ( const char * Cmd )
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
{
2015-01-31 06:03:44 +08:00
uint8_t divisor = 0 ; //Frequency divisor
uint8_t bps = 0 ; // Bits per sample
uint8_t decimation = 0 ; //How many to keep
bool averaging = 1 ; // Defaults to true
2017-03-07 03:07:02 +08:00
bool errors = false ;
2015-01-31 06:03:44 +08:00
int trigger_threshold = - 1 ; //Means no change
uint8_t unsigned_trigg = 0 ;
2015-01-29 07:57:22 +08:00
uint8_t cmdp = 0 ;
2015-01-31 06:03:44 +08:00
while ( param_getchar ( Cmd , cmdp ) ! = 0x00 )
2015-01-29 07:57:22 +08:00
{
2015-01-31 06:03:44 +08:00
switch ( param_getchar ( Cmd , cmdp ) )
{
case ' h ' :
return usage_lf_config ( ) ;
case ' H ' :
divisor = 88 ;
cmdp + + ;
break ;
case ' L ' :
divisor = 95 ;
cmdp + + ;
break ;
case ' q ' :
errors | = param_getdec ( Cmd , cmdp + 1 , & divisor ) ;
cmdp + = 2 ;
break ;
case ' t ' :
errors | = param_getdec ( Cmd , cmdp + 1 , & unsigned_trigg ) ;
cmdp + = 2 ;
2017-02-27 10:44:40 +08:00
if ( ! errors ) {
trigger_threshold = unsigned_trigg ;
2017-02-28 12:03:55 +08:00
if ( trigger_threshold > 0 ) g_lf_threshold_set = true ;
2017-02-27 10:44:40 +08:00
}
2015-01-31 06:03:44 +08:00
break ;
case ' b ' :
errors | = param_getdec ( Cmd , cmdp + 1 , & bps ) ;
cmdp + = 2 ;
break ;
case ' d ' :
errors | = param_getdec ( Cmd , cmdp + 1 , & decimation ) ;
cmdp + = 2 ;
break ;
case ' a ' :
averaging = param_getchar ( Cmd , cmdp + 1 ) = = ' 1 ' ;
cmdp + = 2 ;
break ;
default :
PrintAndLog ( " Unknown parameter '%c' " , param_getchar ( Cmd , cmdp ) ) ;
errors = 1 ;
break ;
}
if ( errors ) break ;
2015-01-29 07:57:22 +08:00
}
2015-01-31 06:03:44 +08:00
if ( cmdp = = 0 )
2015-01-29 07:57:22 +08:00
{
2015-01-31 06:03:44 +08:00
errors = 1 ; // No args
2015-01-29 07:57:22 +08:00
}
2015-01-31 06:03:44 +08:00
2015-01-29 07:57:22 +08:00
//Validations
if ( errors )
{
2015-01-31 06:03:44 +08:00
return usage_lf_config ( ) ;
2015-01-29 07:57:22 +08:00
}
//Bps is limited to 8, so fits in lower half of arg1
2016-02-22 06:05:53 +08:00
if ( bps > > 4 ) bps = 8 ;
2015-01-29 07:57:22 +08:00
2015-01-31 06:03:44 +08:00
sample_config config = {
decimation , bps , averaging , divisor , trigger_threshold
} ;
//Averaging is a flag on high-bit of arg[1]
UsbCommand c = { CMD_SET_LF_SAMPLING_CONFIG } ;
memcpy ( c . d . asBytes , & config , sizeof ( sample_config ) ) ;
2015-11-22 13:00:32 +08:00
clearCommandBuffer ( ) ;
2015-01-31 06:03:44 +08:00
SendCommand ( & c ) ;
return 0 ;
}
2015-01-29 07:57:22 +08:00
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
int CmdLFRead ( const char * Cmd )
{
2017-02-27 10:44:40 +08:00
if ( offline ) return 0 ;
2015-03-24 04:29:50 +08:00
uint8_t cmdp = 0 ;
bool arg1 = false ;
if ( param_getchar ( Cmd , cmdp ) = = ' h ' )
2015-01-31 06:03:44 +08:00
{
return usage_lf_read ( ) ;
}
2015-03-24 04:29:50 +08:00
if ( param_getchar ( Cmd , cmdp ) = = ' s ' ) arg1 = true ; //suppress print
2015-01-29 07:57:22 +08:00
//And ship it to device
2015-03-24 04:29:50 +08:00
UsbCommand c = { CMD_ACQUIRE_RAW_ADC_SAMPLES_125K , { arg1 , 0 , 0 } } ;
2015-11-22 13:00:32 +08:00
clearCommandBuffer ( ) ;
2015-01-31 06:03:44 +08:00
SendCommand ( & c ) ;
2017-02-28 12:03:55 +08:00
if ( g_lf_threshold_set ) {
2017-02-27 10:44:40 +08:00
WaitForResponse ( CMD_ACK , NULL ) ;
} else {
if ( ! WaitForResponseTimeout ( CMD_ACK , NULL , 2500 ) ) {
PrintAndLog ( " command execution time out " ) ;
return 1 ;
}
}
2015-01-31 06:03:44 +08:00
return 0 ;
}
2015-01-29 07:57:22 +08:00
2015-01-31 06:03:44 +08:00
int CmdLFSnoop ( const char * Cmd )
{
uint8_t cmdp = 0 ;
if ( param_getchar ( Cmd , cmdp ) = = ' h ' )
{
return usage_lf_snoop ( ) ;
}
UsbCommand c = { CMD_LF_SNOOP_RAW_ADC_SAMPLES } ;
2015-11-22 13:00:32 +08:00
clearCommandBuffer ( ) ;
2015-01-29 07:57:22 +08:00
SendCommand ( & c ) ;
WaitForResponse ( CMD_ACK , NULL ) ;
return 0 ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
}
static void ChkBitstream ( const char * str )
{
2015-03-26 02:24:36 +08:00
int i ;
2015-03-07 01:28:54 +08:00
2015-03-26 02:24:36 +08:00
/* convert to bitstream if necessary */
2015-01-08 05:00:29 +08:00
for ( i = 0 ; i < ( int ) ( GraphTraceLen / 2 ) ; i + + ) {
if ( GraphBuffer [ i ] > 1 | | GraphBuffer [ i ] < 0 ) {
2015-03-26 02:24:36 +08:00
CmdGetBitStream ( " " ) ;
break ;
}
}
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
}
2015-04-05 12:58:57 +08:00
//Attempt to simulate any wave in buffer (one bit per output sample)
// converts GraphBuffer to bitstream (based on zero crossings) if needed.
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
int CmdLFSim ( const char * Cmd )
{
2015-03-26 02:24:36 +08:00
int i , j ;
static int gap ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
2015-03-26 02:24:36 +08:00
sscanf ( Cmd , " %i " , & gap ) ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
2015-04-05 12:58:57 +08:00
// convert to bitstream if necessary
2015-03-07 01:28:54 +08:00
2015-03-26 02:24:36 +08:00
ChkBitstream ( Cmd ) ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
2015-04-05 12:58:57 +08:00
//can send only 512 bits at a time (1 byte sent per bit...)
2015-03-26 02:24:36 +08:00
printf ( " Sending [%d bytes] " , GraphTraceLen ) ;
for ( i = 0 ; i < GraphTraceLen ; i + = USB_CMD_DATA_SIZE ) {
UsbCommand c = { CMD_DOWNLOADED_SIM_SAMPLES_125K , { i , 0 , 0 } } ;
2015-01-08 04:06:15 +08:00
2015-03-26 02:24:36 +08:00
for ( j = 0 ; j < USB_CMD_DATA_SIZE ; j + + ) {
c . d . asBytes [ j ] = GraphBuffer [ i + j ] ;
}
SendCommand ( & c ) ;
WaitForResponse ( CMD_ACK , NULL ) ;
printf ( " . " ) ;
}
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
2015-03-26 02:24:36 +08:00
printf ( " \n " ) ;
PrintAndLog ( " Starting to simulate " ) ;
UsbCommand c = { CMD_SIMULATE_TAG_125K , { GraphTraceLen , gap , 0 } } ;
2015-11-22 13:00:32 +08:00
clearCommandBuffer ( ) ;
2015-03-26 02:24:36 +08:00
SendCommand ( & c ) ;
return 0 ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
}
2015-02-20 10:35:34 +08:00
int usage_lf_simfsk ( void )
{
2015-03-26 02:24:36 +08:00
//print help
PrintAndLog ( " Usage: lf simfsk [c <clock>] [i] [H <fcHigh>] [L <fcLow>] [d <hexdata>] " ) ;
PrintAndLog ( " Options: " ) ;
PrintAndLog ( " h This help " ) ;
PrintAndLog ( " c <clock> Manually set clock - can autodetect if using DemodBuffer " ) ;
PrintAndLog ( " i invert data " ) ;
PrintAndLog ( " H <fcHigh> Manually set the larger Field Clock " ) ;
PrintAndLog ( " L <fcLow> Manually set the smaller Field Clock " ) ;
//PrintAndLog(" s TBD- -to enable a gap between playback repetitions - default: no gap");
PrintAndLog ( " d <hexdata> Data to sim as hex - omit to sim from DemodBuffer " ) ;
PrintAndLog ( " \n NOTE: if you set one clock manually set them all manually " ) ;
return 0 ;
2015-02-20 10:35:34 +08:00
}
int usage_lf_simask ( void )
{
2015-03-26 02:24:36 +08:00
//print help
PrintAndLog ( " Usage: lf simask [c <clock>] [i] [b|m|r] [s] [d <raw hex to sim>] " ) ;
PrintAndLog ( " Options: " ) ;
PrintAndLog ( " h This help " ) ;
PrintAndLog ( " c <clock> Manually set clock - can autodetect if using DemodBuffer " ) ;
PrintAndLog ( " i invert data " ) ;
PrintAndLog ( " b sim ask/biphase " ) ;
PrintAndLog ( " m sim ask/manchester - Default " ) ;
PrintAndLog ( " r sim ask/raw " ) ;
2016-03-07 14:01:40 +08:00
PrintAndLog ( " s add t55xx Sequence Terminator gap - default: no gaps (only manchester) " ) ;
2015-03-26 02:24:36 +08:00
PrintAndLog ( " d <hexdata> Data to sim as hex - omit to sim from DemodBuffer " ) ;
return 0 ;
2015-02-20 10:35:34 +08:00
}
2015-02-22 10:36:02 +08:00
int usage_lf_simpsk ( void )
{
2015-03-26 02:24:36 +08:00
//print help
PrintAndLog ( " Usage: lf simpsk [1|2|3] [c <clock>] [i] [r <carrier>] [d <raw hex to sim>] " ) ;
PrintAndLog ( " Options: " ) ;
PrintAndLog ( " h This help " ) ;
PrintAndLog ( " c <clock> Manually set clock - can autodetect if using DemodBuffer " ) ;
PrintAndLog ( " i invert data " ) ;
PrintAndLog ( " 1 set PSK1 (default) " ) ;
PrintAndLog ( " 2 set PSK2 " ) ;
PrintAndLog ( " 3 set PSK3 " ) ;
PrintAndLog ( " r <carrier> 2|4|8 are valid carriers: default = 2 " ) ;
PrintAndLog ( " d <hexdata> Data to sim as hex - omit to sim from DemodBuffer " ) ;
return 0 ;
2015-02-22 10:36:02 +08:00
}
2015-03-08 12:31:23 +08:00
2016-08-05 01:51:37 +08:00
// by marshmellow - sim fsk data given clock, fcHigh, fcLow, invert
2015-02-20 10:35:34 +08:00
// - allow pull data from DemodBuffer
int CmdLFfskSim ( const char * Cmd )
{
2015-04-05 12:58:57 +08:00
//might be able to autodetect FCs and clock from Graphbuffer if using demod buffer
// otherwise will need FChigh, FClow, Clock, and bitstream
2015-03-26 02:24:36 +08:00
uint8_t fcHigh = 0 , fcLow = 0 , clk = 0 ;
uint8_t invert = 0 ;
2017-03-07 03:07:02 +08:00
bool errors = false ;
2015-03-26 02:24:36 +08:00
char hexData [ 32 ] = { 0x00 } ; // store entered hex data
uint8_t data [ 255 ] = { 0x00 } ;
int dataLen = 0 ;
uint8_t cmdp = 0 ;
while ( param_getchar ( Cmd , cmdp ) ! = 0x00 )
{
switch ( param_getchar ( Cmd , cmdp ) )
{
case ' h ' :
return usage_lf_simfsk ( ) ;
case ' i ' :
invert = 1 ;
cmdp + + ;
break ;
case ' c ' :
errors | = param_getdec ( Cmd , cmdp + 1 , & clk ) ;
cmdp + = 2 ;
break ;
case ' H ' :
errors | = param_getdec ( Cmd , cmdp + 1 , & fcHigh ) ;
cmdp + = 2 ;
break ;
case ' L ' :
errors | = param_getdec ( Cmd , cmdp + 1 , & fcLow ) ;
cmdp + = 2 ;
break ;
//case 's':
// separator=1;
// cmdp++;
// break;
case ' d ' :
dataLen = param_getstr ( Cmd , cmdp + 1 , hexData ) ;
if ( dataLen = = 0 ) {
2017-03-07 03:07:02 +08:00
errors = true ;
2015-03-26 02:24:36 +08:00
} else {
dataLen = hextobinarray ( ( char * ) data , hexData ) ;
}
2017-03-07 03:07:02 +08:00
if ( dataLen = = 0 ) errors = true ;
2015-03-26 02:24:36 +08:00
if ( errors ) PrintAndLog ( " Error getting hex data " ) ;
cmdp + = 2 ;
break ;
default :
PrintAndLog ( " Unknown parameter '%c' " , param_getchar ( Cmd , cmdp ) ) ;
2017-03-07 03:07:02 +08:00
errors = true ;
2015-03-26 02:24:36 +08:00
break ;
}
if ( errors ) break ;
}
if ( cmdp = = 0 & & DemodBufferLen = = 0 )
{
2017-03-07 03:07:02 +08:00
errors = true ; // No args
2015-03-26 02:24:36 +08:00
}
//Validations
if ( errors )
{
return usage_lf_simfsk ( ) ;
}
if ( dataLen = = 0 ) { //using DemodBuffer
if ( clk = = 0 | | fcHigh = = 0 | | fcLow = = 0 ) { //manual settings must set them all
uint8_t ans = fskClocks ( & fcHigh , & fcLow , & clk , 0 ) ;
if ( ans = = 0 ) {
if ( ! fcHigh ) fcHigh = 10 ;
if ( ! fcLow ) fcLow = 8 ;
if ( ! clk ) clk = 50 ;
}
}
} else {
setDemodBuf ( data , dataLen , 0 ) ;
}
2015-04-05 12:58:57 +08:00
//default if not found
2015-03-26 02:24:36 +08:00
if ( clk = = 0 ) clk = 50 ;
if ( fcHigh = = 0 ) fcHigh = 10 ;
if ( fcLow = = 0 ) fcLow = 8 ;
uint16_t arg1 , arg2 ;
arg1 = fcHigh < < 8 | fcLow ;
arg2 = invert < < 8 | clk ;
size_t size = DemodBufferLen ;
if ( size > USB_CMD_DATA_SIZE ) {
PrintAndLog ( " DemodBuffer too long for current implementation - length: %d - max: %d " , size , USB_CMD_DATA_SIZE ) ;
size = USB_CMD_DATA_SIZE ;
}
UsbCommand c = { CMD_FSK_SIM_TAG , { arg1 , arg2 , size } } ;
memcpy ( c . d . asBytes , DemodBuffer , size ) ;
2015-11-22 13:00:32 +08:00
clearCommandBuffer ( ) ;
2015-03-26 02:24:36 +08:00
SendCommand ( & c ) ;
return 0 ;
2015-02-20 10:35:34 +08:00
}
// by marshmellow - sim ask data given clock, invert, manchester or raw, separator
// - allow pull data from DemodBuffer
int CmdLFaskSim ( const char * Cmd )
{
2015-03-26 02:24:36 +08:00
//autodetect clock from Graphbuffer if using demod buffer
2015-04-05 12:58:57 +08:00
// needs clock, invert, manchester/raw as m or r, separator as s, and bitstream
2015-03-26 02:24:36 +08:00
uint8_t encoding = 1 , separator = 0 ;
uint8_t clk = 0 , invert = 0 ;
2017-03-07 03:07:02 +08:00
bool errors = false ;
2015-03-26 02:24:36 +08:00
char hexData [ 32 ] = { 0x00 } ;
uint8_t data [ 255 ] = { 0x00 } ; // store entered hex data
int dataLen = 0 ;
uint8_t cmdp = 0 ;
while ( param_getchar ( Cmd , cmdp ) ! = 0x00 )
{
switch ( param_getchar ( Cmd , cmdp ) )
{
case ' h ' :
return usage_lf_simask ( ) ;
case ' i ' :
invert = 1 ;
cmdp + + ;
break ;
case ' c ' :
errors | = param_getdec ( Cmd , cmdp + 1 , & clk ) ;
cmdp + = 2 ;
break ;
case ' b ' :
encoding = 2 ; //biphase
cmdp + + ;
break ;
case ' m ' :
encoding = 1 ;
cmdp + + ;
break ;
case ' r ' :
encoding = 0 ;
cmdp + + ;
break ;
case ' s ' :
separator = 1 ;
cmdp + + ;
break ;
case ' d ' :
dataLen = param_getstr ( Cmd , cmdp + 1 , hexData ) ;
if ( dataLen = = 0 ) {
2017-03-07 03:07:02 +08:00
errors = true ;
2015-03-26 02:24:36 +08:00
} else {
dataLen = hextobinarray ( ( char * ) data , hexData ) ;
}
2017-03-07 03:07:02 +08:00
if ( dataLen = = 0 ) errors = true ;
2015-03-26 02:24:36 +08:00
if ( errors ) PrintAndLog ( " Error getting hex data, datalen: %d " , dataLen ) ;
cmdp + = 2 ;
break ;
default :
PrintAndLog ( " Unknown parameter '%c' " , param_getchar ( Cmd , cmdp ) ) ;
2017-03-07 03:07:02 +08:00
errors = true ;
2015-03-26 02:24:36 +08:00
break ;
}
if ( errors ) break ;
}
if ( cmdp = = 0 & & DemodBufferLen = = 0 )
{
2017-03-07 03:07:02 +08:00
errors = true ; // No args
2015-03-26 02:24:36 +08:00
}
//Validations
if ( errors )
{
return usage_lf_simask ( ) ;
}
if ( dataLen = = 0 ) { //using DemodBuffer
if ( clk = = 0 ) clk = GetAskClock ( " 0 " , false , false ) ;
} else {
setDemodBuf ( data , dataLen , 0 ) ;
}
if ( clk = = 0 ) clk = 64 ;
if ( encoding = = 0 ) clk = clk / 2 ; //askraw needs to double the clock speed
uint16_t arg1 , arg2 ;
size_t size = DemodBufferLen ;
arg1 = clk < < 8 | encoding ;
arg2 = invert < < 8 | separator ;
if ( size > USB_CMD_DATA_SIZE ) {
PrintAndLog ( " DemodBuffer too long for current implementation - length: %d - max: %d " , size , USB_CMD_DATA_SIZE ) ;
size = USB_CMD_DATA_SIZE ;
}
UsbCommand c = { CMD_ASK_SIM_TAG , { arg1 , arg2 , size } } ;
PrintAndLog ( " preparing to sim ask data: %d bits " , size ) ;
memcpy ( c . d . asBytes , DemodBuffer , size ) ;
2015-11-22 13:00:32 +08:00
clearCommandBuffer ( ) ;
2015-03-26 02:24:36 +08:00
SendCommand ( & c ) ;
return 0 ;
2015-02-20 10:35:34 +08:00
}
2015-02-22 10:36:02 +08:00
// by marshmellow - sim psk data given carrier, clock, invert
// - allow pull data from DemodBuffer or parameters
int CmdLFpskSim ( const char * Cmd )
{
2015-03-26 02:24:36 +08:00
//might be able to autodetect FC and clock from Graphbuffer if using demod buffer
//will need carrier, Clock, and bitstream
uint8_t carrier = 0 , clk = 0 ;
uint8_t invert = 0 ;
2017-03-07 03:07:02 +08:00
bool errors = false ;
2015-03-26 02:24:36 +08:00
char hexData [ 32 ] = { 0x00 } ; // store entered hex data
uint8_t data [ 255 ] = { 0x00 } ;
int dataLen = 0 ;
uint8_t cmdp = 0 ;
uint8_t pskType = 1 ;
while ( param_getchar ( Cmd , cmdp ) ! = 0x00 )
{
switch ( param_getchar ( Cmd , cmdp ) )
{
case ' h ' :
return usage_lf_simpsk ( ) ;
case ' i ' :
invert = 1 ;
cmdp + + ;
break ;
case ' c ' :
errors | = param_getdec ( Cmd , cmdp + 1 , & clk ) ;
cmdp + = 2 ;
break ;
case ' r ' :
errors | = param_getdec ( Cmd , cmdp + 1 , & carrier ) ;
cmdp + = 2 ;
break ;
case ' 1 ' :
pskType = 1 ;
cmdp + + ;
break ;
case ' 2 ' :
pskType = 2 ;
cmdp + + ;
break ;
case ' 3 ' :
pskType = 3 ;
cmdp + + ;
break ;
case ' d ' :
dataLen = param_getstr ( Cmd , cmdp + 1 , hexData ) ;
if ( dataLen = = 0 ) {
2017-03-07 03:07:02 +08:00
errors = true ;
2015-03-26 02:24:36 +08:00
} else {
dataLen = hextobinarray ( ( char * ) data , hexData ) ;
}
2017-03-07 03:07:02 +08:00
if ( dataLen = = 0 ) errors = true ;
2015-03-26 02:24:36 +08:00
if ( errors ) PrintAndLog ( " Error getting hex data " ) ;
cmdp + = 2 ;
break ;
default :
PrintAndLog ( " Unknown parameter '%c' " , param_getchar ( Cmd , cmdp ) ) ;
2017-03-07 03:07:02 +08:00
errors = true ;
2015-03-26 02:24:36 +08:00
break ;
}
if ( errors ) break ;
}
if ( cmdp = = 0 & & DemodBufferLen = = 0 )
{
2017-03-07 03:07:02 +08:00
errors = true ; // No args
2015-03-26 02:24:36 +08:00
}
//Validations
if ( errors )
{
return usage_lf_simpsk ( ) ;
}
if ( dataLen = = 0 ) { //using DemodBuffer
PrintAndLog ( " Getting Clocks " ) ;
2017-03-07 03:07:02 +08:00
if ( clk = = 0 ) clk = GetPskClock ( " " , false , false ) ;
2015-03-26 02:24:36 +08:00
PrintAndLog ( " clk: %d " , clk ) ;
2017-03-07 03:07:02 +08:00
if ( ! carrier ) carrier = GetPskCarrier ( " " , false , false ) ;
2015-03-26 02:24:36 +08:00
PrintAndLog ( " carrier: %d " , carrier ) ;
} else {
setDemodBuf ( data , dataLen , 0 ) ;
}
if ( clk < = 0 ) clk = 32 ;
if ( carrier = = 0 ) carrier = 2 ;
if ( pskType ! = 1 ) {
if ( pskType = = 2 ) {
//need to convert psk2 to psk1 data before sim
psk2TOpsk1 ( DemodBuffer , DemodBufferLen ) ;
} else {
PrintAndLog ( " Sorry, PSK3 not yet available " ) ;
}
}
uint16_t arg1 , arg2 ;
arg1 = clk < < 8 | carrier ;
arg2 = invert ;
size_t size = DemodBufferLen ;
if ( size > USB_CMD_DATA_SIZE ) {
PrintAndLog ( " DemodBuffer too long for current implementation - length: %d - max: %d " , size , USB_CMD_DATA_SIZE ) ;
size = USB_CMD_DATA_SIZE ;
}
UsbCommand c = { CMD_PSK_SIM_TAG , { arg1 , arg2 , size } } ;
PrintAndLog ( " DEBUG: Sending DemodBuffer Length: %d " , size ) ;
memcpy ( c . d . asBytes , DemodBuffer , size ) ;
2015-11-22 13:00:32 +08:00
clearCommandBuffer ( ) ;
2015-03-26 02:24:36 +08:00
SendCommand ( & c ) ;
return 0 ;
2015-02-22 10:36:02 +08:00
}
2015-02-20 10:35:34 +08:00
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
int CmdLFSimBidir ( const char * Cmd )
{
2015-03-26 02:24:36 +08:00
// Set ADC to twice the carrier for a slight supersampling
// HACK: not implemented in ARMSRC.
PrintAndLog ( " Not implemented yet. " ) ;
UsbCommand c = { CMD_LF_SIMULATE_BIDIR , { 47 , 384 , 0 } } ;
SendCommand ( & c ) ;
return 0 ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
}
int CmdVchDemod ( const char * Cmd )
{
2015-03-26 02:24:36 +08:00
// Is this the entire sync pattern, or does this also include some
// data bits that happen to be the same everywhere? That would be
// lovely to know.
static const int SyncPattern [ ] = {
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ,
} ;
// So first, we correlate for the sync pattern, and mark that.
int bestCorrel = 0 , bestPos = 0 ;
int i ;
// It does us no good to find the sync pattern, with fewer than
// 2048 samples after it...
for ( i = 0 ; i < ( GraphTraceLen - 2048 ) ; i + + ) {
int sum = 0 ;
int j ;
for ( j = 0 ; j < arraylen ( SyncPattern ) ; j + + ) {
sum + = GraphBuffer [ i + j ] * SyncPattern [ j ] ;
}
if ( sum > bestCorrel ) {
bestCorrel = sum ;
bestPos = i ;
}
}
PrintAndLog ( " best sync at %d [metric %d] " , bestPos , bestCorrel ) ;
char bits [ 257 ] ;
bits [ 256 ] = ' \0 ' ;
int worst = INT_MAX ;
int worstPos = 0 ;
for ( i = 0 ; i < 2048 ; i + = 8 ) {
int sum = 0 ;
int j ;
for ( j = 0 ; j < 8 ; j + + ) {
sum + = GraphBuffer [ bestPos + i + j ] ;
}
if ( sum < 0 ) {
bits [ i / 8 ] = ' . ' ;
} else {
bits [ i / 8 ] = ' 1 ' ;
}
if ( abs ( sum ) < worst ) {
worst = abs ( sum ) ;
worstPos = i ;
}
}
PrintAndLog ( " bits: " ) ;
PrintAndLog ( " %s " , bits ) ;
PrintAndLog ( " worst metric: %d at pos %d " , worst , worstPos ) ;
if ( strcmp ( Cmd , " clone " ) = = 0 ) {
GraphTraceLen = 0 ;
char * s ;
for ( s = bits ; * s ; s + + ) {
int j ;
for ( j = 0 ; j < 16 ; j + + ) {
GraphBuffer [ GraphTraceLen + + ] = ( * s = = ' 1 ' ) ? 1 : 0 ;
}
}
RepaintGraphWindow ( ) ;
}
return 0 ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
}
2017-02-22 00:46:13 +08:00
//by marshmellow
int CheckChipType ( char cmdp ) {
uint32_t wordData = 0 ;
//check for em4x05/em4x69 chips first
save_restoreGB ( 1 ) ;
if ( ( ! offline & & ( cmdp ! = ' 1 ' ) ) & & EM4x05Block0Test ( & wordData ) ) {
PrintAndLog ( " \n Valid EM4x05/EM4x69 Chip Found \n Try lf em 4x05... commands \n " ) ;
save_restoreGB ( 0 ) ;
return 1 ;
}
//TODO check for t55xx chip...
save_restoreGB ( 0 ) ;
return 1 ;
}
2014-12-31 05:08:33 +08:00
//by marshmellow
int CmdLFfind ( const char * Cmd )
{
2017-02-22 00:46:13 +08:00
uint32_t wordData = 0 ;
2015-03-26 02:24:36 +08:00
int ans = 0 ;
2017-02-03 13:14:34 +08:00
size_t minLength = 1000 ;
2015-03-26 02:24:36 +08:00
char cmdp = param_getchar ( Cmd , 0 ) ;
char testRaw = param_getchar ( Cmd , 1 ) ;
if ( strlen ( Cmd ) > 3 | | cmdp = = ' h ' | | cmdp = = ' H ' ) {
PrintAndLog ( " Usage: lf search <0|1> [u] " ) ;
PrintAndLog ( " <use data from Graphbuffer> , if not set, try reading data from tag. " ) ;
PrintAndLog ( " [Search for Unknown tags] , if not set, reads only known tags. " ) ;
PrintAndLog ( " " ) ;
PrintAndLog ( " sample: lf search = try reading data from tag & search for known tags " ) ;
PrintAndLog ( " : lf search 1 = use data from GraphBuffer & search for known tags " ) ;
PrintAndLog ( " : lf search u = try reading data from tag & search for known and unknown tags " ) ;
PrintAndLog ( " : lf search 1 u = use data from GraphBuffer & search for known and unknown tags " ) ;
return 0 ;
}
if ( ! offline & & ( cmdp ! = ' 1 ' ) ) {
2015-04-05 12:58:57 +08:00
CmdLFRead ( " s " ) ;
getSamples ( " 30000 " , false ) ;
2017-02-03 13:14:34 +08:00
} else if ( GraphTraceLen < minLength ) {
2015-03-26 02:24:36 +08:00
PrintAndLog ( " Data in Graphbuffer was too small. " ) ;
return 0 ;
}
if ( cmdp = = ' u ' | | cmdp = = ' U ' ) testRaw = ' u ' ;
PrintAndLog ( " NOTE: some demods output possible binary \n if it finds something that looks like a tag " ) ;
PrintAndLog ( " False Positives ARE possible \n " ) ;
PrintAndLog ( " \n Checking for known tags: \n " ) ;
2017-02-03 13:14:34 +08:00
size_t testLen = minLength ;
// only run if graphbuffer is just noise as it should be for hitag/cotag
if ( graphJustNoise ( GraphBuffer , testLen ) ) {
// only run these tests if we are in online mode
2017-02-22 00:46:13 +08:00
if ( ! offline & & ( cmdp ! = ' 1 ' ) ) {
// test for em4x05 in reader talk first mode.
if ( EM4x05Block0Test ( & wordData ) ) {
PrintAndLog ( " \n Valid EM4x05/EM4x69 Chip Found \n Use lf em 4x05readword/dump commands to read \n " ) ;
return 1 ;
}
2017-02-03 13:14:34 +08:00
ans = CmdLFHitagReader ( " 26 " ) ;
if ( ans = = 0 ) {
return 1 ;
}
ans = CmdCOTAGRead ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid COTAG ID Found! " ) ;
return 1 ;
}
}
return 0 ;
}
2015-03-26 02:24:36 +08:00
ans = CmdFSKdemodIO ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid IO Prox ID Found! " ) ;
2017-02-22 00:46:13 +08:00
return CheckChipType ( cmdp ) ;
2015-03-26 02:24:36 +08:00
}
ans = CmdFSKdemodPyramid ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid Pyramid ID Found! " ) ;
2017-02-22 00:46:13 +08:00
return CheckChipType ( cmdp ) ;
2015-03-26 02:24:36 +08:00
}
ans = CmdFSKdemodParadox ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid Paradox ID Found! " ) ;
2017-02-22 00:46:13 +08:00
return CheckChipType ( cmdp ) ;
2015-03-26 02:24:36 +08:00
}
ans = CmdFSKdemodAWID ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid AWID ID Found! " ) ;
2017-02-22 00:46:13 +08:00
return CheckChipType ( cmdp ) ;
2015-03-26 02:24:36 +08:00
}
ans = CmdFSKdemodHID ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid HID Prox ID Found! " ) ;
2017-02-22 00:46:13 +08:00
return CheckChipType ( cmdp ) ;
2015-03-26 02:24:36 +08:00
}
ans = CmdAskEM410xDemod ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid EM410x ID Found! " ) ;
2017-02-22 00:46:13 +08:00
return CheckChipType ( cmdp ) ;
2015-03-26 02:24:36 +08:00
}
2017-03-07 21:48:16 +08:00
ans = CmdVisa2kDemod ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid Visa2000 ID Found! " ) ;
return CheckChipType ( cmdp ) ;
}
2015-03-26 02:24:36 +08:00
ans = CmdG_Prox_II_Demod ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid G Prox II ID Found! " ) ;
2017-02-22 00:46:13 +08:00
return CheckChipType ( cmdp ) ;
2015-03-26 02:24:36 +08:00
}
2015-06-04 12:04:49 +08:00
ans = CmdFDXBdemodBI ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid FDX-B ID Found! " ) ;
2017-02-22 00:46:13 +08:00
return CheckChipType ( cmdp ) ;
2015-06-04 12:04:49 +08:00
}
2015-04-03 00:48:52 +08:00
ans = EM4x50Read ( " " , false ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid EM4x50 ID Found! " ) ;
return 1 ;
}
2015-04-09 02:19:03 +08:00
2015-11-10 12:09:26 +08:00
ans = CmdVikingDemod ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid Viking ID Found! " ) ;
2017-02-22 00:46:13 +08:00
return CheckChipType ( cmdp ) ;
2015-11-10 12:09:26 +08:00
}
2015-11-18 13:10:11 +08:00
ans = CmdIndalaDecode ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid Indala ID Found! " ) ;
2017-02-22 00:46:13 +08:00
return CheckChipType ( cmdp ) ;
2015-11-18 13:10:11 +08:00
}
2015-04-09 02:19:03 +08:00
ans = CmdPSKNexWatch ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " \n Valid NexWatch ID Found! " ) ;
2017-02-22 00:46:13 +08:00
return CheckChipType ( cmdp ) ;
2015-04-09 02:19:03 +08:00
}
2015-03-26 02:24:36 +08:00
PrintAndLog ( " \n No Known Tags Found! \n " ) ;
if ( testRaw = = ' u ' | | testRaw = = ' U ' ) {
2017-02-22 00:46:13 +08:00
ans = CheckChipType ( cmdp ) ;
//test unknown tag formats (raw mode)0
2015-03-26 02:24:36 +08:00
PrintAndLog ( " \n Checking for Unknown tags: \n " ) ;
2017-03-07 03:07:02 +08:00
ans = AutoCorrelate ( 4000 , false , false ) ;
2015-03-26 02:24:36 +08:00
if ( ans > 0 ) PrintAndLog ( " Possible Auto Correlation of %d repeating samples " , ans ) ;
2017-03-07 03:07:02 +08:00
ans = GetFskClock ( " " , false , false ) ;
2015-03-26 02:24:36 +08:00
if ( ans ! = 0 ) { //fsk
2017-03-07 03:07:02 +08:00
ans = FSKrawDemod ( " " , true ) ;
2015-03-26 02:24:36 +08:00
if ( ans > 0 ) {
PrintAndLog ( " \n Unknown FSK Modulated Tag Found! " ) ;
return 1 ;
}
}
2017-03-07 03:07:02 +08:00
bool st = true ;
ans = ASKDemod_ext ( " 0 0 0 " , true , false , 1 , & st ) ;
2015-03-26 02:24:36 +08:00
if ( ans > 0 ) {
PrintAndLog ( " \n Unknown ASK Modulated and Manchester encoded Tag Found! " ) ;
PrintAndLog ( " \n if it does not look right it could instead be ASK/Biphase - try 'data rawdemod ab' " ) ;
return 1 ;
}
ans = CmdPSK1rawDemod ( " " ) ;
if ( ans > 0 ) {
PrintAndLog ( " Possible unknown PSK1 Modulated Tag Found above! \n \n Could also be PSK2 - try 'data rawdemod p2' " ) ;
PrintAndLog ( " \n Could also be PSK3 - [currently not supported] " ) ;
PrintAndLog ( " \n Could also be NRZ - try 'data nrzrawdemod " ) ;
return 1 ;
}
PrintAndLog ( " \n No Data Found! \n " ) ;
}
return 0 ;
2014-12-31 05:08:33 +08:00
}
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
static command_t CommandTable [ ] =
{
2015-03-26 02:24:36 +08:00
{ " help " , CmdHelp , 1 , " This help " } ,
2015-11-27 10:05:46 +08:00
{ " awid " , CmdLFAWID , 1 , " { AWID RFIDs... } " } ,
2017-02-03 13:14:34 +08:00
{ " cotag " , CmdLFCOTAG , 1 , " { COTAG RFIDs... } " } ,
2017-02-22 01:00:09 +08:00
{ " em " , CmdLFEM4X , 1 , " { EM4X RFIDs... } " } ,
2015-11-27 10:05:46 +08:00
{ " hid " , CmdLFHID , 1 , " { HID RFIDs... } " } ,
2015-10-17 22:48:54 +08:00
{ " hitag " , CmdLFHitag , 1 , " { Hitag tags and transponders... } " } ,
2015-11-27 10:05:46 +08:00
{ " io " , CmdLFIO , 1 , " { ioProx tags... } " } ,
2017-03-07 21:48:16 +08:00
{ " presco " , CmdLFPresco , 1 , " { Presco RFIDs... } " } ,
2015-10-17 22:48:54 +08:00
{ " pcf7931 " , CmdLFPCF7931 , 1 , " { PCF7931 RFIDs... } " } ,
2016-03-06 12:45:28 +08:00
{ " pyramid " , CmdLFPyramid , 1 , " { Farpointe/Pyramid RFIDs... } " } ,
2015-11-27 10:05:46 +08:00
{ " t55xx " , CmdLFT55XX , 1 , " { T55xx RFIDs... } " } ,
{ " ti " , CmdLFTI , 1 , " { TI RFIDs... } " } ,
{ " viking " , CmdLFViking , 1 , " { Viking tags... } " } ,
2017-03-07 21:48:16 +08:00
{ " visa2000 " , CmdLFVisa2k , 1 , " { Visa2000 RFIDs...} " } ,
2015-10-17 22:48:54 +08:00
{ " cmdread " , CmdLFCommandRead , 0 , " <d period> <z period> <o period> <c command> ['H'] -- Modulate LF reader field to send command before read (all periods in microseconds) (option 'H' for 134) " } ,
2015-03-26 02:24:36 +08:00
{ " config " , CmdLFSetConfig , 0 , " Set config for LF sampling, bit/sample, decimation, frequency " } ,
{ " flexdemod " , CmdFlexdemod , 1 , " Demodulate samples for FlexPass " } ,
{ " indalademod " , CmdIndalaDemod , 1 , " ['224'] -- Demodulate samples for Indala 64 bit UID (option '224' for 224 bit) " } ,
{ " indalaclone " , CmdIndalaClone , 0 , " <UID> ['l']-- Clone Indala to T55x7 (tag must be in antenna)(UID in HEX)(option 'l' for 224 UID " } ,
{ " read " , CmdLFRead , 0 , " ['s' silent] Read 125/134 kHz LF ID-only tag. Do 'lf read h' for help " } ,
{ " search " , CmdLFfind , 1 , " [offline] ['u'] Read and Search for valid known tag (in offline mode it you can load first then search) - 'u' to search for unknown tags " } ,
{ " sim " , CmdLFSim , 0 , " [GAP] -- Simulate LF tag from buffer with optional GAP (in microseconds) " } ,
2015-07-21 01:41:40 +08:00
{ " simask " , CmdLFaskSim , 0 , " [clock] [invert <1|0>] [biphase/manchester/raw <'b'|'m'|'r'>] [msg separator 's'] [d <hexdata>] -- Simulate LF ASK tag from demodbuffer or input " } ,
2015-03-26 02:24:36 +08:00
{ " simfsk " , CmdLFfskSim , 0 , " [c <clock>] [i] [H <fcHigh>] [L <fcLow>] [d <hexdata>] -- Simulate LF FSK tag from demodbuffer or input " } ,
{ " simpsk " , CmdLFpskSim , 0 , " [1|2|3] [c <clock>] [i] [r <carrier>] [d <raw hex to sim>] -- Simulate LF PSK tag from demodbuffer or input " } ,
{ " simbidir " , CmdLFSimBidir , 0 , " Simulate LF tag (with bidirectional data transmission between reader and tag) " } ,
{ " snoop " , CmdLFSnoop , 0 , " ['l'|'h'|<divisor>] [trigger threshold]-- Snoop LF (l:125khz, h:134khz) " } ,
{ " vchdemod " , CmdVchDemod , 1 , " ['clone'] -- Demodulate samples for VeriChip " } ,
{ NULL , NULL , 0 , NULL }
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
} ;
int CmdLF ( const char * Cmd )
{
2015-03-26 02:24:36 +08:00
CmdsParse ( CommandTable , Cmd ) ;
return 0 ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
}
int CmdHelp ( const char * Cmd )
{
2015-03-26 02:24:36 +08:00
CmdsHelp ( CommandTable ) ;
return 0 ;
Client cleanup and restructuring. Stage 1...
Next Step is refactoring some of the giant functions which are
just copy/paste of some other ones with just a few line changes,
removing unnecessary 'goto' etc.
The MS Windows version is broken with this commit but will be fixed
soon. Everything can't be done all at once :P
The commands are now hierarchical, for example:
"hf 14a read" vs. "hf 14b read".
You can also request help:
"hf help", "data help", "hf 15 help" etc.
Indents are now space-based, not tab-based anymore. Hopefully
no one will be trolling about it, considering the suicide-prone work
being done here ;)
client/cmdhw.c, client/proxusb.c, client/cmdhw.h, client/proxusb.h,
client/cmdmain.c, client/cmdlfhid.c, client/cmdmain.h, client/cmdlfhid.h,
client/data.c, client/data.h, client/cmdhf.c, client/cmdlf.c,
client/cmdhf.h, client/cmdhf15.c, client/cmdhf14b.c, client/cmdlf.h,
client/cmdhf15.h, client/cmdhf14b.h, client/cmddata.c, client/cmddata.h,
client/ui.c, client/cmdparser.c, client/cmdlfti.c, client/ui.h,
client/cmdlfem4x.c, client/cmdparser.h, client/cmdlfti.h, client/cmdlfem4x.h,
client/graph.c, client/graph.h, client/cmdhf14a.c, client/cmdhf14a.h,
client/cmdhflegic.c, client/cmdhflegic.c: New files.
client/cli.c, client/flasher.c, client/snooper.c, client/proxmark3.c,
client/proxmark3.h, client/Makefile: Update accordingly.
client/flash.h, client/flash.c, client/proxgui.cpp: Cosmetic changes.
client/translate.h, client/command.c, client/gui.c,
client/usb.c, client/prox.h: Remove.
include/usb_cmd.h (CMD_ACQUIRE_RAW_ADC_SAMPLES_ISO_14443_SIM): Remove dead cmd.
common/crc16.h: New file.
common/crc16.c: Modify accordingly.
common/iso14443crc.h: New file.
common/iso14443_crc.c: Rename to
common/iso14443crc.c: and modify accordingly.
armsrc/lfops.c, armsrc/iso14443.c,
armsrc/iso14443a.c: include .h files from
the common directory instead of including the c files.
common/Makefile.common, armsrc/Makefile: Modify accordingly.
2010-02-04 09:27:07 +08:00
}