mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
ADD: a print_hex_break function,
CHG: "hf legic decode" looks better.
This commit is contained in:
parent
6a18e46fa6
commit
a182a680b0
2 changed files with 12 additions and 15 deletions
|
@ -165,13 +165,12 @@ int CmdLegicDecode(const char *Cmd) {
|
||||||
|
|
||||||
if ( hasWRC ) {
|
if ( hasWRC ) {
|
||||||
PrintAndLog("WRC protected area: (I %d | K %d| WRC %d)", i, k, wrc);
|
PrintAndLog("WRC protected area: (I %d | K %d| WRC %d)", i, k, wrc);
|
||||||
|
|
||||||
for ( k=i; k < wrc; k++)
|
// de-xor? if not zero, assume it needs xoring.
|
||||||
data_buf[k] ^= crc;
|
if ( data_buf[i] > 0) {
|
||||||
|
for ( k=i; k < wrc; ++k)
|
||||||
//is WRC / 8?
|
data_buf[k] ^= crc;
|
||||||
|
}
|
||||||
// for ( k=i; k < wrc; k += 8)
|
|
||||||
print_hex_break( data_buf+i, wrc, 16);
|
print_hex_break( data_buf+i, wrc, 16);
|
||||||
|
|
||||||
i += wrc;
|
i += wrc;
|
||||||
|
@ -182,34 +181,32 @@ int CmdLegicDecode(const char *Cmd) {
|
||||||
|
|
||||||
// de-xor? if not zero, assume it needs xoring.
|
// de-xor? if not zero, assume it needs xoring.
|
||||||
if ( data_buf[i] > 0) {
|
if ( data_buf[i] > 0) {
|
||||||
for (k=i; k < wrp_len; k++)
|
for (k=i; k < wrp_len; ++k)
|
||||||
data_buf[k] ^= crc;
|
data_buf[k] ^= crc;
|
||||||
}
|
}
|
||||||
|
|
||||||
// for (k=i; k < wrp_len; k += 16) {
|
|
||||||
|
|
||||||
print_hex_break( data_buf+i, wrp_len, 16);
|
print_hex_break( data_buf+i, wrp_len, 16);
|
||||||
// }
|
|
||||||
|
|
||||||
i += wrp_len;
|
i += wrp_len;
|
||||||
|
|
||||||
|
// does this one work?
|
||||||
if( wrp_len == 8 )
|
if( wrp_len == 8 )
|
||||||
PrintAndLog("Card ID: %2X%02X%02X", data_buf[i-4]^crc, data_buf[i-3]^crc, data_buf[i-2]^crc);
|
PrintAndLog("Card ID: %2X%02X%02X", data_buf[i-4]^crc, data_buf[i-3]^crc, data_buf[i-2]^crc);
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintAndLog("Remaining segment payload:");
|
PrintAndLog("Remaining segment payload: (I %d | K %d | Remain LEN %d)", i, k, remain_seg_payload_len);
|
||||||
|
|
||||||
if ( data_buf[i] > 0 ) {
|
if ( data_buf[i] > 0 ) {
|
||||||
for ( k=i; k < remain_seg_payload_len; k++)
|
for ( k=i; k < remain_seg_payload_len; ++k)
|
||||||
data_buf[k] ^= crc;
|
data_buf[k] ^= crc;
|
||||||
}
|
}
|
||||||
|
|
||||||
// for ( k=i; k < remain_seg_payload_len; k++)
|
|
||||||
print_hex_break( data_buf+i, remain_seg_payload_len, 16);
|
print_hex_break( data_buf+i, remain_seg_payload_len, 16);
|
||||||
|
|
||||||
i += remain_seg_payload_len;
|
i += remain_seg_payload_len;
|
||||||
|
|
||||||
printf("\n-------------------------------------\n");
|
printf("\n-------------------------------------\n");
|
||||||
|
|
||||||
// end with last segment
|
// end with last segment
|
||||||
if (segment_flag & 0x8) return 0;
|
if (segment_flag & 0x8) return 0;
|
||||||
|
|
||||||
|
|
|
@ -111,7 +111,7 @@ void print_hex_break(const uint8_t *data, const size_t len, uint8_t breaks) {
|
||||||
|
|
||||||
// check if a line break is needed
|
// check if a line break is needed
|
||||||
if ( (breaks > 0) && (i > 0) && !(i % breaks) )
|
if ( (breaks > 0) && (i > 0) && !(i % breaks) )
|
||||||
printf("\n");
|
printf("(%d %d)\n", i , breaks);
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue