mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-02-13 10:43:01 +08:00
FIX: "hf list legic" annotation now correct prints byte and value for "legic write" command
This commit is contained in:
parent
e4d57949df
commit
c2ab5e8c4e
2 changed files with 26 additions and 11 deletions
|
@ -419,11 +419,10 @@ bool legic_write_byte(uint16_t index, uint8_t byte, uint8_t addr_sz) {
|
||||||
crc = legic4Crc(LEGIC_WRITE, index, byte, addr_sz+1);
|
crc = legic4Crc(LEGIC_WRITE, index, byte, addr_sz+1);
|
||||||
|
|
||||||
// send write command
|
// send write command
|
||||||
uint32_t cmd;
|
uint32_t cmd = LEGIC_WRITE;
|
||||||
cmd = ((crc & 0xF ) << (addr_sz+1+8)); // CRC
|
cmd |= index << 1; // index
|
||||||
cmd |= byte << (addr_sz+1); // Data
|
cmd |= byte << (addr_sz+1); // Data
|
||||||
cmd |= ((index & 0xFF) << 1); // index
|
cmd |= (crc & 0xF ) << (addr_sz+1+8); // CRC
|
||||||
cmd |= LEGIC_WRITE; // CMD
|
|
||||||
|
|
||||||
/* Bitbang the response */
|
/* Bitbang the response */
|
||||||
SHORT_COIL;
|
SHORT_COIL;
|
||||||
|
@ -470,7 +469,7 @@ bool legic_write_byte(uint16_t index, uint8_t byte, uint8_t addr_sz) {
|
||||||
|
|
||||||
OUT: ;
|
OUT: ;
|
||||||
// log
|
// log
|
||||||
uint8_t cmdbytes[] = {cmd_sz, isOK, BYTEx(steps, 0), BYTEx(steps, 1) };
|
uint8_t cmdbytes[] = {1, isOK, BYTEx(steps, 0), BYTEx(steps, 1) };
|
||||||
LogTrace(cmdbytes, sizeof(cmdbytes), start, GET_TICKS, NULL, FALSE);
|
LogTrace(cmdbytes, sizeof(cmdbytes), start, GET_TICKS, NULL, FALSE);
|
||||||
return isOK;
|
return isOK;
|
||||||
}
|
}
|
||||||
|
@ -538,13 +537,12 @@ void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, uint8_t *data) {
|
||||||
|
|
||||||
LED_B_ON();
|
LED_B_ON();
|
||||||
while( len > 0 ) {
|
while( len > 0 ) {
|
||||||
|
--len;
|
||||||
if ( !legic_write_byte( len + offset + LOWERLIMIT, data[len-1], card.addrsize) ) {
|
if ( !legic_write_byte( len + offset, data[len], card.addrsize) ) {
|
||||||
Dbprintf("operation failed @ 0x%03.3x", len-1);
|
Dbprintf("operation failed | %d | %d | %d", len + offset, len, data[len] );
|
||||||
isOK = 0;
|
isOK = 0;
|
||||||
goto OUT;
|
goto OUT;
|
||||||
}
|
}
|
||||||
--len;
|
|
||||||
WDT_HIT();
|
WDT_HIT();
|
||||||
}
|
}
|
||||||
OUT:
|
OUT:
|
||||||
|
|
|
@ -372,6 +372,7 @@ void annotateIso14443b(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize) {
|
||||||
// Quite simpel tag
|
// Quite simpel tag
|
||||||
void annotateLegic(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize){
|
void annotateLegic(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize){
|
||||||
uint8_t bitsend = cmd[0];
|
uint8_t bitsend = cmd[0];
|
||||||
|
uint8_t cmdBit = (cmd[1] & 1);
|
||||||
switch (bitsend){
|
switch (bitsend){
|
||||||
case 7:
|
case 7:
|
||||||
snprintf(exp, size, "IV 0x%02X", cmd[1]);
|
snprintf(exp, size, "IV 0x%02X", cmd[1]);
|
||||||
|
@ -388,7 +389,7 @@ void annotateLegic(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize){
|
||||||
}
|
}
|
||||||
case 9:
|
case 9:
|
||||||
case 11: {
|
case 11: {
|
||||||
uint8_t cmdBit = (cmd[1] & 1);
|
|
||||||
uint16_t address = (cmd[2] << 7) | cmd[1] >> 1;
|
uint16_t address = (cmd[2] << 7) | cmd[1] >> 1;
|
||||||
|
|
||||||
if (cmdBit == LEGIC_READ)
|
if (cmdBit == LEGIC_READ)
|
||||||
|
@ -398,6 +399,22 @@ void annotateLegic(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize){
|
||||||
snprintf(exp, size, "WRITE Byte(%d)", address);
|
snprintf(exp, size, "WRITE Byte(%d)", address);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 21: {
|
||||||
|
if (cmdBit == LEGIC_WRITE ) {
|
||||||
|
uint16_t address = ((cmd[2] << 7) | cmd[1] >> 1) & 0xFF;
|
||||||
|
uint8_t val = (cmd[3] & 1 ) << 7 | cmd[2] >> 1;
|
||||||
|
snprintf(exp, size, "WRITE Byte(%d) %02X", address, val);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 23: {
|
||||||
|
if (cmdBit == LEGIC_WRITE ) {
|
||||||
|
uint16_t address = ((cmd[2] << 7) | cmd[1] >> 1) & 0x3FF;
|
||||||
|
uint8_t val = (cmd[3] & 0x7 ) << 5 | cmd[2] >> 3;
|
||||||
|
snprintf(exp, size, "WRITE Byte(%d) %02X", address, val);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 12:
|
case 12:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue