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.
//-----------------------------------------------------------------------------
// Data and Graph 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>
# include <stdlib.h>
# include <string.h>
# 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 "data.h"
# include "ui.h"
# include "graph.h"
# include "cmdparser.h"
2014-06-11 14:42:37 +08:00
# include "util.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 "cmdmain.h"
# include "cmddata.h"
2014-12-29 10:29:33 +08:00
# include "lfdemod.h"
2015-01-06 22:20:36 +08:00
uint8_t DemodBuffer [ MAX_DEMOD_BUF_LEN ] ;
2015-01-21 06:28:51 +08:00
uint8_t g_debugMode ;
2015-01-06 22:20:36 +08:00
int DemodBufferLen ;
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-01-06 22:20:36 +08:00
//set the demod buffer with given array of binary (one bit per byte)
//by marshmellow
2015-01-21 06:28:51 +08:00
void setDemodBuf ( uint8_t * buff , size_t size , size_t startIdx )
2015-01-06 22:20:36 +08:00
{
2015-01-30 04:44:24 +08:00
if ( buff = = NULL )
return ;
if ( size > = MAX_DEMOD_BUF_LEN )
size = MAX_DEMOD_BUF_LEN ;
2015-01-21 06:28:51 +08:00
size_t i = 0 ;
for ( ; i < size ; i + + ) {
DemodBuffer [ i ] = buff [ startIdx + + ] ;
2015-01-07 12:29:45 +08:00
}
DemodBufferLen = size ;
return ;
2015-01-06 22:20:36 +08:00
}
2015-01-21 06:28:51 +08:00
int CmdSetDebugMode ( const char * Cmd )
{
int demod = 0 ;
sscanf ( Cmd , " %i " , & demod ) ;
g_debugMode = ( uint8_t ) demod ;
return 1 ;
}
2015-01-06 22:20:36 +08:00
//by marshmellow
void printDemodBuff ( )
{
2015-01-07 12:29:45 +08:00
uint32_t i = 0 ;
int bitLen = DemodBufferLen ;
if ( bitLen < 16 ) {
PrintAndLog ( " no bits found in demod buffer " ) ;
return ;
}
if ( bitLen > 512 ) bitLen = 512 ; //max output to 512 bits if we have more - should be plenty
2015-01-30 04:44:24 +08:00
2015-01-30 22:17:07 +08:00
// ensure equally divided by 16
bitLen & = 0xfff0 ;
2015-01-30 04:44:24 +08:00
2015-01-07 12:29:45 +08:00
for ( i = 0 ; i < = ( bitLen - 16 ) ; i + = 16 ) {
PrintAndLog ( " %i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i " ,
DemodBuffer [ i ] ,
DemodBuffer [ i + 1 ] ,
DemodBuffer [ i + 2 ] ,
DemodBuffer [ i + 3 ] ,
DemodBuffer [ i + 4 ] ,
DemodBuffer [ i + 5 ] ,
DemodBuffer [ i + 6 ] ,
DemodBuffer [ i + 7 ] ,
DemodBuffer [ i + 8 ] ,
DemodBuffer [ i + 9 ] ,
DemodBuffer [ i + 10 ] ,
DemodBuffer [ i + 11 ] ,
DemodBuffer [ i + 12 ] ,
DemodBuffer [ i + 13 ] ,
DemodBuffer [ i + 14 ] ,
DemodBuffer [ i + 15 ] ) ;
}
return ;
2015-01-06 22:20: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 CmdAmp ( const char * Cmd )
{
int i , rising , falling ;
int max = INT_MIN , min = INT_MAX ;
for ( i = 10 ; i < GraphTraceLen ; + + i ) {
if ( GraphBuffer [ i ] > max )
max = GraphBuffer [ i ] ;
if ( GraphBuffer [ i ] < min )
min = GraphBuffer [ i ] ;
}
if ( max ! = min ) {
rising = falling = 0 ;
for ( i = 0 ; i < GraphTraceLen ; + + i ) {
if ( GraphBuffer [ i + 1 ] < GraphBuffer [ i ] ) {
if ( rising ) {
GraphBuffer [ i ] = max ;
rising = 0 ;
}
falling = 1 ;
}
if ( GraphBuffer [ i + 1 ] > GraphBuffer [ i ] ) {
if ( falling ) {
GraphBuffer [ i ] = min ;
falling = 0 ;
}
rising = 1 ;
}
}
}
RepaintGraphWindow ( ) ;
return 0 ;
}
/*
* Generic command to demodulate ASK .
*
* Argument is convention : positive or negative ( High mod means zero
* or high mod means one )
*
* Updates the Graph trace with 0 / 1 values
*
* Arguments :
* c : 0 or 1
*/
2014-12-24 01:00:13 +08:00
//this method is dependant on all highs and lows to be the same(or clipped) this creates issues[marshmellow] it also ignores the clock
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 Cmdaskdemod ( const char * Cmd )
{
int i ;
int c , high = 0 , low = 0 ;
2015-01-07 12:29:45 +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
// TODO: complain if we do not give 2 arguments here !
// (AL - this doesn't make sense! we're only using one argument!!!)
sscanf ( Cmd , " %i " , & c ) ;
2015-01-07 12:29:45 +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
/* Detect high and lows and clock */
2015-01-07 12:29:45 +08:00
// (AL - clock???)
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
for ( i = 0 ; i < GraphTraceLen ; + + i )
{
if ( GraphBuffer [ i ] > high )
high = GraphBuffer [ i ] ;
else if ( GraphBuffer [ i ] < low )
low = GraphBuffer [ i ] ;
}
2014-12-29 09:33:32 +08:00
high = abs ( high * .75 ) ;
low = abs ( low * .75 ) ;
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
if ( c ! = 0 & & c ! = 1 ) {
PrintAndLog ( " Invalid argument: %s " , Cmd ) ;
return 0 ;
}
2014-12-20 01:14:27 +08:00
//prime loop
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
if ( GraphBuffer [ 0 ] > 0 ) {
GraphBuffer [ 0 ] = 1 - c ;
} else {
GraphBuffer [ 0 ] = c ;
}
for ( i = 1 ; i < GraphTraceLen ; + + i ) {
/* Transitions are detected at each peak
* Transitions are either :
* - we ' re low : transition if we hit a high
* - we ' re high : transition if we hit a low
* ( we need to do it this way because some tags keep high or
* low for long periods , others just reach the peak and go
* down )
*/
2014-12-20 01:39:41 +08:00
//[marhsmellow] change == to >= for high and <= for low for fuzz
if ( ( GraphBuffer [ i ] = = high ) & & ( GraphBuffer [ i - 1 ] = = c ) ) {
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
GraphBuffer [ i ] = 1 - c ;
2014-12-20 01:39:41 +08:00
} else if ( ( GraphBuffer [ i ] = = low ) & & ( GraphBuffer [ i - 1 ] = = ( 1 - c ) ) ) {
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
GraphBuffer [ i ] = c ;
} else {
/* No transition */
GraphBuffer [ i ] = GraphBuffer [ i - 1 ] ;
}
}
RepaintGraphWindow ( ) ;
return 0 ;
}
2014-12-31 05:08:33 +08:00
//by marshmellow
void printBitStream ( uint8_t BitStream [ ] , uint32_t bitLen )
{
2014-12-24 01:00:13 +08:00
uint32_t i = 0 ;
if ( bitLen < 16 ) {
PrintAndLog ( " Too few bits found: %d " , bitLen ) ;
return ;
}
if ( bitLen > 512 ) bitLen = 512 ;
2015-01-30 22:17:07 +08:00
// ensure equally divided by 16
bitLen & = 0xfff0 ;
2014-12-30 04:58:59 +08:00
for ( i = 0 ; i < = ( bitLen - 16 ) ; i + = 16 ) {
2014-12-24 01:00:13 +08:00
PrintAndLog ( " %i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i " ,
BitStream [ i ] ,
BitStream [ i + 1 ] ,
BitStream [ i + 2 ] ,
BitStream [ i + 3 ] ,
BitStream [ i + 4 ] ,
BitStream [ i + 5 ] ,
BitStream [ i + 6 ] ,
BitStream [ i + 7 ] ,
BitStream [ i + 8 ] ,
BitStream [ i + 9 ] ,
BitStream [ i + 10 ] ,
BitStream [ i + 11 ] ,
BitStream [ i + 12 ] ,
BitStream [ i + 13 ] ,
BitStream [ i + 14 ] ,
BitStream [ i + 15 ] ) ;
}
2015-01-07 12:29:45 +08:00
return ;
2014-12-24 01:00:13 +08:00
}
2014-12-31 05:08:33 +08:00
//by marshmellow
2015-01-07 12:29:45 +08:00
//print EM410x ID in multiple formats
2014-12-29 09:33:32 +08:00
void printEM410x ( uint64_t id )
2014-12-24 01:00:13 +08:00
{
2014-12-29 09:33:32 +08:00
if ( id ! = 0 ) {
2014-12-25 00:48:41 +08:00
uint64_t iii = 1 ;
2015-01-21 06:28:51 +08:00
uint64_t id2lo = 0 ;
2014-12-29 09:33:32 +08:00
uint32_t ii = 0 ;
uint32_t i = 0 ;
2014-12-25 00:48:41 +08:00
for ( ii = 5 ; ii > 0 ; ii - - ) {
2014-12-24 01:00:13 +08:00
for ( i = 0 ; i < 8 ; i + + ) {
2015-01-07 12:29:45 +08:00
id2lo = ( id2lo < < 1LL ) | ( ( id & ( iii < < ( i + ( ( ii - 1 ) * 8 ) ) ) ) > > ( i + ( ( ii - 1 ) * 8 ) ) ) ;
2014-12-24 01:00:13 +08:00
}
}
2014-12-25 00:48:41 +08:00
//output em id
2014-12-29 09:33:32 +08:00
PrintAndLog ( " EM TAG ID : %010llx " , id ) ;
2015-01-21 06:28:51 +08:00
PrintAndLog ( " Unique TAG ID: %010llx " , id2lo ) ;
2014-12-29 09:33:32 +08:00
PrintAndLog ( " DEZ 8 : %08lld " , id & 0xFFFFFF ) ;
PrintAndLog ( " DEZ 10 : %010lld " , id & 0xFFFFFF ) ;
PrintAndLog ( " DEZ 5.5 : %05lld.%05lld " , ( id > > 16LL ) & 0xFFFF , ( id & 0xFFFF ) ) ;
PrintAndLog ( " DEZ 3.5A : %03lld.%05lld " , ( id > > 32ll ) , ( id & 0xFFFF ) ) ;
PrintAndLog ( " DEZ 14/IK2 : %014lld " , id ) ;
2014-12-25 00:48:41 +08:00
PrintAndLog ( " DEZ 15/IK3 : %015lld " , id2lo ) ;
2014-12-29 09:33:32 +08:00
PrintAndLog ( " Other : %05lld_%03lld_%08lld " , ( id & 0xFFFF ) , ( ( id > > 16LL ) & 0xFF ) , ( id & 0xFFFFFF ) ) ;
2015-01-07 12:29:45 +08:00
}
2014-12-29 09:33:32 +08:00
return ;
}
2014-12-31 05:08:33 +08:00
//by marshmellow
2015-01-07 12:29:45 +08:00
//take binary from demod buffer and see if we can find an EM410x ID
2014-12-29 09:33:32 +08:00
int CmdEm410xDecode ( const char * Cmd )
{
uint64_t id = 0 ;
2015-01-21 06:28:51 +08:00
size_t size = DemodBufferLen , idx = 0 ;
id = Em410xDecode ( DemodBuffer , & size , & idx ) ;
if ( id > 0 ) {
setDemodBuf ( DemodBuffer , size , idx ) ;
if ( g_debugMode ) {
PrintAndLog ( " DEBUG: Printing demod buffer: " ) ;
printDemodBuff ( ) ;
}
printEM410x ( id ) ;
return 1 ;
}
2014-12-24 01:00:13 +08:00
return 0 ;
}
2014-12-31 15:27:30 +08:00
2014-12-23 06:46:28 +08:00
//by marshmellow
2014-12-29 09:33:32 +08:00
//takes 2 arguments - clock and invert both as integers
2015-01-07 12:29:45 +08:00
//attempts to demodulate ask while decoding manchester
2014-12-23 06:46:28 +08:00
//prints binary found and saves in graphbuffer for further commands
2014-12-25 02:01:09 +08:00
int Cmdaskmandemod ( const char * Cmd )
2014-12-23 06:46:28 +08:00
{
2015-01-21 06:28:51 +08:00
int invert = 0 ;
2015-01-07 12:29:45 +08:00
int clk = 0 ;
2014-12-29 09:33:32 +08:00
uint8_t BitStream [ MAX_GRAPH_TRACE_LEN ] = { 0 } ;
2015-01-07 12:29:45 +08:00
sscanf ( Cmd , " %i %i " , & clk , & invert ) ;
2014-12-23 06:46:28 +08:00
if ( invert ! = 0 & & invert ! = 1 ) {
PrintAndLog ( " Invalid argument: %s " , Cmd ) ;
return 0 ;
}
2015-01-07 12:29:45 +08:00
size_t BitLen = getFromGraphBuf ( BitStream ) ;
2015-01-21 06:28:51 +08:00
if ( g_debugMode = = 1 ) PrintAndLog ( " DEBUG: Bitlen from grphbuff: %d " , BitLen ) ;
2014-12-29 09:33:32 +08:00
int errCnt = 0 ;
errCnt = askmandemod ( BitStream , & BitLen , & clk , & invert ) ;
2015-01-07 12:29:45 +08:00
if ( errCnt < 0 | | BitLen < 16 ) { //if fatal error (or -1)
2015-01-21 06:28:51 +08:00
if ( g_debugMode = = 1 ) PrintAndLog ( " no data found %d, errors:%d, bitlen:%d, clock:%d " , errCnt , invert , BitLen , clk ) ;
2014-12-23 06:46:28 +08:00
return 0 ;
2015-01-07 12:29:45 +08:00
}
2014-12-31 15:27:30 +08:00
PrintAndLog ( " \n Using Clock: %d - Invert: %d - Bits Found: %d " , clk , invert , BitLen ) ;
2015-01-07 12:29:45 +08:00
2014-12-31 05:08:33 +08:00
//output
2014-12-29 09:33:32 +08:00
if ( errCnt > 0 ) {
PrintAndLog ( " # Errors during Demoding (shown as 77 in bit stream): %d " , errCnt ) ;
2014-12-23 06:46:28 +08:00
}
2014-12-29 09:33:32 +08:00
PrintAndLog ( " ASK/Manchester decoded bitstream: " ) ;
// Now output the bitstream to the scrollback by line of 16 bits
2015-01-21 06:28:51 +08:00
setDemodBuf ( BitStream , BitLen , 0 ) ;
2015-01-07 12:29:45 +08:00
printDemodBuff ( ) ;
2014-12-29 09:33:32 +08:00
uint64_t lo = 0 ;
2015-01-21 06:28:51 +08:00
size_t idx = 0 ;
lo = Em410xDecode ( BitStream , & BitLen , & idx ) ;
2014-12-31 05:08:33 +08:00
if ( lo > 0 ) {
//set GraphBuffer for clone or sim command
2015-01-21 06:28:51 +08:00
setDemodBuf ( BitStream , BitLen , idx ) ;
if ( g_debugMode ) {
PrintAndLog ( " DEBUG: idx: %d, Len: %d, Printing Demod Buffer: " , idx , BitLen ) ;
printDemodBuff ( ) ;
}
2014-12-31 05:08:33 +08:00
PrintAndLog ( " EM410x pattern found: " ) ;
printEM410x ( lo ) ;
2015-01-01 03:55:58 +08:00
return 1 ;
2014-12-31 05:08:33 +08:00
}
2014-12-29 09:33:32 +08:00
return 0 ;
}
//by marshmellow
2014-12-31 05:08:33 +08:00
//manchester decode
2014-12-29 09:33:32 +08:00
//stricktly take 10 and 01 and convert to 0 and 1
int Cmdmandecoderaw ( const char * Cmd )
{
int i = 0 ;
int errCnt = 0 ;
2015-01-07 12:29:45 +08:00
size_t size = 0 ;
2014-12-29 09:33:32 +08:00
uint8_t BitStream [ MAX_GRAPH_TRACE_LEN ] = { 0 } ;
int high = 0 , low = 0 ;
2015-01-07 12:29:45 +08:00
for ( ; i < DemodBufferLen ; + + i ) {
if ( DemodBuffer [ i ] > high ) high = DemodBuffer [ i ] ;
else if ( DemodBuffer [ i ] < low ) low = DemodBuffer [ i ] ;
BitStream [ i ] = DemodBuffer [ i ] ;
2014-12-29 09:33:32 +08:00
}
if ( high > 1 | | low < 0 ) {
PrintAndLog ( " Error: please raw demod the wave first then mancheseter raw decode " ) ;
return 0 ;
}
2015-01-07 12:29:45 +08:00
size = i ;
errCnt = manrawdecode ( BitStream , & size ) ;
2014-12-30 04:58:59 +08:00
if ( errCnt > = 20 ) {
PrintAndLog ( " Too many errors: %d " , errCnt ) ;
return 0 ;
}
2014-12-29 09:33:32 +08:00
PrintAndLog ( " Manchester Decoded - # errors:%d - data: " , errCnt ) ;
2015-01-07 12:29:45 +08:00
printBitStream ( BitStream , size ) ;
2014-12-29 09:33:32 +08:00
if ( errCnt = = 0 ) {
2015-01-07 12:29:45 +08:00
uint64_t id = 0 ;
2015-01-21 06:28:51 +08:00
size_t idx = 0 ;
id = Em410xDecode ( BitStream , & size , & idx ) ;
if ( id > 0 ) {
//need to adjust to set bitstream back to manchester encoded data
//setDemodBuf(BitStream, size, idx);
printEM410x ( id ) ;
}
2014-12-29 09:33:32 +08:00
}
2014-12-31 05:08:33 +08:00
return 1 ;
}
//by marshmellow
//biphase decode
//take 01 or 10 = 0 and 11 or 00 = 1
2015-01-19 07:13:32 +08:00
//takes 2 arguments "offset" default = 0 if 1 it will shift the decode by one bit
// and "invert" default = 0 if 1 it will invert output
2015-01-07 12:29:45 +08:00
// since it is not like manchester and doesn't have an incorrect bit pattern we
2014-12-31 05:08:33 +08:00
// cannot determine if our decode is correct or if it should be shifted by one bit
// the argument offset allows us to manually shift if the output is incorrect
// (better would be to demod and decode at the same time so we can distinguish large
// width waves vs small width waves to help the decode positioning) or askbiphdemod
int CmdBiphaseDecodeRaw ( const char * Cmd )
{
int i = 0 ;
int errCnt = 0 ;
2015-01-07 12:29:45 +08:00
size_t size = 0 ;
2014-12-31 05:08:33 +08:00
int offset = 0 ;
2015-01-19 07:13:32 +08:00
int invert = 0 ;
2014-12-31 05:08:33 +08:00
int high = 0 , low = 0 ;
2015-01-19 07:13:32 +08:00
sscanf ( Cmd , " %i %i " , & offset , & invert ) ;
2014-12-31 05:08:33 +08:00
uint8_t BitStream [ MAX_GRAPH_TRACE_LEN ] = { 0 } ;
//get graphbuffer & high and low
2015-01-07 12:29:45 +08:00
for ( ; i < DemodBufferLen ; + + i ) {
if ( DemodBuffer [ i ] > high ) high = DemodBuffer [ i ] ;
else if ( DemodBuffer [ i ] < low ) low = DemodBuffer [ i ] ;
BitStream [ i ] = DemodBuffer [ i ] ;
2014-12-31 05:08:33 +08:00
}
if ( high > 1 | | low < 0 ) {
PrintAndLog ( " Error: please raw demod the wave first then decode " ) ;
return 0 ;
}
2015-01-07 12:29:45 +08:00
size = i ;
2015-01-19 07:13:32 +08:00
errCnt = BiphaseRawDecode ( BitStream , & size , offset , invert ) ;
2014-12-31 05:08:33 +08:00
if ( errCnt > = 20 ) {
PrintAndLog ( " Too many errors attempting to decode: %d " , errCnt ) ;
return 0 ;
}
PrintAndLog ( " Biphase Decoded using offset: %d - # errors:%d - data: " , offset , errCnt ) ;
2015-01-07 12:29:45 +08:00
printBitStream ( BitStream , size ) ;
2014-12-31 05:08:33 +08:00
PrintAndLog ( " \n if bitstream does not look right try offset=1 " ) ;
return 1 ;
2014-12-29 09:33:32 +08:00
}
//by marshmellow
//takes 2 arguments - clock and invert both as integers
//attempts to demodulate ask only
//prints binary found and saves in graphbuffer for further commands
int Cmdaskrawdemod ( const char * Cmd )
{
2015-01-07 12:29:45 +08:00
int invert = 0 ;
int clk = 0 ;
2014-12-29 09:33:32 +08:00
uint8_t BitStream [ MAX_GRAPH_TRACE_LEN ] = { 0 } ;
2015-01-07 12:29:45 +08:00
sscanf ( Cmd , " %i %i " , & clk , & invert ) ;
2014-12-29 09:33:32 +08:00
if ( invert ! = 0 & & invert ! = 1 ) {
PrintAndLog ( " Invalid argument: %s " , Cmd ) ;
return 0 ;
}
2015-01-07 12:29:45 +08:00
size_t BitLen = getFromGraphBuf ( BitStream ) ;
2014-12-29 09:33:32 +08:00
int errCnt = 0 ;
2015-01-07 12:29:45 +08:00
errCnt = askrawdemod ( BitStream , & BitLen , & clk , & invert ) ;
if ( errCnt = = - 1 | | BitLen < 16 ) { //throw away static - allow 1 and -1 (in case of threshold command first)
PrintAndLog ( " no data found " ) ;
2015-01-21 06:28:51 +08:00
if ( g_debugMode = = 1 ) PrintAndLog ( " errCnt: %d, BitLen: %d, clk: %d, invert: %d " , errCnt , BitLen , clk , invert ) ;
2014-12-29 09:33:32 +08:00
return 0 ;
2015-01-07 12:29:45 +08:00
}
2014-12-31 15:27:30 +08:00
PrintAndLog ( " Using Clock: %d - invert: %d - Bits Found: %d " , clk , invert , BitLen ) ;
2015-01-21 06:28:51 +08:00
//move BitStream back to DemodBuffer
setDemodBuf ( BitStream , BitLen , 0 ) ;
2015-01-07 12:29:45 +08:00
2015-01-21 06:28:51 +08:00
//output
2014-12-29 09:33:32 +08:00
if ( errCnt > 0 ) {
PrintAndLog ( " # Errors during Demoding (shown as 77 in bit stream): %d " , errCnt ) ;
}
PrintAndLog ( " ASK demoded bitstream: " ) ;
// Now output the bitstream to the scrollback by line of 16 bits
printBitStream ( BitStream , BitLen ) ;
2015-01-09 05:23:45 +08:00
2014-12-31 15:27:30 +08:00
return 1 ;
2014-12-23 06:46:28 +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 CmdAutoCorr ( const char * Cmd )
{
static int CorrelBuffer [ MAX_GRAPH_TRACE_LEN ] ;
int window = atoi ( Cmd ) ;
if ( window = = 0 ) {
PrintAndLog ( " needs a window " ) ;
return 0 ;
}
if ( window > = GraphTraceLen ) {
PrintAndLog ( " window must be smaller than trace (%d samples) " ,
GraphTraceLen ) ;
return 0 ;
}
PrintAndLog ( " performing %d correlations " , GraphTraceLen - window ) ;
for ( int i = 0 ; i < GraphTraceLen - window ; + + i ) {
int sum = 0 ;
for ( int j = 0 ; j < window ; + + j ) {
sum + = ( GraphBuffer [ j ] * GraphBuffer [ i + j ] ) / 256 ;
}
CorrelBuffer [ i ] = sum ;
}
GraphTraceLen = GraphTraceLen - window ;
memcpy ( GraphBuffer , CorrelBuffer , GraphTraceLen * sizeof ( int ) ) ;
RepaintGraphWindow ( ) ;
return 0 ;
}
int CmdBitsamples ( const char * Cmd )
{
int cnt = 0 ;
2013-04-27 04:33:05 +08:00
uint8_t got [ 12288 ] ;
2015-01-09 05:23:45 +08:00
2013-04-27 04:33:05 +08:00
GetFromBigBuf ( got , sizeof ( got ) , 0 ) ;
WaitForResponse ( CMD_ACK , 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
2013-04-27 04:33:05 +08:00
for ( int j = 0 ; j < sizeof ( got ) ; j + + ) {
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
for ( int k = 0 ; k < 8 ; k + + ) {
2013-04-27 04:33:05 +08:00
if ( got [ j ] & ( 1 < < ( 7 - k ) ) ) {
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
GraphBuffer [ cnt + + ] = 1 ;
} else {
GraphBuffer [ cnt + + ] = 0 ;
}
}
}
GraphTraceLen = cnt ;
RepaintGraphWindow ( ) ;
return 0 ;
}
/*
* Convert to a bitstream
*/
int CmdBitstream ( const char * Cmd )
{
int i , j ;
int bit ;
int gtl ;
int clock ;
int low = 0 ;
int high = 0 ;
int hithigh , hitlow , first ;
/* Detect high and lows and clock */
for ( i = 0 ; i < GraphTraceLen ; + + i )
{
if ( GraphBuffer [ i ] > high )
high = GraphBuffer [ i ] ;
else if ( GraphBuffer [ i ] < low )
low = GraphBuffer [ i ] ;
}
/* Get our clock */
clock = GetClock ( Cmd , high , 1 ) ;
gtl = ClearGraph ( 0 ) ;
bit = 0 ;
for ( i = 0 ; i < ( int ) ( gtl / clock ) ; + + i )
{
hithigh = 0 ;
hitlow = 0 ;
first = 1 ;
/* Find out if we hit both high and low peaks */
for ( j = 0 ; j < clock ; + + j )
{
if ( GraphBuffer [ ( i * clock ) + j ] = = high )
hithigh = 1 ;
else if ( GraphBuffer [ ( i * clock ) + j ] = = low )
hitlow = 1 ;
/* it doesn't count if it's the first part of our read
because it ' s really just trailing from the last sequence */
if ( first & & ( hithigh | | hitlow ) )
hithigh = hitlow = 0 ;
else
first = 0 ;
if ( hithigh & & hitlow )
break ;
}
/* If we didn't hit both high and low peaks, we had a bit transition */
if ( ! hithigh | | ! hitlow )
bit ^ = 1 ;
AppendGraph ( 0 , clock , bit ) ;
}
2015-01-07 12:29:45 +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
RepaintGraphWindow ( ) ;
return 0 ;
}
int CmdBuffClear ( const char * Cmd )
{
UsbCommand c = { CMD_BUFF_CLEAR } ;
SendCommand ( & c ) ;
ClearGraph ( true ) ;
return 0 ;
}
int CmdDec ( const char * Cmd )
{
for ( int i = 0 ; i < ( GraphTraceLen / 2 ) ; + + i )
GraphBuffer [ i ] = GraphBuffer [ i * 2 ] ;
GraphTraceLen / = 2 ;
PrintAndLog ( " decimated by 2 " ) ;
RepaintGraphWindow ( ) ;
return 0 ;
}
2015-01-21 06:28:51 +08:00
//by marshmellow
//shift graph zero up or down based on input + or -
int CmdGraphShiftZero ( const char * Cmd )
{
int shift = 0 ;
//set options from parameters entered with the command
sscanf ( Cmd , " %i " , & shift ) ;
int shiftedVal = 0 ;
for ( int i = 0 ; i < GraphTraceLen ; i + + ) {
shiftedVal = GraphBuffer [ i ] + shift ;
if ( shiftedVal > 127 )
shiftedVal = 127 ;
else if ( shiftedVal < - 127 )
shiftedVal = - 127 ;
GraphBuffer [ i ] = shiftedVal ;
}
CmdNorm ( " " ) ;
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
/* Print our clock rate */
2015-01-07 12:29:45 +08:00
// uses data from graphbuffer
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 CmdDetectClockRate ( const char * Cmd )
{
2014-12-31 05:08:33 +08:00
GetClock ( " " , 0 , 0 ) ;
2015-01-07 12:29:45 +08:00
//int clock = DetectASKClock(0);
//PrintAndLog("Auto-detected clock rate: %d", clock);
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
return 0 ;
}
2014-12-30 04:32:53 +08:00
2014-12-24 01:00:13 +08:00
//by marshmellow
2014-12-29 09:33:32 +08:00
//fsk raw demod and print binary
2014-12-31 15:27:30 +08:00
//takes 4 arguments - Clock, invert, rchigh, rclow
//defaults: clock = 50, invert=0, rchigh=10, rclow=8 (RF/10 RF/8 (fsk2a))
2014-12-23 06:46:28 +08:00
int CmdFSKrawdemod ( const char * Cmd )
2014-12-20 01:14:27 +08:00
{
2014-12-29 09:33:32 +08:00
//raw fsk demod no manchester decoding no start bit finding just get binary from wave
2014-12-20 01:14:27 +08:00
//set defaults
2015-01-23 03:24:03 +08:00
int rfLen = 0 ;
2014-12-31 15:27:30 +08:00
int invert = 0 ;
2015-01-23 03:24:03 +08:00
int fchigh = 0 ;
int fclow = 0 ;
2014-12-20 01:14:27 +08:00
//set options from parameters entered with the command
2015-01-07 12:29:45 +08:00
sscanf ( Cmd , " %i %i %i %i " , & rfLen , & invert , & fchigh , & fclow ) ;
2014-12-20 01:14:27 +08:00
if ( strlen ( Cmd ) > 0 & & strlen ( Cmd ) < = 2 ) {
if ( rfLen = = 1 ) {
invert = 1 ; //if invert option only is used
2015-01-23 03:24:03 +08:00
rfLen = 0 ;
}
2015-01-07 12:29:45 +08:00
}
2015-01-23 03:24:03 +08:00
2014-12-29 09:33:32 +08:00
uint8_t BitStream [ MAX_GRAPH_TRACE_LEN ] = { 0 } ;
2015-01-07 12:29:45 +08:00
size_t BitLen = getFromGraphBuf ( BitStream ) ;
2015-01-23 03:24:03 +08:00
//get field clock lengths
uint16_t fcs = 0 ;
if ( fchigh = = 0 | | fclow = = 0 ) {
fcs = countFC ( BitStream , BitLen ) ;
if ( fcs = = 0 ) {
fchigh = 10 ;
fclow = 8 ;
} else {
fchigh = ( fcs > > 8 ) & 0xFF ;
fclow = fcs & 0xFF ;
}
}
//get bit clock length
if ( rfLen = = 0 ) {
rfLen = detectFSKClk ( BitStream , BitLen , fchigh , fclow ) ;
if ( rfLen = = 0 ) rfLen = 50 ;
}
PrintAndLog ( " Args invert: %d - Clock:%d - fchigh:%d - fclow: %d " , invert , rfLen , fchigh , fclow ) ;
2015-01-07 12:29:45 +08:00
int size = fskdemod ( BitStream , BitLen , ( uint8_t ) rfLen , ( uint8_t ) invert , ( uint8_t ) fchigh , ( uint8_t ) fclow ) ;
2014-12-31 05:08:33 +08:00
if ( size > 0 ) {
PrintAndLog ( " FSK decoded bitstream: " ) ;
2015-01-21 06:28:51 +08:00
setDemodBuf ( BitStream , size , 0 ) ;
2015-01-07 12:29:45 +08:00
2014-12-31 05:08:33 +08:00
// Now output the bitstream to the scrollback by line of 16 bits
if ( size > ( 8 * 32 ) + 2 ) size = ( 8 * 32 ) + 2 ; //only output a max of 8 blocks of 32 bits most tags will have full bit stream inside that sample size
printBitStream ( BitStream , size ) ;
} else {
PrintAndLog ( " no FSK data found " ) ;
2014-12-29 09:33:32 +08:00
}
2014-12-20 01:14:27 +08:00
return 0 ;
}
2014-12-29 09:33:32 +08:00
//by marshmellow (based on existing demod + holiman's refactor)
//HID Prox demod - FSK RF/50 with preamble of 00011101 (then manchester encoded)
//print full HID Prox ID and some bit format details if found
2014-12-20 01:14:27 +08:00
int CmdFSKdemodHID ( const char * Cmd )
{
//raw fsk demod no manchester decoding no start bit finding just get binary from wave
uint32_t hi2 = 0 , hi = 0 , lo = 0 ;
2015-01-07 12:29:45 +08:00
2014-12-29 09:33:32 +08:00
uint8_t BitStream [ MAX_GRAPH_TRACE_LEN ] = { 0 } ;
2015-01-07 12:29:45 +08:00
size_t BitLen = getFromGraphBuf ( BitStream ) ;
2014-12-20 01:14:27 +08:00
//get binary from fsk wave
2015-01-28 03:51:12 +08:00
int idx = HIDdemodFSK ( BitStream , & BitLen , & hi2 , & hi , & lo ) ;
2015-01-21 06:28:51 +08:00
if ( idx < 0 ) {
2015-01-28 03:51:12 +08:00
if ( g_debugMode ) {
if ( idx = = - 1 ) {
PrintAndLog ( " DEBUG: Just Noise Detected " ) ;
} else if ( idx = = - 2 ) {
PrintAndLog ( " DEBUG: Error demoding fsk " ) ;
} else if ( idx = = - 3 ) {
PrintAndLog ( " DEBUG: Preamble not found " ) ;
} else if ( idx = = - 4 ) {
PrintAndLog ( " DEBUG: Error in Manchester data, SIZE: %d " , BitLen ) ;
} else {
PrintAndLog ( " DEBUG: Error demoding fsk %d " , idx ) ;
}
}
2015-01-21 06:28:51 +08:00
return 0 ;
}
if ( hi2 = = 0 & & hi = = 0 & & lo = = 0 ) {
if ( g_debugMode ) PrintAndLog ( " DEBUG: Error - no values found " ) ;
2014-12-29 09:33:32 +08:00
return 0 ;
}
if ( hi2 ! = 0 ) { //extra large HID tags
2015-01-07 12:29:45 +08:00
PrintAndLog ( " HID Prox TAG ID: %x%08x%08x (%d) " ,
2014-12-29 09:33:32 +08:00
( unsigned int ) hi2 , ( unsigned int ) hi , ( unsigned int ) lo , ( unsigned int ) ( lo > > 1 ) & 0xFFFF ) ;
}
else { //standard HID tags <38 bits
2014-12-31 05:08:33 +08:00
uint8_t fmtLen = 0 ;
2014-12-29 09:33:32 +08:00
uint32_t fc = 0 ;
uint32_t cardnum = 0 ;
if ( ( ( hi > > 5 ) & 1 ) = = 1 ) { //if bit 38 is set then < 37 bit format is used
uint32_t lo2 = 0 ;
2015-01-14 06:21:36 +08:00
lo2 = ( ( ( hi & 31 ) < < 12 ) | ( lo > > 20 ) ) ; //get bits 21-37 to check for format len bit
2014-12-29 09:33:32 +08:00
uint8_t idx3 = 1 ;
while ( lo2 > 1 ) { //find last bit set to 1 (format len bit)
lo2 = lo2 > > 1 ;
idx3 + + ;
2014-12-20 01:14:27 +08:00
}
2015-01-07 12:29:45 +08:00
fmtLen = idx3 + 19 ;
2014-12-29 09:33:32 +08:00
fc = 0 ;
cardnum = 0 ;
2014-12-31 05:08:33 +08:00
if ( fmtLen = = 26 ) {
2014-12-29 09:33:32 +08:00
cardnum = ( lo > > 1 ) & 0xFFFF ;
fc = ( lo > > 17 ) & 0xFF ;
}
2014-12-31 05:08:33 +08:00
if ( fmtLen = = 34 ) {
2014-12-29 09:33:32 +08:00
cardnum = ( lo > > 1 ) & 0xFFFF ;
fc = ( ( hi & 1 ) < < 15 ) | ( lo > > 17 ) ;
}
2014-12-31 05:08:33 +08:00
if ( fmtLen = = 35 ) {
2014-12-29 09:33:32 +08:00
cardnum = ( lo > > 1 ) & 0xFFFFF ;
fc = ( ( hi & 1 ) < < 11 ) | ( lo > > 21 ) ;
2014-12-20 01:14:27 +08:00
}
}
2014-12-29 09:33:32 +08:00
else { //if bit 38 is not set then 37 bit format is used
2015-01-14 06:21:36 +08:00
fmtLen = 37 ;
fc = 0 ;
cardnum = 0 ;
if ( fmtLen = = 37 ) {
2014-12-29 09:33:32 +08:00
cardnum = ( lo > > 1 ) & 0x7FFFF ;
fc = ( ( hi & 0xF ) < < 12 ) | ( lo > > 20 ) ;
}
2015-01-07 12:29:45 +08:00
}
PrintAndLog ( " HID Prox TAG ID: %x%08x (%d) - Format Len: %dbit - FC: %d - Card: %d " ,
2014-12-29 09:33:32 +08:00
( unsigned int ) hi , ( unsigned int ) lo , ( unsigned int ) ( lo > > 1 ) & 0xFFFF ,
2014-12-31 05:08:33 +08:00
( unsigned int ) fmtLen , ( unsigned int ) fc , ( unsigned int ) cardnum ) ;
2014-12-20 01:14:27 +08:00
}
2015-01-21 06:28:51 +08:00
setDemodBuf ( BitStream , BitLen , idx ) ;
if ( g_debugMode ) {
PrintAndLog ( " DEBUG: idx: %d, Len: %d, Printing Demod Buffer: " , idx , BitLen ) ;
printDemodBuff ( ) ;
}
return 1 ;
}
2015-01-27 06:23:19 +08:00
//by marshmellow
//Paradox Prox demod - FSK RF/50 with preamble of 00001111 (then manchester encoded)
2015-01-21 06:28:51 +08:00
//print full Paradox Prox ID and some bit format details if found
int CmdFSKdemodParadox ( const char * Cmd )
{
//raw fsk demod no manchester decoding no start bit finding just get binary from wave
uint32_t hi2 = 0 , hi = 0 , lo = 0 ;
uint8_t BitStream [ MAX_GRAPH_TRACE_LEN ] = { 0 } ;
size_t BitLen = getFromGraphBuf ( BitStream ) ;
//get binary from fsk wave
2015-01-28 03:51:12 +08:00
int idx = ParadoxdemodFSK ( BitStream , & BitLen , & hi2 , & hi , & lo ) ;
2015-01-21 06:28:51 +08:00
if ( idx < 0 ) {
2015-01-28 03:51:12 +08:00
if ( g_debugMode ) {
if ( idx = = - 1 ) {
PrintAndLog ( " DEBUG: Just Noise Detected " ) ;
} else if ( idx = = - 2 ) {
PrintAndLog ( " DEBUG: Error demoding fsk " ) ;
} else if ( idx = = - 3 ) {
PrintAndLog ( " DEBUG: Preamble not found " ) ;
} else if ( idx = = - 4 ) {
PrintAndLog ( " DEBUG: Error in Manchester data " ) ;
} else {
PrintAndLog ( " DEBUG: Error demoding fsk %d " , idx ) ;
}
}
2015-01-21 06:28:51 +08:00
return 0 ;
}
if ( hi2 = = 0 & & hi = = 0 & & lo = = 0 ) {
if ( g_debugMode ) PrintAndLog ( " DEBUG: Error - no value found " ) ;
return 0 ;
}
uint32_t fc = ( ( hi & 0x3 ) < < 6 ) | ( lo > > 26 ) ;
uint32_t cardnum = ( lo > > 10 ) & 0xFFFF ;
PrintAndLog ( " Paradox TAG ID: %x%08x - FC: %d - Card: %d - Checksum: %02x " ,
hi > > 10 , ( hi & 0x3 ) < < 26 | ( lo > > 10 ) , fc , cardnum , ( lo > > 2 ) & 0xFF ) ;
setDemodBuf ( BitStream , BitLen , idx ) ;
if ( g_debugMode ) {
PrintAndLog ( " DEBUG: idx: %d, len: %d, Printing Demod Buffer: " , idx , BitLen ) ;
printDemodBuff ( ) ;
}
return 1 ;
2014-12-20 01:14:27 +08:00
}
2015-01-21 06:28:51 +08:00
2014-12-24 01:00:13 +08:00
//by marshmellow
2014-12-29 09:33:32 +08:00
//IO-Prox demod - FSK RF/64 with preamble of 000000001
//print ioprox ID and some format details
2014-12-20 01:14:27 +08:00
int CmdFSKdemodIO ( const char * Cmd )
{
//raw fsk demod no manchester decoding no start bit finding just get binary from wave
//set defaults
2015-01-07 12:29:45 +08:00
int idx = 0 ;
2015-01-21 06:28:51 +08:00
//something in graphbuffer?
if ( GraphTraceLen < 65 ) {
if ( g_debugMode ) PrintAndLog ( " DEBUG: not enough samples in GraphBuffer " ) ;
return 0 ;
}
2014-12-29 09:33:32 +08:00
uint8_t BitStream [ MAX_GRAPH_TRACE_LEN ] = { 0 } ;
2015-01-07 12:29:45 +08:00
size_t BitLen = getFromGraphBuf ( BitStream ) ;
2015-01-21 06:28:51 +08:00
2014-12-29 09:33:32 +08:00
//get binary from fsk wave
2015-01-07 12:29:45 +08:00
idx = IOdemodFSK ( BitStream , BitLen ) ;
2014-12-29 09:33:32 +08:00
if ( idx < 0 ) {
2015-01-28 03:51:12 +08:00
if ( g_debugMode ) {
if ( idx = = - 1 ) {
PrintAndLog ( " DEBUG: Just Noise Detected " ) ;
} else if ( idx = = - 2 ) {
PrintAndLog ( " DEBUG: not enough samples " ) ;
} else if ( idx = = - 3 ) {
PrintAndLog ( " DEBUG: error during fskdemod " ) ;
} else if ( idx = = - 4 ) {
PrintAndLog ( " DEBUG: Preamble not found " ) ;
} else if ( idx = = - 5 ) {
PrintAndLog ( " DEBUG: Separator bits not found " ) ;
} else {
PrintAndLog ( " DEBUG: Error demoding fsk %d " , idx ) ;
}
}
2014-12-29 09:33:32 +08:00
return 0 ;
}
if ( idx = = 0 ) {
2015-01-21 06:28:51 +08:00
if ( g_debugMode = = 1 ) {
PrintAndLog ( " DEBUG: IO Prox Data not found - FSK Bits: %d " , BitLen ) ;
if ( BitLen > 92 ) printBitStream ( BitStream , 92 ) ;
}
2014-12-31 05:08:33 +08:00
return 0 ;
2014-12-20 01:14:27 +08:00
}
//Index map
//0 10 20 30 40 50 60
//| | | | | | |
//01234567 8 90123456 7 89012345 6 78901234 5 67890123 4 56789012 3 45678901 23
//-----------------------------------------------------------------------------
//00000000 0 11110000 1 facility 1 version* 1 code*one 1 code*two 1 ???????? 11
//
//XSF(version)facility:codeone+codetwo (raw)
//Handle the data
2015-01-21 06:28:51 +08:00
if ( idx + 64 > BitLen ) {
if ( g_debugMode = = 1 ) PrintAndLog ( " not enough bits found - bitlen: %d " , BitLen ) ;
return 0 ;
}
2014-12-29 09:33:32 +08:00
PrintAndLog ( " %d%d%d%d%d%d%d%d %d " , BitStream [ idx ] , BitStream [ idx + 1 ] , BitStream [ idx + 2 ] , BitStream [ idx + 3 ] , BitStream [ idx + 4 ] , BitStream [ idx + 5 ] , BitStream [ idx + 6 ] , BitStream [ idx + 7 ] , BitStream [ idx + 8 ] ) ;
2015-01-07 12:29:45 +08:00
PrintAndLog ( " %d%d%d%d%d%d%d%d %d " , BitStream [ idx + 9 ] , BitStream [ idx + 10 ] , BitStream [ idx + 11 ] , BitStream [ idx + 12 ] , BitStream [ idx + 13 ] , BitStream [ idx + 14 ] , BitStream [ idx + 15 ] , BitStream [ idx + 16 ] , BitStream [ idx + 17 ] ) ;
2014-12-31 15:27:30 +08:00
PrintAndLog ( " %d%d%d%d%d%d%d%d %d facility " , BitStream [ idx + 18 ] , BitStream [ idx + 19 ] , BitStream [ idx + 20 ] , BitStream [ idx + 21 ] , BitStream [ idx + 22 ] , BitStream [ idx + 23 ] , BitStream [ idx + 24 ] , BitStream [ idx + 25 ] , BitStream [ idx + 26 ] ) ;
PrintAndLog ( " %d%d%d%d%d%d%d%d %d version " , BitStream [ idx + 27 ] , BitStream [ idx + 28 ] , BitStream [ idx + 29 ] , BitStream [ idx + 30 ] , BitStream [ idx + 31 ] , BitStream [ idx + 32 ] , BitStream [ idx + 33 ] , BitStream [ idx + 34 ] , BitStream [ idx + 35 ] ) ;
PrintAndLog ( " %d%d%d%d%d%d%d%d %d code1 " , BitStream [ idx + 36 ] , BitStream [ idx + 37 ] , BitStream [ idx + 38 ] , BitStream [ idx + 39 ] , BitStream [ idx + 40 ] , BitStream [ idx + 41 ] , BitStream [ idx + 42 ] , BitStream [ idx + 43 ] , BitStream [ idx + 44 ] ) ;
PrintAndLog ( " %d%d%d%d%d%d%d%d %d code2 " , BitStream [ idx + 45 ] , BitStream [ idx + 46 ] , BitStream [ idx + 47 ] , BitStream [ idx + 48 ] , BitStream [ idx + 49 ] , BitStream [ idx + 50 ] , BitStream [ idx + 51 ] , BitStream [ idx + 52 ] , BitStream [ idx + 53 ] ) ;
PrintAndLog ( " %d%d%d%d%d%d%d%d %d%d checksum " , BitStream [ idx + 54 ] , BitStream [ idx + 55 ] , BitStream [ idx + 56 ] , BitStream [ idx + 57 ] , BitStream [ idx + 58 ] , BitStream [ idx + 59 ] , BitStream [ idx + 60 ] , BitStream [ idx + 61 ] , BitStream [ idx + 62 ] , BitStream [ idx + 63 ] ) ;
2015-01-07 12:29:45 +08:00
2014-12-29 09:33:32 +08:00
uint32_t code = bytebits_to_byte ( BitStream + idx , 32 ) ;
2015-01-07 12:29:45 +08:00
uint32_t code2 = bytebits_to_byte ( BitStream + idx + 32 , 32 ) ;
2014-12-31 15:27:30 +08:00
uint8_t version = bytebits_to_byte ( BitStream + idx + 27 , 8 ) ; //14,4
uint8_t facilitycode = bytebits_to_byte ( BitStream + idx + 18 , 8 ) ;
2014-12-29 09:33:32 +08:00
uint16_t number = ( bytebits_to_byte ( BitStream + idx + 36 , 8 ) < < 8 ) | ( bytebits_to_byte ( BitStream + idx + 45 , 8 ) ) ; //36,9
2015-01-07 12:29:45 +08:00
PrintAndLog ( " IO Prox XSF(%02d)%02x:%05d (%08x%08x) " , version , facilitycode , number , code , code2 ) ;
2015-01-21 06:28:51 +08:00
setDemodBuf ( BitStream , 64 , idx ) ;
if ( g_debugMode ) {
PrintAndLog ( " DEBUG: idx: %d, Len: %d, Printing demod buffer: " , idx , 64 ) ;
printDemodBuff ( ) ;
}
return 1 ;
2014-12-20 01:14:27 +08:00
}
2015-01-19 07:13:32 +08:00
//by marshmellow
//AWID Prox demod - FSK RF/50 with preamble of 00000001 (always a 96 bit data stream)
//print full AWID Prox ID and some bit format details if found
int CmdFSKdemodAWID ( const char * Cmd )
{
2015-01-21 06:28:51 +08:00
//int verbose=1;
//sscanf(Cmd, "%i", &verbose);
2015-01-19 07:13:32 +08:00
//raw fsk demod no manchester decoding no start bit finding just get binary from wave
uint8_t BitStream [ MAX_GRAPH_TRACE_LEN ] = { 0 } ;
size_t size = getFromGraphBuf ( BitStream ) ;
//get binary from fsk wave
2015-01-28 03:51:12 +08:00
int idx = AWIDdemodFSK ( BitStream , & size ) ;
2015-01-19 07:13:32 +08:00
if ( idx < = 0 ) {
2015-01-21 06:28:51 +08:00
if ( g_debugMode = = 1 ) {
2015-01-19 07:13:32 +08:00
if ( idx = = - 1 )
2015-01-21 06:28:51 +08:00
PrintAndLog ( " DEBUG: Error - not enough samples " ) ;
2015-01-19 07:13:32 +08:00
else if ( idx = = - 2 )
2015-01-28 03:51:12 +08:00
PrintAndLog ( " DEBUG: Error - only noise found " ) ;
2015-01-19 07:13:32 +08:00
else if ( idx = = - 3 )
2015-01-21 06:28:51 +08:00
PrintAndLog ( " DEBUG: Error - problem during FSK demod " ) ;
2015-01-19 07:13:32 +08:00
// else if (idx == -3)
// PrintAndLog("Error: thought we had a tag but the parity failed");
else if ( idx = = - 4 )
2015-01-21 06:28:51 +08:00
PrintAndLog ( " DEBUG: Error - AWID preamble not found " ) ;
else if ( idx = = - 5 )
2015-01-28 03:51:12 +08:00
PrintAndLog ( " DEBUG: Error - Size not correct: %d " , size ) ;
2015-01-21 06:28:51 +08:00
else
PrintAndLog ( " DEBUG: Error %d " , idx ) ;
2015-01-19 07:13:32 +08:00
}
return 0 ;
}
// Index map
// 0 10 20 30 40 50 60
// | | | | | | |
// 01234567 890 1 234 5 678 9 012 3 456 7 890 1 234 5 678 9 012 3 456 7 890 1 234 5 678 9 012 3 - to 96
// -----------------------------------------------------------------------------
// 00000001 000 1 110 1 101 1 011 1 101 1 010 0 000 1 000 1 010 0 001 0 110 1 100 0 000 1 000 1
// premable bbb o bbb o bbw o fff o fff o ffc o ccc o ccc o ccc o ccc o ccc o wxx o xxx o xxx o - to 96
// |---26 bit---| |-----117----||-------------142-------------|
// b = format bit len, o = odd parity of last 3 bits
// f = facility code, c = card number
// w = wiegand parity
// (26 bit format shown)
//get raw ID before removing parities
uint32_t rawLo = bytebits_to_byte ( BitStream + idx + 64 , 32 ) ;
uint32_t rawHi = bytebits_to_byte ( BitStream + idx + 32 , 32 ) ;
uint32_t rawHi2 = bytebits_to_byte ( BitStream + idx , 32 ) ;
2015-01-21 06:28:51 +08:00
setDemodBuf ( BitStream , 96 , idx ) ;
2015-01-19 07:13:32 +08:00
size = removeParity ( BitStream , idx + 8 , 4 , 1 , 88 ) ;
if ( size ! = 66 ) {
2015-01-21 06:28:51 +08:00
if ( g_debugMode = = 1 ) PrintAndLog ( " DEBUG: Error - at parity check-tag size does not match AWID format " ) ;
2015-01-19 07:13:32 +08:00
return 0 ;
}
// ok valid card found!
// Index map
// 0 10 20 30 40 50 60
// | | | | | | |
// 01234567 8 90123456 7890123456789012 3 456789012345678901234567890123456
// -----------------------------------------------------------------------------
// 00011010 1 01110101 0000000010001110 1 000000000000000000000000000000000
// bbbbbbbb w ffffffff cccccccccccccccc w xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// |26 bit| |-117--| |-----142------|
// b = format bit len, o = odd parity of last 3 bits
// f = facility code, c = card number
// w = wiegand parity
// (26 bit format shown)
uint32_t fc = 0 ;
uint32_t cardnum = 0 ;
uint32_t code1 = 0 ;
uint32_t code2 = 0 ;
uint8_t fmtLen = bytebits_to_byte ( BitStream , 8 ) ;
if ( fmtLen = = 26 ) {
fc = bytebits_to_byte ( BitStream + 9 , 8 ) ;
cardnum = bytebits_to_byte ( BitStream + 17 , 16 ) ;
code1 = bytebits_to_byte ( BitStream + 8 , fmtLen ) ;
PrintAndLog ( " AWID Found - BitLength: %d, FC: %d, Card: %d - Wiegand: %x, Raw: %x%08x%08x " , fmtLen , fc , cardnum , code1 , rawHi2 , rawHi , rawLo ) ;
} else {
cardnum = bytebits_to_byte ( BitStream + 8 + ( fmtLen - 17 ) , 16 ) ;
if ( fmtLen > 32 ) {
code1 = bytebits_to_byte ( BitStream + 8 , fmtLen - 32 ) ;
code2 = bytebits_to_byte ( BitStream + 8 + ( fmtLen - 32 ) , 32 ) ;
PrintAndLog ( " AWID Found - BitLength: %d -unknown BitLength- (%d) - Wiegand: %x%08x, Raw: %x%08x%08x " , fmtLen , cardnum , code1 , code2 , rawHi2 , rawHi , rawLo ) ;
} else {
code1 = bytebits_to_byte ( BitStream + 8 , fmtLen ) ;
PrintAndLog ( " AWID Found - BitLength: %d -unknown BitLength- (%d) - Wiegand: %x, Raw: %x%08x%08x " , fmtLen , cardnum , code1 , rawHi2 , rawHi , rawLo ) ;
}
}
2015-01-21 06:28:51 +08:00
if ( g_debugMode ) {
PrintAndLog ( " DEBUG: idx: %d, Len: %d Printing Demod Buffer: " , idx , 96 ) ;
printDemodBuff ( ) ;
}
2015-01-19 07:13:32 +08:00
//todo - convert hi2, hi, lo to demodbuffer for future sim/clone commands
return 1 ;
}
//by marshmellow
//Pyramid Prox demod - FSK RF/50 with preamble of 0000000000000001 (always a 128 bit data stream)
//print full Farpointe Data/Pyramid Prox ID and some bit format details if found
int CmdFSKdemodPyramid ( const char * Cmd )
{
//raw fsk demod no manchester decoding no start bit finding just get binary from wave
uint8_t BitStream [ MAX_GRAPH_TRACE_LEN ] = { 0 } ;
size_t size = getFromGraphBuf ( BitStream ) ;
//get binary from fsk wave
2015-01-28 03:51:12 +08:00
int idx = PyramiddemodFSK ( BitStream , & size ) ;
2015-01-19 07:13:32 +08:00
if ( idx < 0 ) {
2015-01-21 06:28:51 +08:00
if ( g_debugMode = = 1 ) {
2015-01-19 07:13:32 +08:00
if ( idx = = - 5 )
2015-01-21 06:28:51 +08:00
PrintAndLog ( " DEBUG: Error - not enough samples " ) ;
2015-01-19 07:13:32 +08:00
else if ( idx = = - 1 )
2015-01-28 03:51:12 +08:00
PrintAndLog ( " DEBUG: Error - only noise found " ) ;
2015-01-19 07:13:32 +08:00
else if ( idx = = - 2 )
2015-01-21 06:28:51 +08:00
PrintAndLog ( " DEBUG: Error - problem during FSK demod " ) ;
else if ( idx = = - 3 )
2015-01-28 03:51:12 +08:00
PrintAndLog ( " DEBUG: Error - Size not correct: %d " , size ) ;
2015-01-19 07:13:32 +08:00
else if ( idx = = - 4 )
2015-01-21 06:28:51 +08:00
PrintAndLog ( " DEBUG: Error - Pyramid preamble not found " ) ;
else
PrintAndLog ( " DEBUG: Error - idx: %d " , idx ) ;
2015-01-19 07:13:32 +08:00
}
return 0 ;
}
// Index map
// 0 10 20 30 40 50 60
// | | | | | | |
// 0123456 7 8901234 5 6789012 3 4567890 1 2345678 9 0123456 7 8901234 5 6789012 3
// -----------------------------------------------------------------------------
// 0000000 0 0000000 1 0000000 1 0000000 1 0000000 1 0000000 1 0000000 1 0000000 1
// premable xxxxxxx o xxxxxxx o xxxxxxx o xxxxxxx o xxxxxxx o xxxxxxx o xxxxxxx o
// 64 70 80 90 100 110 120
// | | | | | | |
// 4567890 1 2345678 9 0123456 7 8901234 5 6789012 3 4567890 1 2345678 9 0123456 7
// -----------------------------------------------------------------------------
// 0000000 1 0000000 1 0000000 1 0110111 0 0011000 1 0000001 0 0001100 1 1001010 0
// xxxxxxx o xxxxxxx o xxxxxxx o xswffff o ffffccc o ccccccc o ccccccw o ppppppp o
// |---115---||---------71---------|
// s = format start bit, o = odd parity of last 7 bits
// f = facility code, c = card number
// w = wiegand parity, x = extra space for other formats
// p = unknown checksum
// (26 bit format shown)
//get raw ID before removing parities
uint32_t rawLo = bytebits_to_byte ( BitStream + idx + 96 , 32 ) ;
uint32_t rawHi = bytebits_to_byte ( BitStream + idx + 64 , 32 ) ;
uint32_t rawHi2 = bytebits_to_byte ( BitStream + idx + 32 , 32 ) ;
uint32_t rawHi3 = bytebits_to_byte ( BitStream + idx , 32 ) ;
2015-01-21 06:28:51 +08:00
setDemodBuf ( BitStream , 128 , idx ) ;
2015-01-19 07:13:32 +08:00
size = removeParity ( BitStream , idx + 8 , 8 , 1 , 120 ) ;
if ( size ! = 105 ) {
2015-01-21 06:28:51 +08:00
if ( g_debugMode = = 1 ) PrintAndLog ( " DEBUG: Error at parity check-tag size does not match Pyramid format, SIZE: %d, IDX: %d, hi3: %x " , size , idx , rawHi3 ) ;
2015-01-19 07:13:32 +08:00
return 0 ;
}
// ok valid card found!
// Index map
// 0 10 20 30 40 50 60 70
// | | | | | | | |
// 01234567890123456789012345678901234567890123456789012345678901234567890
// -----------------------------------------------------------------------
// 00000000000000000000000000000000000000000000000000000000000000000000000
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// 71 80 90 100
// | | | |
// 1 2 34567890 1234567890123456 7 8901234
// ---------------------------------------
// 1 1 01110011 0000000001000110 0 1001010
// s w ffffffff cccccccccccccccc w ppppppp
// |--115-| |------71------|
// s = format start bit, o = odd parity of last 7 bits
// f = facility code, c = card number
// w = wiegand parity, x = extra space for other formats
// p = unknown checksum
// (26 bit format shown)
//find start bit to get fmtLen
int j ;
for ( j = 0 ; j < size ; j + + ) {
2015-01-21 06:28:51 +08:00
if ( BitStream [ j ] ) break ;
2015-01-19 07:13:32 +08:00
}
uint8_t fmtLen = size - j - 8 ;
uint32_t fc = 0 ;
uint32_t cardnum = 0 ;
uint32_t code1 = 0 ;
//uint32_t code2 = 0;
if ( fmtLen = = 26 ) {
fc = bytebits_to_byte ( BitStream + 73 , 8 ) ;
cardnum = bytebits_to_byte ( BitStream + 81 , 16 ) ;
code1 = bytebits_to_byte ( BitStream + 72 , fmtLen ) ;
2015-01-21 06:28:51 +08:00
PrintAndLog ( " Pyramid ID Found - BitLength: %d, FC: %d, Card: %d - Wiegand: %x, Raw: %x%08x%08x%08x " , fmtLen , fc , cardnum , code1 , rawHi3 , rawHi2 , rawHi , rawLo ) ;
2015-01-19 07:13:32 +08:00
} else if ( fmtLen = = 45 ) {
fmtLen = 42 ; //end = 10 bits not 7 like 26 bit fmt
fc = bytebits_to_byte ( BitStream + 53 , 10 ) ;
cardnum = bytebits_to_byte ( BitStream + 63 , 32 ) ;
2015-01-21 06:28:51 +08:00
PrintAndLog ( " Pyramid ID Found - BitLength: %d, FC: %d, Card: %d - Raw: %x%08x%08x%08x " , fmtLen , fc , cardnum , rawHi3 , rawHi2 , rawHi , rawLo ) ;
2015-01-19 07:13:32 +08:00
} else {
cardnum = bytebits_to_byte ( BitStream + 81 , 16 ) ;
if ( fmtLen > 32 ) {
//code1 = bytebits_to_byte(BitStream+(size-fmtLen),fmtLen-32);
//code2 = bytebits_to_byte(BitStream+(size-32),32);
2015-01-21 06:28:51 +08:00
PrintAndLog ( " Pyramid ID Found - BitLength: %d -unknown BitLength- (%d), Raw: %x%08x%08x%08x " , fmtLen , cardnum , rawHi3 , rawHi2 , rawHi , rawLo ) ;
2015-01-19 07:13:32 +08:00
} else {
//code1 = bytebits_to_byte(BitStream+(size-fmtLen),fmtLen);
2015-01-21 06:28:51 +08:00
PrintAndLog ( " Pyramid ID Found - BitLength: %d -unknown BitLength- (%d), Raw: %x%08x%08x%08x " , fmtLen , cardnum , rawHi3 , rawHi2 , rawHi , rawLo ) ;
2015-01-19 07:13:32 +08:00
}
}
2015-01-21 06:28:51 +08:00
if ( g_debugMode ) {
PrintAndLog ( " DEBUG: idx: %d, Len: %d, Printing Demod Buffer: " , idx , 128 ) ;
printDemodBuff ( ) ;
}
2015-01-19 07:13:32 +08:00
return 1 ;
}
2014-12-23 06:46:28 +08:00
int CmdFSKdemod ( const char * Cmd ) //old CmdFSKdemod needs updating
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 const int LowTone [ ] = {
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
} ;
static const int HighTone [ ] = {
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 ,
} ;
int lowLen = sizeof ( LowTone ) / sizeof ( int ) ;
int highLen = sizeof ( HighTone ) / sizeof ( int ) ;
2015-01-08 05:00:29 +08:00
int convLen = ( highLen > lowLen ) ? highLen : lowLen ;
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
uint32_t hi = 0 , lo = 0 ;
int i , j ;
int minMark = 0 , maxMark = 0 ;
2015-01-09 05:23:45 +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
for ( i = 0 ; i < GraphTraceLen - convLen ; + + i ) {
int lowSum = 0 , highSum = 0 ;
for ( j = 0 ; j < lowLen ; + + j ) {
lowSum + = LowTone [ j ] * GraphBuffer [ i + j ] ;
}
for ( j = 0 ; j < highLen ; + + j ) {
highSum + = HighTone [ j ] * GraphBuffer [ i + j ] ;
}
lowSum = abs ( 100 * lowSum / lowLen ) ;
highSum = abs ( 100 * highSum / highLen ) ;
GraphBuffer [ i ] = ( highSum < < 16 ) | lowSum ;
}
for ( i = 0 ; i < GraphTraceLen - convLen - 16 ; + + i ) {
int lowTot = 0 , highTot = 0 ;
// 10 and 8 are f_s divided by f_l and f_h, rounded
for ( j = 0 ; j < 10 ; + + j ) {
lowTot + = ( GraphBuffer [ i + j ] & 0xffff ) ;
}
for ( j = 0 ; j < 8 ; j + + ) {
highTot + = ( GraphBuffer [ i + j ] > > 16 ) ;
}
GraphBuffer [ i ] = lowTot - highTot ;
if ( GraphBuffer [ i ] > maxMark ) maxMark = GraphBuffer [ i ] ;
if ( GraphBuffer [ i ] < minMark ) minMark = GraphBuffer [ i ] ;
}
GraphTraceLen - = ( convLen + 16 ) ;
RepaintGraphWindow ( ) ;
2014-12-20 01:14:27 +08:00
// Find bit-sync (3 lo followed by 3 high) (HID ONLY)
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 max = 0 , maxPos = 0 ;
for ( i = 0 ; i < 6000 ; + + i ) {
int dec = 0 ;
for ( j = 0 ; j < 3 * lowLen ; + + j ) {
dec - = GraphBuffer [ i + j ] ;
}
for ( ; j < 3 * ( lowLen + highLen ) ; + + j ) {
dec + = GraphBuffer [ i + j ] ;
}
if ( dec > max ) {
max = dec ;
maxPos = i ;
}
}
// place start of bit sync marker in graph
GraphBuffer [ maxPos ] = maxMark ;
GraphBuffer [ maxPos + 1 ] = minMark ;
maxPos + = j ;
// place end of bit sync marker in graph
GraphBuffer [ maxPos ] = maxMark ;
GraphBuffer [ maxPos + 1 ] = minMark ;
PrintAndLog ( " actual data bits start at sample %d " , maxPos ) ;
PrintAndLog ( " length %d/%d " , highLen , lowLen ) ;
2015-01-07 12:29:45 +08:00
2015-01-21 05:14:56 +08:00
uint8_t bits [ 46 ] = { 0x00 } ;
2015-01-07 12:29:45 +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
// find bit pairs and manchester decode them
for ( i = 0 ; i < arraylen ( bits ) - 1 ; + + i ) {
int dec = 0 ;
for ( j = 0 ; j < lowLen ; + + j ) {
dec - = GraphBuffer [ maxPos + j ] ;
}
for ( ; j < lowLen + highLen ; + + j ) {
dec + = GraphBuffer [ maxPos + j ] ;
}
maxPos + = j ;
// place inter bit marker in graph
GraphBuffer [ maxPos ] = maxMark ;
GraphBuffer [ maxPos + 1 ] = minMark ;
// hi and lo form a 64 bit pair
hi = ( hi < < 1 ) | ( lo > > 31 ) ;
lo = ( lo < < 1 ) ;
// store decoded bit as binary (in hi/lo) and text (in bits[])
if ( dec < 0 ) {
bits [ i ] = ' 1 ' ;
lo | = 1 ;
} else {
bits [ i ] = ' 0 ' ;
}
}
PrintAndLog ( " bits: '%s' " , bits ) ;
PrintAndLog ( " hex: %08x %08x " , hi , lo ) ;
return 0 ;
}
2014-12-23 06:46:28 +08:00
2015-01-21 06:28:51 +08:00
//by marshmellow
//attempt to detect the field clock and bit clock for FSK
2015-01-19 07:13:32 +08:00
int CmdFSKfcDetect ( const char * Cmd )
{
uint8_t BitStream [ MAX_GRAPH_TRACE_LEN ] = { 0 } ;
size_t size = getFromGraphBuf ( BitStream ) ;
2015-01-23 03:24:03 +08:00
uint16_t ans = countFC ( BitStream , size ) ;
if ( ans = = 0 ) {
if ( g_debugMode ) PrintAndLog ( " DEBUG: No data found " ) ;
return 0 ;
}
uint8_t fc1 , fc2 ;
2015-01-19 07:13:32 +08:00
fc1 = ( ans > > 8 ) & 0xFF ;
fc2 = ans & 0xFF ;
2015-01-23 03:24:03 +08:00
uint8_t rf1 = detectFSKClk ( BitStream , size , fc1 , fc2 ) ;
if ( rf1 = = 0 ) {
if ( g_debugMode ) PrintAndLog ( " DEBUG: Clock detect error " ) ;
return 0 ;
}
2015-01-19 07:13:32 +08:00
PrintAndLog ( " Detected Field Clocks: FC/%d, FC/%d - Bit Clock: RF/%d " , fc1 , fc2 , rf1 ) ;
return 1 ;
}
2015-01-27 06:49:30 +08:00
//by marshmellow
//attempt to detect the bit clock for PSK or NRZ modulations
2015-01-06 22:20:36 +08:00
int CmdDetectNRZpskClockRate ( const char * Cmd )
{
2015-01-07 12:29:45 +08:00
GetNRZpskClock ( " " , 0 , 0 ) ;
return 0 ;
2015-01-06 22:20:36 +08:00
}
2015-01-27 06:49:30 +08:00
//by marshmellow
//attempt to psk1 or nrz demod graph buffer
//NOTE CURRENTLY RELIES ON PEAKS :(
2015-01-27 06:23:19 +08:00
int PSKnrzDemod ( const char * Cmd , uint8_t verbose )
2015-01-21 06:28:51 +08:00
{
2015-01-07 12:29:45 +08:00
int invert = 0 ;
int clk = 0 ;
sscanf ( Cmd , " %i %i " , & clk , & invert ) ;
if ( invert ! = 0 & & invert ! = 1 ) {
PrintAndLog ( " Invalid argument: %s " , Cmd ) ;
return - 1 ;
}
uint8_t BitStream [ MAX_GRAPH_TRACE_LEN ] = { 0 } ;
size_t BitLen = getFromGraphBuf ( BitStream ) ;
int errCnt = 0 ;
errCnt = pskNRZrawDemod ( BitStream , & BitLen , & clk , & invert ) ;
if ( errCnt < 0 | | BitLen < 16 ) { //throw away static - allow 1 and -1 (in case of threshold command first)
2015-01-21 06:28:51 +08:00
if ( g_debugMode = = 1 ) PrintAndLog ( " no data found, clk: %d, invert: %d, numbits: %d, errCnt: %d " , clk , invert , BitLen , errCnt ) ;
2015-01-07 12:29:45 +08:00
return - 1 ;
}
2015-01-27 06:23:19 +08:00
if ( verbose ) PrintAndLog ( " Tried PSK/NRZ Demod using Clock: %d - invert: %d - Bits Found: %d " , clk , invert , BitLen ) ;
2015-01-07 12:29:45 +08:00
//prime demod buffer for output
2015-01-21 06:28:51 +08:00
setDemodBuf ( BitStream , BitLen , 0 ) ;
2015-01-07 12:29:45 +08:00
return errCnt ;
2015-01-06 22:20:36 +08:00
}
// Indala 26 bit decode
// by marshmellow
// optional arguments - same as CmdpskNRZrawDemod (clock & invert)
int CmdIndalaDecode ( const char * Cmd )
{
2015-01-14 06:21:36 +08:00
int ans ;
if ( strlen ( Cmd ) > 0 ) {
2015-01-27 06:23:19 +08:00
ans = PSKnrzDemod ( Cmd , 0 ) ;
2015-01-14 06:21:36 +08:00
} else { //default to RF/32
2015-01-27 06:23:19 +08:00
ans = PSKnrzDemod ( " 32 " , 0 ) ;
2015-01-14 06:21:36 +08:00
}
2015-01-06 22:20:36 +08:00
2015-01-07 12:29:45 +08:00
if ( ans < 0 ) {
2015-01-21 06:28:51 +08:00
if ( g_debugMode = = 1 )
2015-01-14 06:21:36 +08:00
PrintAndLog ( " Error1: %d " , ans ) ;
2015-01-07 12:29:45 +08:00
return 0 ;
}
uint8_t invert = 0 ;
ans = indala26decode ( DemodBuffer , ( size_t * ) & DemodBufferLen , & invert ) ;
if ( ans < 1 ) {
2015-01-21 06:28:51 +08:00
if ( g_debugMode = = 1 )
2015-01-14 06:21:36 +08:00
PrintAndLog ( " Error2: %d " , ans ) ;
2015-01-07 12:29:45 +08:00
return - 1 ;
}
2015-01-28 03:51:12 +08:00
char showbits [ 251 ] = { 0x00 } ;
2015-01-14 06:21:36 +08:00
if ( invert )
2015-01-21 06:28:51 +08:00
if ( g_debugMode = = 1 )
2015-01-14 06:21:36 +08:00
PrintAndLog ( " Had to invert bits " ) ;
2015-01-21 06:28:51 +08:00
2015-01-07 12:29:45 +08:00
//convert UID to HEX
uint32_t uid1 , uid2 , uid3 , uid4 , uid5 , uid6 , uid7 ;
int idx ;
uid1 = 0 ;
uid2 = 0 ;
PrintAndLog ( " BitLen: %d " , DemodBufferLen ) ;
if ( DemodBufferLen = = 64 ) {
for ( idx = 0 ; idx < 64 ; idx + + ) {
uid1 = ( uid1 < < 1 ) | ( uid2 > > 31 ) ;
if ( DemodBuffer [ idx ] = = 0 ) {
uid2 = ( uid2 < < 1 ) | 0 ;
showbits [ idx ] = ' 0 ' ;
} else {
uid2 = ( uid2 < < 1 ) | 1 ;
showbits [ idx ] = ' 1 ' ;
}
}
showbits [ idx ] = ' \0 ' ;
PrintAndLog ( " Indala UID=%s (%x%08x) " , showbits , uid1 , uid2 ) ;
}
else {
uid3 = 0 ;
uid4 = 0 ;
uid5 = 0 ;
uid6 = 0 ;
uid7 = 0 ;
for ( idx = 0 ; idx < DemodBufferLen ; 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 ) ;
if ( DemodBuffer [ idx ] = = 0 ) {
uid7 = ( uid7 < < 1 ) | 0 ;
showbits [ idx ] = ' 0 ' ;
}
else {
uid7 = ( uid7 < < 1 ) | 1 ;
showbits [ idx ] = ' 1 ' ;
}
}
showbits [ idx ] = ' \0 ' ;
PrintAndLog ( " Indala UID=%s (%x%08x%08x%08x%08x%08x%08x) " , showbits , uid1 , uid2 , uid3 , uid4 , uid5 , uid6 , uid7 ) ;
}
2015-01-28 03:51:12 +08:00
if ( g_debugMode ) {
PrintAndLog ( " DEBUG: printing demodbuffer: " ) ;
printDemodBuff ( ) ;
}
2015-01-07 12:29:45 +08:00
return 1 ;
2015-01-06 22:20:36 +08:00
}
2015-01-27 06:49:30 +08:00
//by marshmellow
//attempt to clean psk wave noise after a peak
//NOTE RELIES ON PEAKS :(
2015-01-06 22:20:36 +08:00
int CmdPskClean ( const char * Cmd )
{
2015-01-07 12:29:45 +08:00
uint8_t bitStream [ MAX_GRAPH_TRACE_LEN ] = { 0 } ;
size_t bitLen = getFromGraphBuf ( bitStream ) ;
pskCleanWave ( bitStream , bitLen ) ;
setGraphBuf ( bitStream , bitLen ) ;
return 0 ;
2015-01-06 22:20:36 +08:00
}
2015-01-27 06:23:19 +08:00
// by marshmellow
// takes 2 arguments - clock and invert both as integers
// attempts to demodulate psk only
// prints binary found and saves in demodbuffer for further commands
2015-01-06 22:20:36 +08:00
int CmdpskNRZrawDemod ( const char * Cmd )
{
2015-01-14 06:21:36 +08:00
int errCnt ;
2015-01-21 06:28:51 +08:00
2015-01-27 06:23:19 +08:00
errCnt = PSKnrzDemod ( Cmd , 1 ) ;
2015-01-07 12:29:45 +08:00
//output
2015-01-21 06:28:51 +08:00
if ( errCnt < 0 ) {
if ( g_debugMode ) PrintAndLog ( " Error demoding: %d " , errCnt ) ;
return 0 ;
}
2015-01-07 12:29:45 +08:00
if ( errCnt > 0 ) {
2015-01-21 06:28:51 +08:00
if ( g_debugMode ) {
2015-01-14 06:21:36 +08:00
PrintAndLog ( " # Errors during Demoding (shown as 77 in bit stream): %d " , errCnt ) ;
2015-01-21 06:28:51 +08:00
PrintAndLog ( " PSK or NRZ demoded bitstream: " ) ;
// Now output the bitstream to the scrollback by line of 16 bits
printDemodBuff ( ) ;
}
} else {
PrintAndLog ( " PSK or NRZ demoded bitstream: " ) ;
// Now output the bitstream to the scrollback by line of 16 bits
printDemodBuff ( ) ;
return 1 ;
}
return 0 ;
2015-01-06 22:20:36 +08:00
}
2015-01-27 06:23:19 +08:00
// by marshmellow
// takes same args as cmdpsknrzrawdemod
int CmdPSK2rawDemod ( const char * Cmd )
{
int errCnt = 0 ;
errCnt = PSKnrzDemod ( Cmd , 1 ) ;
if ( errCnt < 0 ) {
if ( g_debugMode ) PrintAndLog ( " Error demoding: %d " , errCnt ) ;
return 0 ;
}
psk1TOpsk2 ( DemodBuffer , DemodBufferLen ) ;
if ( errCnt > 0 ) {
if ( g_debugMode ) {
PrintAndLog ( " # Errors during Demoding (shown as 77 in bit stream): %d " , errCnt ) ;
PrintAndLog ( " PSK2 demoded bitstream: " ) ;
// Now output the bitstream to the scrollback by line of 16 bits
printDemodBuff ( ) ;
}
} else {
PrintAndLog ( " PSK2 demoded bitstream: " ) ;
// Now output the bitstream to the scrollback by line of 16 bits
printDemodBuff ( ) ;
}
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
int CmdGrid ( const char * Cmd )
{
sscanf ( Cmd , " %i %i " , & PlotGridX , & PlotGridY ) ;
2012-01-21 21:32:54 +08:00
PlotGridXdefault = PlotGridX ;
PlotGridYdefault = PlotGridY ;
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
RepaintGraphWindow ( ) ;
return 0 ;
}
int CmdHexsamples ( const char * Cmd )
{
2013-07-13 04:03:31 +08:00
int i , j ;
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 requested = 0 ;
int offset = 0 ;
2013-07-13 04:03:31 +08:00
char string_buf [ 25 ] ;
char * string_ptr = string_buf ;
2015-01-27 15:34:48 +08:00
uint8_t got [ BIGBUF_SIZE ] ;
2015-01-09 05:23:45 +08:00
2013-07-13 04:03:31 +08:00
sscanf ( Cmd , " %i %i " , & requested , & offset ) ;
2013-04-27 04:33:05 +08:00
2013-07-13 04:03:31 +08:00
/* if no args send something */
if ( requested = = 0 ) {
2013-04-27 04:33:05 +08:00
requested = 8 ;
}
if ( offset + requested > sizeof ( got ) ) {
2015-01-27 15:34:48 +08:00
PrintAndLog ( " Tried to read past end of buffer, <bytes> + <offset> > %d " , BIGBUF_SIZE ) ;
2013-07-13 04:03:31 +08:00
return 0 ;
2015-01-09 05:23:45 +08:00
}
2013-04-27 04:33:05 +08:00
2013-07-13 04:03:31 +08:00
GetFromBigBuf ( got , requested , offset ) ;
2013-04-27 04:33:05 +08:00
WaitForResponse ( CMD_ACK , NULL ) ;
2013-07-13 04:03:31 +08:00
i = 0 ;
for ( j = 0 ; j < requested ; j + + ) {
i + + ;
string_ptr + = sprintf ( string_ptr , " %02x " , got [ j ] ) ;
if ( i = = 8 ) {
* ( string_ptr - 1 ) = ' \0 ' ; // remove the trailing space
PrintAndLog ( " %s " , string_buf ) ;
string_buf [ 0 ] = ' \0 ' ;
string_ptr = string_buf ;
i = 0 ;
}
if ( j = = requested - 1 & & string_buf [ 0 ] ! = ' \0 ' ) { // print any remaining bytes
* ( string_ptr - 1 ) = ' \0 ' ;
PrintAndLog ( " %s " , string_buf ) ;
string_buf [ 0 ] = ' \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-01-07 12:29:45 +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
return 0 ;
}
int CmdHide ( const char * Cmd )
{
HideGraphWindow ( ) ;
return 0 ;
}
int CmdHpf ( const char * Cmd )
{
int i ;
int accum = 0 ;
for ( i = 10 ; i < GraphTraceLen ; + + i )
accum + = GraphBuffer [ i ] ;
accum / = ( GraphTraceLen - 10 ) ;
for ( i = 0 ; i < GraphTraceLen ; + + i )
GraphBuffer [ i ] - = accum ;
RepaintGraphWindow ( ) ;
return 0 ;
}
2010-02-07 02:06:31 +08:00
int CmdSamples ( 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-27 15:34:48 +08:00
uint8_t got [ BIGBUF_SIZE ] = { 0x00 } ;
2015-01-07 12:29:45 +08:00
2015-01-08 08:06:29 +08:00
int n = strtol ( Cmd , NULL , 0 ) ;
if ( n = = 0 )
n = 20000 ;
if ( n > sizeof ( got ) )
n = sizeof ( got ) ;
2015-01-07 12:29:45 +08:00
2015-01-08 08:06:29 +08:00
PrintAndLog ( " Reading %d samples from device memory \n " , n ) ;
2015-01-27 15:34:48 +08:00
GetFromBigBuf ( got , n , 0 ) ;
WaitForResponse ( CMD_ACK , NULL ) ;
2015-01-07 12:29:45 +08:00
for ( int j = 0 ; j < n ; j + + ) {
2015-01-08 08:06:29 +08:00
GraphBuffer [ j ] = ( ( int ) got [ j ] ) - 128 ;
2015-01-27 15:34:48 +08:00
}
GraphTraceLen = n ;
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
}
2014-12-01 05:30:36 +08:00
int CmdTuneSamples ( const char * Cmd )
{
2015-01-08 05:34:02 +08:00
int timeout = 0 ;
printf ( " \n Measuring antenna characteristics, please wait... " ) ;
2015-01-07 12:29:45 +08:00
2015-01-08 05:34:02 +08:00
UsbCommand c = { CMD_MEASURE_ANTENNA_TUNING } ;
SendCommand ( & c ) ;
UsbCommand resp ;
while ( ! WaitForResponseTimeout ( CMD_MEASURED_ANTENNA_TUNING , & resp , 1000 ) ) {
timeout + + ;
printf ( " . " ) ;
if ( timeout > 7 ) {
PrintAndLog ( " \n No response from Proxmark. Aborting... " ) ;
return 1 ;
}
}
int peakv , peakf ;
int vLf125 , vLf134 , vHf ;
vLf125 = resp . arg [ 0 ] & 0xffff ;
vLf134 = resp . arg [ 0 ] > > 16 ;
vHf = resp . arg [ 1 ] & 0xffff ; ;
peakf = resp . arg [ 2 ] & 0xffff ;
peakv = resp . arg [ 2 ] > > 16 ;
PrintAndLog ( " " ) ;
PrintAndLog ( " # LF antenna: %5.2f V @ 125.00 kHz " , vLf125 / 1000.0 ) ;
PrintAndLog ( " # LF antenna: %5.2f V @ 134.00 kHz " , vLf134 / 1000.0 ) ;
PrintAndLog ( " # LF optimal: %5.2f V @%9.2f kHz " , peakv / 1000.0 , 12000.0 / ( peakf + 1 ) ) ;
PrintAndLog ( " # HF antenna: %5.2f V @ 13.56 MHz " , vHf / 1000.0 ) ;
if ( peakv < 2000 )
PrintAndLog ( " # Your LF antenna is unusable. " ) ;
else if ( peakv < 10000 )
PrintAndLog ( " # Your LF antenna is marginal. " ) ;
if ( vHf < 2000 )
PrintAndLog ( " # Your HF antenna is unusable. " ) ;
else if ( vHf < 5000 )
PrintAndLog ( " # Your HF antenna is marginal. " ) ;
for ( int i = 0 ; i < 256 ; i + + ) {
GraphBuffer [ i ] = resp . d . asBytes [ i ] - 128 ;
2015-01-07 12:29:45 +08:00
}
2014-12-31 05:08:33 +08:00
PrintAndLog ( " Done! Divisor 89 is 134khz, 95 is 125khz. \n " ) ;
PrintAndLog ( " \n " ) ;
2015-01-08 05:34:02 +08:00
GraphTraceLen = 256 ;
ShowGraphWindow ( ) ;
return 0 ;
2014-12-01 05:30:36 +08:00
}
2015-01-08 05:34:02 +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 CmdLoad ( const char * Cmd )
{
2015-01-21 06:28:51 +08:00
char filename [ FILE_PATH_SIZE ] = { 0x00 } ;
int len = 0 ;
2015-01-08 05:00:29 +08:00
2015-01-21 06:28:51 +08:00
len = strlen ( Cmd ) ;
if ( len > FILE_PATH_SIZE ) len = FILE_PATH_SIZE ;
memcpy ( filename , Cmd , len ) ;
2015-01-08 05:00:29 +08:00
2015-01-21 06:28:51 +08:00
FILE * f = fopen ( filename , " r " ) ;
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
if ( ! f ) {
2015-01-08 05:00:29 +08:00
PrintAndLog ( " couldn't open '%s' " , filename ) ;
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
return 0 ;
}
GraphTraceLen = 0 ;
char line [ 80 ] ;
while ( fgets ( line , sizeof ( line ) , f ) ) {
GraphBuffer [ GraphTraceLen ] = atoi ( line ) ;
GraphTraceLen + + ;
}
fclose ( f ) ;
PrintAndLog ( " loaded %d samples " , GraphTraceLen ) ;
RepaintGraphWindow ( ) ;
return 0 ;
}
int CmdLtrim ( const char * Cmd )
{
int ds = atoi ( Cmd ) ;
for ( int i = ds ; i < GraphTraceLen ; + + i )
GraphBuffer [ i - ds ] = GraphBuffer [ i ] ;
GraphTraceLen - = ds ;
RepaintGraphWindow ( ) ;
return 0 ;
}
2015-01-21 06:28:51 +08:00
// trim graph to input argument length
2015-01-01 03:43:49 +08:00
int CmdRtrim ( const char * Cmd )
{
int ds = atoi ( Cmd ) ;
GraphTraceLen = ds ;
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
/*
* Manchester demodulate a bitstream . The bitstream needs to be already in
* the GraphBuffer as 0 and 1 values
*
* Give the clock rate as argument in order to help the sync - the algorithm
* resyncs at each pulse anyway .
*
* Not optimized by any means , this is the 1 st time I ' m writing this type of
* routine , feel free to improve . . .
*
* 1 st argument : clock rate ( as number of samples per clock rate )
* Typical values can be 64 , 32 , 128. . .
*/
int CmdManchesterDemod ( const char * Cmd )
{
int i , j , invert = 0 ;
int bit ;
int clock ;
2010-02-22 04:01:56 +08:00
int lastval = 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 low = 0 ;
int high = 0 ;
int hithigh , hitlow , first ;
int lc = 0 ;
int bitidx = 0 ;
int bit2idx = 0 ;
int warnings = 0 ;
/* check if we're inverting output */
2010-03-06 16:01:08 +08:00
if ( * Cmd = = ' i ' )
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
{
PrintAndLog ( " Inverting output " ) ;
invert = 1 ;
2010-02-16 05:15:52 +08:00
+ + 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
do
+ + Cmd ;
while ( * Cmd = = ' ' ) ; // in case a 2nd argument was given
}
/* Holds the decoded bitstream: each clock period contains 2 bits */
/* later simplified to 1 bit after manchester decoding. */
/* Add 10 bits to allow for noisy / uncertain traces without aborting */
/* int BitStream[GraphTraceLen*2/clock+10]; */
/* But it does not work if compiling on WIndows: therefore we just allocate a */
/* large array */
2014-10-28 04:46:04 +08:00
uint8_t BitStream [ MAX_GRAPH_TRACE_LEN ] = { 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
/* Detect high and lows */
for ( i = 0 ; i < GraphTraceLen ; i + + )
{
if ( GraphBuffer [ i ] > high )
high = GraphBuffer [ i ] ;
else if ( GraphBuffer [ i ] < low )
low = GraphBuffer [ i ] ;
}
/* Get our clock */
clock = GetClock ( Cmd , high , 1 ) ;
int tolerance = clock / 4 ;
/* Detect first transition */
/* Lo-Hi (arbitrary) */
/* skip to the first high */
for ( i = 0 ; i < GraphTraceLen ; i + + )
if ( GraphBuffer [ i ] = = high )
break ;
/* now look for the first low */
for ( ; i < GraphTraceLen ; i + + )
{
if ( GraphBuffer [ i ] = = low )
{
lastval = i ;
break ;
}
}
/* If we're not working with 1/0s, demod based off clock */
if ( high ! = 1 )
{
bit = 0 ; /* We assume the 1st bit is zero, it may not be
* the case : this routine ( I think ) has an init problem .
* Ed .
*/
for ( ; i < ( int ) ( GraphTraceLen / clock ) ; i + + )
{
hithigh = 0 ;
hitlow = 0 ;
first = 1 ;
/* Find out if we hit both high and low peaks */
for ( j = 0 ; j < clock ; j + + )
{
if ( GraphBuffer [ ( i * clock ) + j ] = = high )
hithigh = 1 ;
else if ( GraphBuffer [ ( i * clock ) + j ] = = low )
hitlow = 1 ;
/* it doesn't count if it's the first part of our read
because it ' s really just trailing from the last sequence */
if ( first & & ( hithigh | | hitlow ) )
hithigh = hitlow = 0 ;
else
first = 0 ;
if ( hithigh & & hitlow )
break ;
}
/* If we didn't hit both high and low peaks, we had a bit transition */
if ( ! hithigh | | ! hitlow )
bit ^ = 1 ;
BitStream [ bit2idx + + ] = bit ^ invert ;
}
}
/* standard 1/0 bitstream */
else
{
/* Then detect duration between 2 successive transitions */
for ( bitidx = 1 ; i < GraphTraceLen ; i + + )
{
if ( GraphBuffer [ i - 1 ] ! = GraphBuffer [ i ] )
{
2014-12-20 01:14:27 +08:00
lc = i - lastval ;
lastval = i ;
// Error check: if bitidx becomes too large, we do not
// have a Manchester encoded bitstream or the clock is really
// wrong!
if ( bitidx > ( GraphTraceLen * 2 / clock + 8 ) ) {
PrintAndLog ( " Error: the clock you gave is probably wrong, aborting. " ) ;
return 0 ;
}
// Then switch depending on lc length:
// Tolerance is 1/4 of clock rate (arbitrary)
if ( abs ( lc - clock / 2 ) < tolerance ) {
// Short pulse : either "1" or "0"
BitStream [ bitidx + + ] = GraphBuffer [ i - 1 ] ;
} else if ( abs ( lc - clock ) < tolerance ) {
// Long pulse: either "11" or "00"
BitStream [ bitidx + + ] = GraphBuffer [ i - 1 ] ;
BitStream [ bitidx + + ] = GraphBuffer [ i - 1 ] ;
} else {
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
// Error
warnings + + ;
2014-12-20 01:14:27 +08:00
PrintAndLog ( " Warning: Manchester decode error for pulse width detection. " ) ;
PrintAndLog ( " (too many of those messages mean either the stream is not Manchester encoded, or clock is wrong) " ) ;
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
if ( warnings > 10 )
{
PrintAndLog ( " Error: too many detection errors, aborting. " ) ;
return 0 ;
}
}
}
}
// At this stage, we now have a bitstream of "01" ("1") or "10" ("0"), parse it into final decoded bitstream
// Actually, we overwrite BitStream with the new decoded bitstream, we just need to be careful
// to stop output at the final bitidx2 value, not bitidx
for ( i = 0 ; i < bitidx ; i + = 2 ) {
if ( ( BitStream [ i ] = = 0 ) & & ( BitStream [ i + 1 ] = = 1 ) ) {
BitStream [ bit2idx + + ] = 1 ^ invert ;
2014-12-20 01:14:27 +08:00
} else if ( ( BitStream [ i ] = = 1 ) & & ( BitStream [ i + 1 ] = = 0 ) ) {
BitStream [ bit2idx + + ] = 0 ^ invert ;
} else {
// We cannot end up in this state, this means we are unsynchronized,
// move up 1 bit:
i + + ;
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
warnings + + ;
2014-12-20 01:14:27 +08:00
PrintAndLog ( " Unsynchronized, resync... " ) ;
PrintAndLog ( " (too many of those messages mean the stream is not Manchester encoded) " ) ;
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
if ( warnings > 10 )
{
PrintAndLog ( " Error: too many decode errors, aborting. " ) ;
return 0 ;
}
}
}
}
PrintAndLog ( " Manchester decoded bitstream " ) ;
// Now output the bitstream to the scrollback by line of 16 bits
for ( i = 0 ; i < ( bit2idx - 16 ) ; i + = 16 ) {
PrintAndLog ( " %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i " ,
BitStream [ i ] ,
BitStream [ i + 1 ] ,
BitStream [ i + 2 ] ,
BitStream [ i + 3 ] ,
BitStream [ i + 4 ] ,
BitStream [ i + 5 ] ,
BitStream [ i + 6 ] ,
BitStream [ i + 7 ] ,
BitStream [ i + 8 ] ,
BitStream [ i + 9 ] ,
BitStream [ i + 10 ] ,
BitStream [ i + 11 ] ,
BitStream [ i + 12 ] ,
BitStream [ i + 13 ] ,
BitStream [ i + 14 ] ,
BitStream [ i + 15 ] ) ;
}
return 0 ;
}
/* Modulate our data into manchester */
int CmdManchesterMod ( const char * Cmd )
{
int i , j ;
int clock ;
int bit , lastbit , wave ;
/* Get our clock */
clock = GetClock ( Cmd , 0 , 1 ) ;
wave = 0 ;
lastbit = 1 ;
for ( i = 0 ; i < ( int ) ( GraphTraceLen / clock ) ; i + + )
{
bit = GraphBuffer [ i * clock ] ^ 1 ;
for ( j = 0 ; j < ( int ) ( clock / 2 ) ; j + + )
GraphBuffer [ ( i * clock ) + j ] = bit ^ lastbit ^ wave ;
for ( j = ( int ) ( clock / 2 ) ; j < clock ; j + + )
GraphBuffer [ ( i * clock ) + j ] = bit ^ lastbit ^ wave ^ 1 ;
/* Keep track of how we start our wave and if we changed or not this time */
wave ^ = bit ^ lastbit ;
lastbit = bit ;
}
RepaintGraphWindow ( ) ;
return 0 ;
}
int CmdNorm ( const char * Cmd )
{
int i ;
int max = INT_MIN , min = INT_MAX ;
for ( i = 10 ; i < GraphTraceLen ; + + i ) {
if ( GraphBuffer [ i ] > max )
max = GraphBuffer [ i ] ;
if ( GraphBuffer [ i ] < min )
min = GraphBuffer [ i ] ;
}
if ( max ! = min ) {
for ( i = 0 ; i < GraphTraceLen ; + + i ) {
2015-01-07 12:29:45 +08:00
GraphBuffer [ i ] = ( GraphBuffer [ i ] - ( ( max + min ) / 2 ) ) * 256 /
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
( max - min ) ;
2015-01-07 12:29:45 +08:00
//marshmelow: adjusted *1000 to *256 to make +/- 128 so demod commands still work
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
}
}
RepaintGraphWindow ( ) ;
return 0 ;
}
int CmdPlot ( const char * Cmd )
{
ShowGraphWindow ( ) ;
return 0 ;
}
int CmdSave ( const char * Cmd )
{
2015-01-21 06:28:51 +08:00
char filename [ FILE_PATH_SIZE ] = { 0x00 } ;
int len = 0 ;
2015-01-08 05:00:29 +08:00
2015-01-21 06:28:51 +08:00
len = strlen ( Cmd ) ;
if ( len > FILE_PATH_SIZE ) len = FILE_PATH_SIZE ;
memcpy ( filename , Cmd , len ) ;
2015-01-08 05:00:29 +08:00
FILE * f = fopen ( filename , " w " ) ;
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
if ( ! f ) {
2015-01-08 05:00:29 +08:00
PrintAndLog ( " couldn't open '%s' " , filename ) ;
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
return 0 ;
}
int i ;
for ( i = 0 ; i < GraphTraceLen ; i + + ) {
fprintf ( f , " %d \n " , GraphBuffer [ i ] ) ;
}
fclose ( f ) ;
PrintAndLog ( " saved to '%s' " , Cmd ) ;
return 0 ;
}
int CmdScale ( const char * Cmd )
{
CursorScaleFactor = atoi ( Cmd ) ;
if ( CursorScaleFactor = = 0 ) {
PrintAndLog ( " bad, can't have zero scale " ) ;
CursorScaleFactor = 1 ;
}
RepaintGraphWindow ( ) ;
return 0 ;
}
int CmdThreshold ( const char * Cmd )
{
int threshold = atoi ( Cmd ) ;
for ( int i = 0 ; i < GraphTraceLen ; + + i ) {
if ( GraphBuffer [ i ] > = threshold )
GraphBuffer [ i ] = 1 ;
else
2013-09-25 18:40:16 +08:00
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
}
RepaintGraphWindow ( ) ;
return 0 ;
}
2014-06-11 14:42:37 +08:00
int CmdDirectionalThreshold ( const char * Cmd )
{
int8_t upThres = param_get8 ( Cmd , 0 ) ;
int8_t downThres = param_get8 ( Cmd , 1 ) ;
2015-01-07 12:29:45 +08:00
2014-06-11 14:42:37 +08:00
printf ( " Applying Up Threshold: %d, Down Threshold: %d \n " , upThres , downThres ) ;
2015-01-09 05:23:45 +08:00
2014-06-11 14:42:37 +08:00
int lastValue = GraphBuffer [ 0 ] ;
GraphBuffer [ 0 ] = 0 ; // Will be changed at the end, but init 0 as we adjust to last samples value if no threshold kicks in.
2015-01-09 05:23:45 +08:00
2014-06-11 14:42:37 +08:00
for ( int i = 1 ; i < GraphTraceLen ; + + i ) {
// Apply first threshold to samples heading up
if ( GraphBuffer [ i ] > = upThres & & GraphBuffer [ i ] > lastValue )
{
lastValue = GraphBuffer [ i ] ; // Buffer last value as we overwrite it.
GraphBuffer [ i ] = 1 ;
}
// Apply second threshold to samples heading down
else if ( GraphBuffer [ i ] < = downThres & & GraphBuffer [ i ] < lastValue )
{
lastValue = GraphBuffer [ i ] ; // Buffer last value as we overwrite it.
GraphBuffer [ i ] = - 1 ;
}
else
{
lastValue = GraphBuffer [ i ] ; // Buffer last value as we overwrite it.
GraphBuffer [ i ] = GraphBuffer [ i - 1 ] ;
}
}
GraphBuffer [ 0 ] = GraphBuffer [ 1 ] ; // Aline with first edited sample.
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
int CmdZerocrossings ( const char * Cmd )
{
// Zero-crossings aren't meaningful unless the signal is zero-mean.
CmdHpf ( " " ) ;
int sign = 1 ;
int zc = 0 ;
int lastZc = 0 ;
for ( int i = 0 ; i < GraphTraceLen ; + + i ) {
if ( GraphBuffer [ i ] * sign > = 0 ) {
// No change in sign, reproduce the previous sample count.
zc + + ;
GraphBuffer [ i ] = lastZc ;
} else {
// Change in sign, reset the sample count.
sign = - sign ;
GraphBuffer [ i ] = lastZc ;
if ( sign > 0 ) {
lastZc = zc ;
zc = 0 ;
}
}
}
RepaintGraphWindow ( ) ;
return 0 ;
}
2015-01-07 12:29:45 +08:00
static command_t CommandTable [ ] =
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
{
{ " help " , CmdHelp , 1 , " This help " } ,
{ " amp " , CmdAmp , 1 , " Amplify peaks " } ,
2014-03-27 05:35:25 +08:00
{ " askdemod " , Cmdaskdemod , 1 , " <0 or 1> -- Attempt to demodulate simple ASK tags " } ,
2015-01-19 07:13:32 +08:00
{ " askmandemod " , Cmdaskmandemod , 1 , " [clock] [invert<0|1>] -- Attempt to demodulate ASK/Manchester tags and output binary (args optional) " } ,
{ " askrawdemod " , Cmdaskrawdemod , 1 , " [clock] [invert<0|1>] -- Attempt to demodulate ASK tags and output bin (args optional) " } ,
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
{ " autocorr " , CmdAutoCorr , 1 , " <window length> -- Autocorrelation over window " } ,
2015-01-19 07:13:32 +08:00
{ " biphaserawdecode " , CmdBiphaseDecodeRaw , 1 , " [offset] [invert<0|1>] Biphase decode bin stream in demod buffer (offset = 0|1 bits to shift the decode start) " } ,
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
{ " bitsamples " , CmdBitsamples , 0 , " Get raw samples as bitstring " } ,
{ " bitstream " , CmdBitstream , 1 , " [clock rate] -- Convert waveform into a bitstream " } ,
{ " buffclear " , CmdBuffClear , 1 , " Clear sample buffer and graph window " } ,
{ " dec " , CmdDec , 1 , " Decimate samples " } ,
2015-01-07 12:29:45 +08:00
{ " detectclock " , CmdDetectClockRate , 1 , " Detect ASK clock rate " } ,
2014-12-23 06:46:28 +08:00
{ " fskdemod " , CmdFSKdemod , 1 , " Demodulate graph window as a HID FSK " } ,
2015-01-19 07:13:32 +08:00
{ " fskawiddemod " , CmdFSKdemodAWID , 1 , " Demodulate graph window as an AWID FSK tag using raw " } ,
{ " fskfcdetect " , CmdFSKfcDetect , 1 , " Try to detect the Field Clock of an FSK wave " } ,
{ " fskhiddemod " , CmdFSKdemodHID , 1 , " Demodulate graph window as a HID FSK tag using raw " } ,
{ " fskiodemod " , CmdFSKdemodIO , 1 , " Demodulate graph window as an IO Prox tag FSK using raw " } ,
{ " fskpyramiddemod " , CmdFSKdemodPyramid , 1 , " Demodulate graph window as a Pyramid FSK tag using raw " } ,
2015-01-21 06:28:51 +08:00
{ " fskparadoxdemod " , CmdFSKdemodParadox , 1 , " Demodulate graph window as a Paradox FSK tag using raw " } ,
2015-01-19 07:13:32 +08:00
{ " fskrawdemod " , CmdFSKrawdemod , 1 , " [clock rate] [invert] [rchigh] [rclow] Demodulate graph window from FSK to bin (clock = 50)(invert = 1|0)(rchigh = 10)(rclow=8) " } ,
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
{ " grid " , CmdGrid , 1 , " <x> <y> -- overlay grid on graph window, use zero value to turn off either " } ,
2015-01-07 12:29:45 +08:00
{ " hexsamples " , CmdHexsamples , 0 , " <bytes> [<offset>] -- Dump big buffer as hex bytes " } ,
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
{ " hide " , CmdHide , 1 , " Hide graph window " } ,
{ " hpf " , CmdHpf , 1 , " Remove DC offset from trace " } ,
{ " load " , CmdLoad , 1 , " <filename> -- Load trace (to graph window " } ,
{ " ltrim " , CmdLtrim , 1 , " <samples> -- Trim samples from left of trace " } ,
2015-01-01 03:43:49 +08:00
{ " rtrim " , CmdRtrim , 1 , " <location to end trace> -- Trim samples from right of trace " } ,
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
{ " mandemod " , CmdManchesterDemod , 1 , " [i] [clock rate] -- Manchester demodulate binary stream (option 'i' to invert output) " } ,
2014-12-29 09:33:32 +08:00
{ " manrawdecode " , Cmdmandecoderaw , 1 , " Manchester decode binary stream already in graph buffer " } ,
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
{ " manmod " , CmdManchesterMod , 1 , " [clock rate] -- Manchester modulate a binary stream " } ,
2015-01-07 12:29:45 +08:00
{ " norm " , CmdNorm , 1 , " Normalize max/min to +/-128 " } ,
2012-01-21 21:32:54 +08:00
{ " plot " , CmdPlot , 1 , " Show graph window (hit 'h' in window for keystroke help) " } ,
2015-01-07 12:29:45 +08:00
{ " pskclean " , CmdPskClean , 1 , " Attempt to clean psk wave " } ,
{ " pskdetectclock " , CmdDetectNRZpskClockRate , 1 , " Detect ASK, PSK, or NRZ clock rate " } ,
2015-01-27 06:23:19 +08:00
{ " pskindalademod " , CmdIndalaDecode , 1 , " [clock] [invert<0|1>] -- Attempt to demodulate psk1 indala tags and output ID binary & hex (args optional) " } ,
{ " psk1nrzrawdemod " , CmdpskNRZrawDemod , 1 , " [clock] [invert<0|1>] -- Attempt to demodulate psk1 or nrz tags and output binary (args optional) " } ,
{ " psk2rawdemod " , CmdPSK2rawDemod , 1 , " [clock] [invert<0|1>] -- Attempt to demodulate psk2 tags and output binary (args optional) " } ,
2013-04-27 04:33:05 +08:00
{ " samples " , CmdSamples , 0 , " [512 - 40000] -- Get raw samples for graph window " } ,
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
{ " save " , CmdSave , 1 , " <filename> -- Save trace (from graph window) " } ,
{ " scale " , CmdScale , 1 , " <int> -- Set cursor display scale " } ,
2015-01-21 06:28:51 +08:00
{ " setdebugmode " , CmdSetDebugMode , 1 , " <0|1> -- Turn on or off Debugging Mode for demods " } ,
{ " shiftgraphzero " , CmdGraphShiftZero , 1 , " <shift> -- Shift 0 for Graphed wave + or - shift value " } ,
2010-02-09 06:02:18 +08:00
{ " threshold " , CmdThreshold , 1 , " <threshold> -- Maximize/minimize every value in the graph window depending on threshold " } ,
2015-01-07 12:29:45 +08:00
{ " dirthreshold " , CmdDirectionalThreshold , 1 , " <thres up> <thres down> -- Max rising higher up-thres/ Min falling lower down-thres, keep rest as prev. " } ,
{ " tune " , CmdTuneSamples , 0 , " Get hw tune samples for graph window " } ,
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
{ " zerocrossings " , CmdZerocrossings , 1 , " Count time between zero-crossings " } ,
{ NULL , NULL , 0 , NULL }
} ;
int CmdData ( const char * Cmd )
{
CmdsParse ( CommandTable , Cmd ) ;
return 0 ;
}
int CmdHelp ( const char * Cmd )
{
CmdsHelp ( CommandTable ) ;
return 0 ;
}