mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 05:13:46 -07:00
CHG: syntax suger
This commit is contained in:
parent
dd79e03a1a
commit
5cc88edfaf
3 changed files with 51 additions and 56 deletions
|
@ -94,7 +94,6 @@ static uint64_t cipher_state;
|
||||||
#define rotl64(x, n) ((((u64)(x))<<((n)&63))+(((u64)(x))>>((0-(n))&63)))
|
#define rotl64(x, n) ((((u64)(x))<<((n)&63))+(((u64)(x))>>((0-(n))&63)))
|
||||||
|
|
||||||
// Single bit Hitag2 functions:
|
// Single bit Hitag2 functions:
|
||||||
|
|
||||||
#define i4(x,a,b,c,d) ((u32)((((x)>>(a))&1)+(((x)>>(b))&1)*2+(((x)>>(c))&1)*4+(((x)>>(d))&1)*8))
|
#define i4(x,a,b,c,d) ((u32)((((x)>>(a))&1)+(((x)>>(b))&1)*2+(((x)>>(c))&1)*4+(((x)>>(d))&1)*8))
|
||||||
|
|
||||||
static const u32 ht2_f4a = 0x2C79; // 0010 1100 0111 1001
|
static const u32 ht2_f4a = 0x2C79; // 0010 1100 0111 1001
|
||||||
|
@ -103,7 +102,7 @@ static const u32 ht2_f5c = 0x7907287B; // 0111 1001 0000 0111 0010 1000 0111 101
|
||||||
|
|
||||||
static u32 _f20 (const u64 x)
|
static u32 _f20 (const u64 x)
|
||||||
{
|
{
|
||||||
u32 i5;
|
u32 i5;
|
||||||
|
|
||||||
i5 = ((ht2_f4a >> i4 (x, 1, 2, 4, 5)) & 1)* 1
|
i5 = ((ht2_f4a >> i4 (x, 1, 2, 4, 5)) & 1)* 1
|
||||||
+ ((ht2_f4b >> i4 (x, 7,11,13,14)) & 1)* 2
|
+ ((ht2_f4b >> i4 (x, 7,11,13,14)) & 1)* 2
|
||||||
|
@ -116,8 +115,8 @@ static u32 _f20 (const u64 x)
|
||||||
|
|
||||||
static u64 _hitag2_init (const u64 key, const u32 serial, const u32 IV)
|
static u64 _hitag2_init (const u64 key, const u32 serial, const u32 IV)
|
||||||
{
|
{
|
||||||
u32 i;
|
u32 i;
|
||||||
u64 x = ((key & 0xFFFF) << 32) + serial;
|
u64 x = ((key & 0xFFFF) << 32) + serial;
|
||||||
|
|
||||||
for (i = 0; i < 32; i++)
|
for (i = 0; i < 32; i++)
|
||||||
{
|
{
|
||||||
|
@ -129,7 +128,7 @@ static u64 _hitag2_init (const u64 key, const u32 serial, const u32 IV)
|
||||||
|
|
||||||
static u64 _hitag2_round (u64 *state)
|
static u64 _hitag2_round (u64 *state)
|
||||||
{
|
{
|
||||||
u64 x = *state;
|
u64 x = *state;
|
||||||
|
|
||||||
x = (x >> 1) +
|
x = (x >> 1) +
|
||||||
((((x >> 0) ^ (x >> 2) ^ (x >> 3) ^ (x >> 6)
|
((((x >> 0) ^ (x >> 2) ^ (x >> 3) ^ (x >> 6)
|
||||||
|
@ -153,7 +152,7 @@ static u64 _hitag2_round (u64 *state)
|
||||||
|
|
||||||
static u32 _hitag2_byte (u64 * x)
|
static u32 _hitag2_byte (u64 * x)
|
||||||
{
|
{
|
||||||
u32 i, c;
|
u32 i, c;
|
||||||
|
|
||||||
for (i = 0, c = 0; i < 8; i++) c += (u32) _hitag2_round (x) << (i^7);
|
for (i = 0, c = 0; i < 8; i++) c += (u32) _hitag2_round (x) << (i^7);
|
||||||
return c;
|
return c;
|
||||||
|
|
|
@ -426,10 +426,11 @@ static RAMFUNC int ManchesterDecoding(int v)
|
||||||
Demod.state = DEMOD_UNSYNCD;
|
Demod.state = DEMOD_UNSYNCD;
|
||||||
error = 0x88;
|
error = 0x88;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: use this error value to print? Ask Holiman.
|
||||||
|
// 2016-01-08 iceman
|
||||||
}
|
}
|
||||||
error = 0;
|
error = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -89,43 +89,43 @@ int usage_lf_config(void) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int usage_lf_simfsk(void) {
|
int usage_lf_simfsk(void) {
|
||||||
PrintAndLog("Usage: lf simfsk [c <clock>] [i] [H <fcHigh>] [L <fcLow>] [d <hexdata>]");
|
PrintAndLog("Usage: lf simfsk [c <clock>] [i] [H <fcHigh>] [L <fcLow>] [d <hexdata>]");
|
||||||
PrintAndLog("Options: ");
|
PrintAndLog("Options: ");
|
||||||
PrintAndLog(" h This help");
|
PrintAndLog(" h This help");
|
||||||
PrintAndLog(" c <clock> Manually set clock - can autodetect if using DemodBuffer");
|
PrintAndLog(" c <clock> Manually set clock - can autodetect if using DemodBuffer");
|
||||||
PrintAndLog(" i invert data");
|
PrintAndLog(" i invert data");
|
||||||
PrintAndLog(" H <fcHigh> Manually set the larger Field Clock");
|
PrintAndLog(" H <fcHigh> Manually set the larger Field Clock");
|
||||||
PrintAndLog(" L <fcLow> Manually set the smaller Field Clock");
|
PrintAndLog(" L <fcLow> Manually set the smaller Field Clock");
|
||||||
//PrintAndLog(" s TBD- -to enable a gap between playback repetitions - default: no gap");
|
//PrintAndLog(" s TBD- -to enable a gap between playback repetitions - default: no gap");
|
||||||
PrintAndLog(" d <hexdata> Data to sim as hex - omit to sim from DemodBuffer");
|
PrintAndLog(" d <hexdata> Data to sim as hex - omit to sim from DemodBuffer");
|
||||||
PrintAndLog("\n NOTE: if you set one clock manually set them all manually");
|
PrintAndLog("\n NOTE: if you set one clock manually set them all manually");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int usage_lf_simask(void) {
|
int usage_lf_simask(void) {
|
||||||
PrintAndLog("Usage: lf simask [c <clock>] [i] [b|m|r] [s] [d <raw hex to sim>]");
|
PrintAndLog("Usage: lf simask [c <clock>] [i] [b|m|r] [s] [d <raw hex to sim>]");
|
||||||
PrintAndLog("Options: ");
|
PrintAndLog("Options: ");
|
||||||
PrintAndLog(" h This help");
|
PrintAndLog(" h This help");
|
||||||
PrintAndLog(" c <clock> Manually set clock - can autodetect if using DemodBuffer");
|
PrintAndLog(" c <clock> Manually set clock - can autodetect if using DemodBuffer");
|
||||||
PrintAndLog(" i invert data");
|
PrintAndLog(" i invert data");
|
||||||
PrintAndLog(" b sim ask/biphase");
|
PrintAndLog(" b sim ask/biphase");
|
||||||
PrintAndLog(" m sim ask/manchester - Default");
|
PrintAndLog(" m sim ask/manchester - Default");
|
||||||
PrintAndLog(" r sim ask/raw");
|
PrintAndLog(" r sim ask/raw");
|
||||||
PrintAndLog(" s TBD- -to enable a gap between playback repetitions - default: no gap");
|
PrintAndLog(" s TBD- -to enable a gap between playback repetitions - default: no gap");
|
||||||
PrintAndLog(" d <hexdata> Data to sim as hex - omit to sim from DemodBuffer");
|
PrintAndLog(" d <hexdata> Data to sim as hex - omit to sim from DemodBuffer");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int usage_lf_simpsk(void) {
|
int usage_lf_simpsk(void) {
|
||||||
PrintAndLog("Usage: lf simpsk [1|2|3] [c <clock>] [i] [r <carrier>] [d <raw hex to sim>]");
|
PrintAndLog("Usage: lf simpsk [1|2|3] [c <clock>] [i] [r <carrier>] [d <raw hex to sim>]");
|
||||||
PrintAndLog("Options: ");
|
PrintAndLog("Options: ");
|
||||||
PrintAndLog(" h This help");
|
PrintAndLog(" h This help");
|
||||||
PrintAndLog(" c <clock> Manually set clock - can autodetect if using DemodBuffer");
|
PrintAndLog(" c <clock> Manually set clock - can autodetect if using DemodBuffer");
|
||||||
PrintAndLog(" i invert data");
|
PrintAndLog(" i invert data");
|
||||||
PrintAndLog(" 1 set PSK1 (default)");
|
PrintAndLog(" 1 set PSK1 (default)");
|
||||||
PrintAndLog(" 2 set PSK2");
|
PrintAndLog(" 2 set PSK2");
|
||||||
PrintAndLog(" 3 set PSK3");
|
PrintAndLog(" 3 set PSK3");
|
||||||
PrintAndLog(" r <carrier> 2|4|8 are valid carriers: default = 2");
|
PrintAndLog(" r <carrier> 2|4|8 are valid carriers: default = 2");
|
||||||
PrintAndLog(" d <hexdata> Data to sim as hex - omit to sim from DemodBuffer");
|
PrintAndLog(" d <hexdata> Data to sim as hex - omit to sim from DemodBuffer");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int usage_lf_find(void){
|
int usage_lf_find(void){
|
||||||
PrintAndLog("Usage: lf search <0|1> [u]");
|
PrintAndLog("Usage: lf search <0|1> [u]");
|
||||||
|
@ -511,16 +511,15 @@ int CmdIndalaClone(const char *Cmd)
|
||||||
|
|
||||||
int CmdLFSetConfig(const char *Cmd)
|
int CmdLFSetConfig(const char *Cmd)
|
||||||
{
|
{
|
||||||
|
|
||||||
uint8_t divisor = 0;//Frequency divisor
|
uint8_t divisor = 0;//Frequency divisor
|
||||||
uint8_t bps = 0; // Bits per sample
|
uint8_t bps = 0; // Bits per sample
|
||||||
uint8_t decimation = 0; //How many to keep
|
uint8_t decimation = 0; //How many to keep
|
||||||
bool averaging = 1; // Defaults to true
|
bool averaging = 1; // Defaults to true
|
||||||
bool errors = FALSE;
|
bool errors = FALSE;
|
||||||
int trigger_threshold =-1;//Means no change
|
int trigger_threshold = -1;//Means no change
|
||||||
uint8_t unsigned_trigg = 0;
|
uint8_t unsigned_trigg = 0;
|
||||||
|
|
||||||
uint8_t cmdp =0;
|
uint8_t cmdp = 0;
|
||||||
while(param_getchar(Cmd, cmdp) != 0x00)
|
while(param_getchar(Cmd, cmdp) != 0x00)
|
||||||
{
|
{
|
||||||
switch(param_getchar(Cmd, cmdp))
|
switch(param_getchar(Cmd, cmdp))
|
||||||
|
@ -563,22 +562,18 @@ int CmdLFSetConfig(const char *Cmd)
|
||||||
}
|
}
|
||||||
if(errors) break;
|
if(errors) break;
|
||||||
}
|
}
|
||||||
if(cmdp == 0)
|
|
||||||
{
|
// No args
|
||||||
errors = 1;// No args
|
if (cmdp == 0) errors = 1;
|
||||||
}
|
|
||||||
|
|
||||||
//Validations
|
//Validations
|
||||||
if(errors)
|
if (errors) return usage_lf_config();
|
||||||
{
|
|
||||||
return usage_lf_config();
|
|
||||||
}
|
|
||||||
//Bps is limited to 8, so fits in lower half of arg1
|
//Bps is limited to 8, so fits in lower half of arg1
|
||||||
if(bps >> 8) bps = 8;
|
if (bps >> 4) bps = 8;
|
||||||
|
|
||||||
|
sample_config config = { decimation, bps, averaging, divisor, trigger_threshold };
|
||||||
|
|
||||||
sample_config config = {
|
|
||||||
decimation,bps,averaging,divisor,trigger_threshold
|
|
||||||
};
|
|
||||||
//Averaging is a flag on high-bit of arg[1]
|
//Averaging is a flag on high-bit of arg[1]
|
||||||
UsbCommand c = {CMD_SET_LF_SAMPLING_CONFIG};
|
UsbCommand c = {CMD_SET_LF_SAMPLING_CONFIG};
|
||||||
memcpy(c.d.asBytes,&config,sizeof(sample_config));
|
memcpy(c.d.asBytes,&config,sizeof(sample_config));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue