diff --git a/client/Makefile b/client/Makefile index 903cbf9e..0972f441 100644 --- a/client/Makefile +++ b/client/Makefile @@ -98,6 +98,7 @@ CMDSRCS = nonce2key/crapto1.c\ cmdmain.c \ cmdlft55xx.c \ cmdlfpcf7931.c\ + cmdlfviking.c\ pm3_binlib.c\ scripting.c\ cmdscript.c\ diff --git a/client/cmdlf.c b/client/cmdlf.c index 467816aa..41feec20 100644 --- a/client/cmdlf.c +++ b/client/cmdlf.c @@ -29,6 +29,7 @@ #include "cmdlft55xx.h" #include "cmdlfpcf7931.h" #include "cmdlfio.h" +#include "cmdlfviking.h" #include "lfdemod.h" static int CmdHelp(const char *Cmd); @@ -1213,14 +1214,15 @@ int CmdLFfind(const char *Cmd) static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, - {"awid", CmdLFAWID, 1, "{ AWID RFIDs... }"}, - {"em4x", CmdLFEM4X, 1, "{ EM4X RFIDs... }"}, - {"hid", CmdLFHID, 1, "{ HID RFIDs... }"}, + {"awid", CmdLFAWID, 1, "{ AWID RFIDs... }"}, + {"em4x", CmdLFEM4X, 1, "{ EM4X RFIDs... }"}, + {"hid", CmdLFHID, 1, "{ HID RFIDs... }"}, {"hitag", CmdLFHitag, 1, "{ Hitag tags and transponders... }"}, - {"io", CmdLFIO, 1, "{ ioProx tags... }"}, + {"io", CmdLFIO, 1, "{ ioProx tags... }"}, {"pcf7931", CmdLFPCF7931, 1, "{ PCF7931 RFIDs... }"}, - {"t55xx", CmdLFT55XX, 1, "{ T55xx RFIDs... }"}, - {"ti", CmdLFTI, 1, "{ TI RFIDs... }"}, + {"t55xx", CmdLFT55XX, 1, "{ T55xx RFIDs... }"}, + {"ti", CmdLFTI, 1, "{ TI RFIDs... }"}, + {"viking", CmdLFViking, 1, "{ Viking tags... }"}, {"cmdread", CmdLFCommandRead, 0, " ['H'] -- Modulate LF reader field to send command before read (all periods in microseconds) (option 'H' for 134)"}, {"config", CmdLFSetConfig, 0, "Set config for LF sampling, bit/sample, decimation, frequency"}, {"flexdemod", CmdFlexdemod, 1, "Demodulate samples for FlexPass"}, diff --git a/client/cmdlfviking.c b/client/cmdlfviking.c index 551718e4..e43a9748 100644 --- a/client/cmdlfviking.c +++ b/client/cmdlfviking.c @@ -48,7 +48,7 @@ int usage_lf_viking_sim(void) { uint64_t getVikingBits(uint32_t id) { //calc checksum uint8_t checksum = (id>>24) ^ ((id>>16) & 0xFF) ^ ((id>>8) & 0xFF) ^ (id & 0xFF) ^ 0xF2 ^ 0xA8; - return (0xF2 << 56) | (id << 8) | checksum; + return ((uint64_t)0xF2 << 56) | (id << 8) | checksum; } //by marshmellow //see ASKDemod for what args are accepted @@ -68,7 +68,7 @@ int CmdVikingClone(const char *Cmd) { char cmdp = param_getchar(Cmd, 0); if (strlen(Cmd) < 0 || cmdp == 'h' || cmdp == 'H') return usage_lf_viking_clone(); - id = param_get32ex(Cmd, 0, 0, 16) + id = param_get32ex(Cmd, 0, 0, 16); if (id == 0) return usage_lf_viking_clone(); if (param_getchar(Cmd, 1)=='Q' || param_getchar(Cmd, 1)=='q') Q5 = true; @@ -87,9 +87,10 @@ int CmdVikingSim(const char *Cmd) { uint32_t id = 0; uint64_t rawID = 0; uint8_t clk = 32, encoding = 1, separator = 0, invert = 0; + char cmdp = param_getchar(Cmd, 0); if (strlen(Cmd) < 0 || cmdp == 'h' || cmdp == 'H') return usage_lf_viking_sim(); - id = param_get32ex(Cmd, 0, 0, 16) + id = param_get32ex(Cmd, 0, 0, 16); if (id == 0) return usage_lf_viking_sim(); rawID = getVikingBits(id); @@ -104,6 +105,7 @@ int CmdVikingSim(const char *Cmd) { num_to_bytebits(rawID, 64, c.d.asBytes); clearCommandBuffer(); SendCommand(&c); + return 0; } static command_t CommandTable[] = { diff --git a/client/cmdlfviking.h b/client/cmdlfviking.h index fe4f522c..2e8ac479 100644 --- a/client/cmdlfviking.h +++ b/client/cmdlfviking.h @@ -11,6 +11,6 @@ int CmdLFViking(const char *Cmd); int CmdVikingRead(const char *Cmd); int CmdVikingClone(const char *Cmd); -int CmdVikingSim(static char *Cmd); +int CmdVikingSim(const char *Cmd); #endif