mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 21:33:47 -07:00
CHG: free the malloc:d memory in the crc8 function.
CHG: use the new GetEMLfrombigbuff method. ADD: added a usage_legic_read
This commit is contained in:
parent
ca5bad3d73
commit
cbdcc89ae7
1 changed files with 24 additions and 4 deletions
|
@ -38,9 +38,20 @@ int usage_legic_load(void){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int usage_legic_read(void){
|
||||||
|
PrintAndLog("Read data from a legic tag.");
|
||||||
|
PrintAndLog("Usage: hf legic read <offset> <num of bytes>");
|
||||||
|
PrintAndLog("Options :");
|
||||||
|
PrintAndLog(" <offset> : offset in data array to start download from");
|
||||||
|
PrintAndLog(" <num of bytes> : number of bytes to download");
|
||||||
|
PrintAndLog("");
|
||||||
|
PrintAndLog(" sample: hf legic read");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Output BigBuf and deobfuscate LEGIC RF tag data.
|
* Output BigBuf and deobfuscate LEGIC RF tag data.
|
||||||
* This is based on information given in the talk held
|
* This is based on information given in the talk held
|
||||||
* by Henryk Ploetz and Karsten Nohl at 26c3
|
* by Henryk Ploetz and Karsten Nohl at 26c3
|
||||||
*/
|
*/
|
||||||
int CmdLegicDecode(const char *Cmd) {
|
int CmdLegicDecode(const char *Cmd) {
|
||||||
|
@ -53,11 +64,11 @@ int CmdLegicDecode(const char *Cmd) {
|
||||||
int crc = 0;
|
int crc = 0;
|
||||||
int wrp = 0;
|
int wrp = 0;
|
||||||
int wrc = 0;
|
int wrc = 0;
|
||||||
uint8_t data_buf[1200]; // receiver buffer, should be 1024..
|
uint8_t data_buf[1024]; // receiver buffer, should be 1024..
|
||||||
char token_type[4];
|
char token_type[4];
|
||||||
|
|
||||||
// copy data from proxmark into buffer
|
// download EML memory, where the "legic read" command puts the data.
|
||||||
GetFromBigBuf(data_buf, sizeof(data_buf), 0);
|
GetEMLFromBigBuf(data_buf, sizeof(data_buf), 0);
|
||||||
if ( !WaitForResponseTimeout(CMD_ACK, NULL, 2000)){
|
if ( !WaitForResponseTimeout(CMD_ACK, NULL, 2000)){
|
||||||
PrintAndLog("Command execute timeout");
|
PrintAndLog("Command execute timeout");
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -132,6 +143,8 @@ int CmdLegicDecode(const char *Cmd) {
|
||||||
|
|
||||||
print_hex_break( data_buf, 33, 16);
|
print_hex_break( data_buf, 33, 16);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
PrintAndLog("\nADF: User Area");
|
PrintAndLog("\nADF: User Area");
|
||||||
PrintAndLog("------------------------------------------------------");
|
PrintAndLog("------------------------------------------------------");
|
||||||
i = 22;
|
i = 22;
|
||||||
|
@ -236,6 +249,13 @@ int CmdLegicDecode(const char *Cmd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int CmdLegicRFRead(const char *Cmd) {
|
int CmdLegicRFRead(const char *Cmd) {
|
||||||
|
|
||||||
|
// params:
|
||||||
|
// offset in data
|
||||||
|
// number of bytes.
|
||||||
|
char cmdp = param_getchar(Cmd, 0);
|
||||||
|
if ( cmdp == 'H' || cmdp == 'h' ) return usage_legic_read();
|
||||||
|
|
||||||
int byte_count=0, offset=0;
|
int byte_count=0, offset=0;
|
||||||
sscanf(Cmd, "%i %i", &offset, &byte_count);
|
sscanf(Cmd, "%i %i", &offset, &byte_count);
|
||||||
if(byte_count == 0) byte_count = -1;
|
if(byte_count == 0) byte_count = -1;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue