mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-19 12:59:44 -07:00
hitag2 write (#310)
Usage is similar to hitagS write: lf hitag write 24 KEY pagenumber 32bitvalue * added changlelog entry
This commit is contained in:
parent
979c76556a
commit
52244230d3
6 changed files with 763 additions and 398 deletions
|
@ -22,6 +22,9 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac
|
||||||
|
|
||||||
## [3.0.0][2017-06-05]
|
## [3.0.0][2017-06-05]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Added lf hitag write 24, the command writes a block to hitag2 tags in crypto mode (henjo)
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
- Added hf mf hardnested, an attack working for hardened Mifare cards (EV1, Mifare Plus SL1) where hf mf nested fails
|
- Added hf mf hardnested, an attack working for hardened Mifare cards (EV1, Mifare Plus SL1) where hf mf nested fails
|
||||||
- Added experimental testmode write option for t55xx (danger) (marshmellow)
|
- Added experimental testmode write option for t55xx (danger) (marshmellow)
|
||||||
|
|
|
@ -1051,7 +1051,12 @@ void UsbPacketReceived(uint8_t *packet, int len)
|
||||||
ReadHitagS((hitag_function)c->arg[0],(hitag_data*)c->d.asBytes);
|
ReadHitagS((hitag_function)c->arg[0],(hitag_data*)c->d.asBytes);
|
||||||
break;
|
break;
|
||||||
case CMD_WR_HITAG_S://writer for Hitag tags args=data to write,page and key or challenge
|
case CMD_WR_HITAG_S://writer for Hitag tags args=data to write,page and key or challenge
|
||||||
WritePageHitagS((hitag_function)c->arg[0],(hitag_data*)c->d.asBytes,c->arg[2]);
|
if ((hitag_function)c->arg[0] < 10) {
|
||||||
|
WritePageHitagS((hitag_function)c->arg[0],(hitag_data*)c->d.asBytes,c->arg[2]);
|
||||||
|
}
|
||||||
|
else if ((hitag_function)c->arg[0] >= 10) {
|
||||||
|
WriterHitag((hitag_function)c->arg[0],(hitag_data*)c->d.asBytes, c->arg[2]);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -182,6 +182,7 @@ void iClass_ReadCheck(uint8_t blockNo, uint8_t keyType);
|
||||||
void SnoopHitag(uint32_t type);
|
void SnoopHitag(uint32_t type);
|
||||||
void SimulateHitagTag(bool tag_mem_supplied, byte_t* data);
|
void SimulateHitagTag(bool tag_mem_supplied, byte_t* data);
|
||||||
void ReaderHitag(hitag_function htf, hitag_data* htd);
|
void ReaderHitag(hitag_function htf, hitag_data* htd);
|
||||||
|
void WriterHitag(hitag_function htf, hitag_data* htd, int page);
|
||||||
|
|
||||||
//hitagS.h
|
//hitagS.h
|
||||||
void SimulateHitagSTag(bool tag_mem_supplied, byte_t* data);
|
void SimulateHitagSTag(bool tag_mem_supplied, byte_t* data);
|
||||||
|
|
1142
armsrc/hitag2.c
1142
armsrc/hitag2.c
File diff suppressed because it is too large
Load diff
|
@ -349,7 +349,9 @@ int CmdLFHitagWP(const char *Cmd) {
|
||||||
c.arg[2]= param_get32ex(Cmd, 2, 0, 10);
|
c.arg[2]= param_get32ex(Cmd, 2, 0, 10);
|
||||||
num_to_bytes(param_get32ex(Cmd,3,0,16),4,htd->auth.data);
|
num_to_bytes(param_get32ex(Cmd,3,0,16),4,htd->auth.data);
|
||||||
} break;
|
} break;
|
||||||
case 04: { //WHTSF_KEY
|
case 04:
|
||||||
|
case 24:
|
||||||
|
{ //WHTSF_KEY
|
||||||
num_to_bytes(param_get64ex(Cmd,1,0,16),6,htd->crypto.key);
|
num_to_bytes(param_get64ex(Cmd,1,0,16),6,htd->crypto.key);
|
||||||
c.arg[2]= param_get32ex(Cmd, 2, 0, 10);
|
c.arg[2]= param_get32ex(Cmd, 2, 0, 10);
|
||||||
num_to_bytes(param_get32ex(Cmd,3,0,16),4,htd->crypto.data);
|
num_to_bytes(param_get32ex(Cmd,3,0,16),4,htd->crypto.data);
|
||||||
|
@ -363,6 +365,7 @@ int CmdLFHitagWP(const char *Cmd) {
|
||||||
PrintAndLog(" 04 <key> (set to 0 if no authentication is needed) <page> <byte0...byte3> write page on a Hitag S tag");
|
PrintAndLog(" 04 <key> (set to 0 if no authentication is needed) <page> <byte0...byte3> write page on a Hitag S tag");
|
||||||
PrintAndLog(" Hitag1 (1*)");
|
PrintAndLog(" Hitag1 (1*)");
|
||||||
PrintAndLog(" Hitag2 (2*)");
|
PrintAndLog(" Hitag2 (2*)");
|
||||||
|
PrintAndLog(" 24 <key> (set to 0 if no authentication is needed) <page> <byte0...byte3> write page on a Hitag S tag");
|
||||||
return 1;
|
return 1;
|
||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,8 +27,9 @@ typedef enum {
|
||||||
RHT2F_PASSWORD = 21,
|
RHT2F_PASSWORD = 21,
|
||||||
RHT2F_AUTHENTICATE = 22,
|
RHT2F_AUTHENTICATE = 22,
|
||||||
RHT2F_CRYPTO = 23,
|
RHT2F_CRYPTO = 23,
|
||||||
|
WHT2F_CRYPTO = 24,
|
||||||
RHT2F_TEST_AUTH_ATTEMPTS = 25,
|
RHT2F_TEST_AUTH_ATTEMPTS = 25,
|
||||||
RHT2F_UID_ONLY = 26
|
RHT2F_UID_ONLY = 26,
|
||||||
} hitag_function;
|
} hitag_function;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue