1. Rework how communications with tag occur. a. bitstream to be sent to the tag is now fully pre-generated. b. bits sent and received are logged with start / end times. 2. Support built-in `hw dbg` for controlling verbosity of debug output The new bitstream generation and logging has exposed a surprising legacy behavior ... each of the command that sent additional data (beyond the command) were: * inserting an extra RM zero bit * force-enabling command parity is used This was not expected. However, this PR maintains the behavior of the existing code. TODO: Root-cause why the third RM bit is needed. Fix code to remove that hack. TODO: change the arm/client interface to ONLY use arrays of bytes, with well-defined content endianness, to avoid this problem.
67 KiB
EM4x70 Logging
Full log of all bits sent, and all bits received, when
exercising each of the lf em 4x70
commands.
This can be used to ensure no regressions in what is sent
(and received) when modifying the lf em 4x70
code.
Discovered Potential Bugs
- Last four bits of FRN appear to always be 0b1111 (0xF) instead of intended value 0b1100 (0xC)? FIXED -- log buffer was too small ... needs to be 98 bits due to inclusion of two RM bits
- Semi-randomized application of parity to command: * EM4X70_COMMAND_ID -- No parity * EM4X70_COMMAND_UM1 -- No parity * EM4X70_COMMAND_UM2 -- No parity * EM4X70_COMMAND_WRITE -- Always with fifth parity bit added * EM4X70_COMMAND_AUTH -- Always with fifth parity bit added * EM4X70_COMMAND_PIN -- Always with fifth parity bit added
Comparison of cmds send with / without --par
This section will only list the commands sent, and break them down into their components.
It's intended to be compact, and document what the code did as of 2024-05-01 (or thereabouts).
First will be log without, followed by log with --par
option.
lf em 4x70 info
Bits sent to the tag are IDENTICAL.
The --par
option is IGNORED ... would have expected
to see CMD values of 0011
, 0101
, and 1111
instead!
[#] REM | RM | CMD | Addr | Data....
[#] REM --------------|----|--------|--------|--------------
[#] sent >>>: 6 bits:| 00 | 0001 | |
[#] sent >>>: 6 bits:| 00 | 0010 | |
[#] sent >>>: 6 bits:| 00 | 0111 | |
[#] REM --------------|----|--------|--------|--------------
[#] sent >>>: 6 bits:| 00 | 0001 | |
[#] sent >>>: 6 bits:| 00 | 0010 | |
[#] sent >>>: 6 bits:| 00 | 0111 | |
[#] REM --------------|----|--------|--------|--------------
lf em 4x70 write -b 13 -d C65B
When --par
is used, the command is treated as a three-bit
command, and a parity bit calculated and added.
As can be seen, the existing code was re-using that logic also for the address and data bits. This might be OK as to the address bits (unlikely, but possible). This is most definitely wrong as to the data bits.
[#] REM | RM | CMD | Addr | Data....
[#] REM --------------|----|--------|--------|--------------
[#] sent >>>: 37 bits:| 00 | 0101 0 | 1101 1 | 1100 0 0110 0 0101 0 1011 1 0100 0
[#] REM --------------|----|--------|--------|--------------
[#] sent >>>: 30 bits:| 00 | 101 0 | 101 0 | 100 1 110 0 101 0 011 0 100 0
[#] REM --------------|----|--------|--------|--------------
lf em 4x70 setpin --pin 12345678
[#] REM | RM | CMD | Addr | Data....
[#] REM --------------|----|--------|--------|--------------
[#] sent >>>: 6 bits:| 00 | 0001 | |
[#] sent >>>: 37 bits:| 00 | 0101 0 | 1011 1 | 0001 1 0010 1 0011 0 0100 1 0100 0
[#] sent >>>: 37 bits:| 00 | 0101 0 | 1010 0 | 0101 0 0110 0 0111 1 1000 1 1100 0
[#] sent >>>: 71 bits:| 00 | 0100 1 | | 0111 1000 1011 1000 // ID nibbles 1-4
| | | | 1110 0000 0001 0010 // ID nibbles 5-8
| | | | 0001 0010 0011 0100 // Pin nibbles 1-4
| | | | 0101 0110 0111 1000 // Pin nibbles 5-8
[#] sent >>>: 6 bits:| 00 | 0010 | |
[#] sent >>>: 6 bits:| 00 | 0111 | |
[#] REM --------------|----|--------|--------|--------------
[#] sent >>>: 6 bits: | 00 | 001 1 | |
[#] REM --------------|----|--------|--------|--------------
Surprisingly, setpin
attempts to send EM4X70_COMMAND_ID
as a 3-bit
value (+ parity over those three bits). My tag rejects the command
at this point, as it interprets the command as EM4X70_COMMAND_AUTH
.
TODO: Test code path on tag that requires 3-bit commands w/ parity bit.
lf em 4x70 unlock --pin AAAAAAAA
TODO: Test code path on tag that requires 3-bit commands w/ parity bit.
My current tags properly reject the earliest command (sent as 3-bit
EM4X70_COMMAND_ID
+ its parity) as being EM4X70_COMMAND_AUTH
.
Thus, it properly rejects the command.
Writes pin to blocks 11, 10, then unlocks using that pin code.
[#] REM | RM | CMD | Addr | Data....
[#] REM --------------|----|--------|--------|--------------
[#] sent >>>: 6 bits:| 00 | 0001 | |
[#] sent >>>: 37 bits:| 00 | 0101 0 | 1011 1 | 0001 1 0010 1 0011 0 0100 1 0100 0
[#] sent >>>: 37 bits:| 00 | 0101 0 | 1010 0 | 0101 0 0110 0 0111 1 1000 1 1100 0
[#] sent >>>: 71 bits:| 00 | 0100 1 | | 0111 1000 1011 1000
| | | | 1110 0000 0001 0010
| | | | 0001 0010 0011 0100
| | | | 0101 0110 0111 1000
[#] sent >>>: 6 bits:| 00 | 0010 | |
[#] sent >>>: 6 bits:| 00 | 0111 | |
[#] REM --------------|----|--------|--------|--------------
[#] sent >>>: 6 bits: | 00 | 001 1 | |
[#] REM --------------|----|--------|--------|--------------
lf em 4x70 setkey -k 022A028C02BE000102030405
TODO: Test code path on tag that requires 3-bit commands w/ parity bit.
My current tags properly reject the earliest command (sent as 3-bit
EM4X70_COMMAND_ID
+ its parity) as being EM4X70_COMMAND_AUTH
.
Thus, it properly rejects the command.
[#] REM | RM | CMD | Addr | Data....
[#] REM --------------|----|--------|--------|--------------
[#] sent >>>: 6 bits:| 00 | 0001 | |
[#] sent >>>: 37 bits:| 00 | 0101 0 | 1001 0 | 0000 0 0010 1 0010 1 1010 0 1010 0
[#] sent >>>: 37 bits:| 00 | 0101 0 | 1000 1 | 0000 0 0010 1 1000 1 1100 0 0110 0
[#] sent >>>: 37 bits:| 00 | 0101 0 | 0111 1 | 0000 0 0010 1 1011 1 1110 1 0111 0
[#] sent >>>: 37 bits:| 00 | 0101 0 | 0110 0 | 0000 0 0000 0 0000 0 0001 1 0001 0
[#] sent >>>: 37 bits:| 00 | 0101 0 | 0101 0 | 0000 0 0010 1 0000 0 0011 0 0001 0
[#] sent >>>: 37 bits:| 00 | 0101 0 | 0100 1 | 0000 0 0100 1 0000 0 0101 0 0001 0
[#] REM --------------|----|--------|--------|--------------
[#] sent >>>: 6 bits: | 00 | 001 1 | |
[#] REM --------------|----|--------|--------|--------------
lf em 4x70 auth --rnd 7D5167003571F8 --frn 982DBCC0
The only problem is that the final nibble of FRN is missing its most significant bit.
[#] REM | RM | CMD | Addr | Data....
[#] REM --------------|----|--------|--------|--------------
[#] sent >>>: 98 bits:| 00 | 0011 0 | | 0111 1101 0101 0001 \
| 0110 0111 0000 0000 \_Rnd
| 0011 0101 0111 0001 /
| 1111 1000 /
| 0000000 - Tdiv
| 1001 1000 0010 1101 \_FRN
| 1011 1100 1100 /
[#] REM --------------|----|--------|--------|--------------
[#] sent >>>: 96 bits:| 00 | 011 0 | | 0111 1101 0101 0001 \
| 0110 0111 0000 0000 \_Rnd
| 0011 0101 0111 0001 /
| 1111 1000 /
| 0000000 - Tdiv
| 1001 1000 0010 1101 \_FRN
| 1011 1100 100 /
[#] REM --------------|----|--------|--------|--------------
More Comprehensive logs ... Without --par
option
Hiding by default as not critical
lf em 4x70 info
[usb|script] pm3 --> lf em 4x70 info
log
[#] sent >>>: [ 17169 .. 19545 ] ( 2376 ) 6 bits: 000001
[#] recv <<<: [ 25999 .. 38288 ] ( 12289 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 45022 .. 47399 ] ( 2377 ) 6 bits: 000010
[#] recv <<<: [ 53862 .. 66151 ] ( 12289 ) 32 bits: 10100001110111110101011001111000
[#] sent >>>: [ 72886 .. 75260 ] ( 2374 ) 6 bits: 000111
[#] recv <<<: [ 81702 .. 106281 ] ( 24579 ) 64 bits: 0001001000110100101010101010101010101010101010101010101010101010
decoded log
[#] sent >>>: 6 bits: 00 0001
2-bit RM: 00
4-bit CMD: 0001 (EM4X70_COMMAND_ID)
[#] recv <<<: 32 bits: 0111 1000 1011 1000 1110 0000 0001 0010
7 8 B 8 E 0 1 2
[#] sent >>>: 6 bits: 00 0010
2-bit RM: 00
4-bit CMD: 0010 (EM4X70_COMMAND_UM1)
[#] recv <<<: 32 bits: 1010 0001 1101 1111 0101 0110 0111 1000
A 1 D F 5 6 7 8
[#] sent >>>: 6 bits: 00 0111
2-bit RM: 00
4-bit CMD: 0111 (EM4X70_COMMAND_UM2)
[#] recv <<<: 64 bits: 0001 0010 0011 0100 1010 1010 1010 1010 1010 1010 1010 1010 1010 1010 1010 1010
1 2 3 4 A A A A A A A A A A A A
other output
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | 12 34 | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | A1 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 1
[=] Tag is UNLOCKED.
[=]
lf em 4x70 write (UM2 block 15)
[usb|script] pm3 --> lf em 4x70 write -b 15 -d 576B
log
[#] sent >>>: [ 17163 .. 31600 ] ( 14437 ) 37 bits: 0001010111100101001111011001011111110
[#] recv <<<: no data
[#] ... lines that retrieve ID/UM1/UM2 removed ...
decoded log
[#] sent >>>: 37 bits: 00 01010 11110 10100 10100 10100 10100 00000
|| ||||| ||||| ||||| ||||| ||||| ||||| \\\\\---- 1111 0 == 5th row: column parity + 0
|| ||||| ||||| ||||| ||||| ||||| \\\\\---------- 1011 1 == 0xB 4th row nibble + row parity
|| ||||| ||||| ||||| ||||| \\\\\---------------- 0110 0 == 0x6 3rd row nibble + row parity
|| ||||| ||||| ||||| \\\\\---------------------- 0111 1 == 0x7 2nd row nibble + row parity
|| ||||| ||||| \\\\\---------------------------- 0101 0 == 0x5 1st row nibble + row parity
|| ||||| \\\\\---------------------------------- 1111 0 == address to write to + address parity
|| \\\\\---------------------------------------- 0101 0 == EM4X70_COMMAND_WRITE + command parity (!!!)
\\---------------------------------------------- 00 == RM
other output
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | 57 6B | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | A1 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 1
[=] Tag is UNLOCKED.
[=]
lf em 4x70 setkey (autorecovery test key)
This writes to block 9..4.
[usb|script] pm3 --> lf em 4x70 setkey -k 022A028C02BE000102030405
log
[#] sent >>>: [ 17163 .. 19539 ] ( 2376 ) 6 bits: 000001
[#] recv <<<: [ 25993 .. 38282 ] ( 12289 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 45015 .. 59453 ] ( 14438 ) 37 bits: 0001010100100000000101001011010010100
[#] recv <<<: no data
[#] sent >>>: [ 114111 .. 128547 ] ( 14436 ) 37 bits: 0001010100010000000101100011100001100
[#] recv <<<: no data
[#] sent >>>: [ 183207 .. 197646 ] ( 14439 ) 37 bits: 0001010011110000000101101111110101110
[#] recv <<<: no data
[#] sent >>>: [ 252303 .. 266738 ] ( 14435 ) 37 bits: 0001010011000000000000000000001100010
[#] recv <<<: no data
[#] sent >>>: [ 321387 .. 335820 ] ( 14433 ) 37 bits: 0001010010100000000101000000011000010
[#] recv <<<: no data
[#] sent >>>: [ 390471 .. 404903 ] ( 14432 ) 37 bits: 0001010010010000001001000000101000010
[#] recv <<<: no data
[#] sent >>>: [ 17157 .. 55333 ] ( 38176 ) 98 bits: 00001101110111100100011110001101111111011101100001001011000011000000001001100111011101100011111100
[#] recv <<<: [ 61410 .. 69091 ] ( 7681 ) 20 bits: 10010001110110101000
decoded log
[usb|script] pm3 --> lf em 4x70 setkey -k 022A 028C 02BE 0001 0203 0405
[#] sent >>>: 6 bits: 00 0001
RM EM4X70_COMMAND_ID
[#] recv <<<: 32 bits: 0111 1000 1011 1000 1110 0000 0001 0010
7 8 B 8 E 0 1 2
[#] sent >>>: 37 bits: 00 01010 10010 00000 00101 00101 10100 10100
|| ||||| ||||| ||||| ||||| ||||| ||||| \\\\\---- 1010 0 == 0xA 5th row: column parity + 0
|| ||||| ||||| ||||| ||||| ||||| \\\\\---------- 1010 0 == 0xA 4th row nibble + row parity
|| ||||| ||||| ||||| ||||| \\\\\---------------- 0010 1 == 0x2 3rd row nibble + row parity
|| ||||| ||||| ||||| \\\\\---------------------- 0010 1 == 0x2 2nd row nibble + row parity
|| ||||| ||||| \\\\\---------------------------- 0000 0 == 0x0 1st row nibble + row parity
|| ||||| \\\\\---------------------------------- 1001 0 == 0x9 address + address parity
|| \\\\\---------------------------------------- 0101 0 == EM4X70_COMMAND_WRITE + parity
\\---------------------------------------------- 00 == RM bits
[#] sent >>>: 37 bits: 00 01010 10001 00000 00101 10001 11000 01100
|| ||||| ||||| ||||| ||||| ||||| ||||| \\\\\---- 0110 0 == 0x6 5th row: column parity + 0
|| ||||| ||||| ||||| ||||| ||||| \\\\\---------- 1100 0 == 0xC 4th row nibble + row parity
|| ||||| ||||| ||||| ||||| \\\\\---------------- 1000 1 == 0x8 3rd row nibble + row parity
|| ||||| ||||| ||||| \\\\\---------------------- 0010 1 == 0x2 2nd row nibble + row parity
|| ||||| ||||| \\\\\---------------------------- 0000 0 == 0x0 1st row nibble + row parity
|| ||||| \\\\\---------------------------------- 1000 1 == 0x8 address + address parity
|| \\\\\---------------------------------------- 0101 0 == EM4X70_COMMAND_WRITE + parity
\\---------------------------------------------- 00 == RM bits
[#] sent >>>: 37 bits: 00 01010 01111 00000 00101 10111 11101 01110
|| ||||| ||||| ||||| ||||| ||||| ||||| \\\\\---- 0111 0 == 0x7 5th row: column parity + 0
|| ||||| ||||| ||||| ||||| ||||| \\\\\---------- 1110 1 == 0xE 4th row nibble + row parity
|| ||||| ||||| ||||| ||||| \\\\\---------------- 1011 1 == 0xB 3rd row nibble + row parity
|| ||||| ||||| ||||| \\\\\---------------------- 0010 1 == 0x2 2nd row nibble + row parity
|| ||||| ||||| \\\\\---------------------------- 0000 0 == 0x0 1st row nibble + row parity
|| ||||| \\\\\---------------------------------- 0111 1 == 0x7 address + address parity
|| \\\\\---------------------------------------- 0101 0 == EM4X70_COMMAND_WRITE + parity
\\---------------------------------------------- 00 == RM bits
[#] sent >>>: 37 bits: 00 01010 01100 00000 00000 00000 00011 00010
|| ||||| ||||| ||||| ||||| ||||| ||||| \\\\\---- 0001 0 == 0x1 5th row: column parity + 0
|| ||||| ||||| ||||| ||||| ||||| \\\\\---------- 0001 1 == 0x1 4th row nibble + row parity
|| ||||| ||||| ||||| ||||| \\\\\---------------- 0000 0 == 0x0 3rd row nibble + row parity
|| ||||| ||||| ||||| \\\\\---------------------- 0000 0 == 0x0 2nd row nibble + row parity
|| ||||| ||||| \\\\\---------------------------- 0000 0 == 0x0 1st row nibble + row parity
|| ||||| \\\\\---------------------------------- 0110 0 == 0x6 address + address parity
|| \\\\\---------------------------------------- 0101 0 == EM4X70_COMMAND_WRITE + parity
\\---------------------------------------------- 00 == RM bits
[#] sent >>>: 37 bits: 00 01010 01010 00000 00101 00000 00110 00010
|| ||||| ||||| ||||| ||||| ||||| ||||| \\\\\---- 0001 0 == 0x1 5th row: column parity + 0
|| ||||| ||||| ||||| ||||| ||||| \\\\\---------- 0011 0 == 0x3 4th row nibble + row parity
|| ||||| ||||| ||||| ||||| \\\\\---------------- 0000 0 == 0x0 3rd row nibble + row parity
|| ||||| ||||| ||||| \\\\\---------------------- 0010 1 == 0x2 2nd row nibble + row parity
|| ||||| ||||| \\\\\---------------------------- 0000 0 == 0x0 1st row nibble + row parity
|| ||||| \\\\\---------------------------------- 0101 0 == 0x5 address + address parity
|| \\\\\---------------------------------------- 0101 0 == EM4X70_COMMAND_WRITE + parity
\\---------------------------------------------- 00 == RM bits
[#] sent >>>: 37 bits: 00 01010 01001 00000 01001 00000 01010 00010
|| ||||| ||||| ||||| ||||| ||||| ||||| \\\\\---- 0001 0 == 0x1 5th row: column parity + 0
|| ||||| ||||| ||||| ||||| ||||| \\\\\---------- 0101 0 == 0xC 4th row nibble + row parity
|| ||||| ||||| ||||| ||||| \\\\\---------------- 0000 0 == 0x8 3rd row nibble + row parity
|| ||||| ||||| ||||| \\\\\---------------------- 0100 1 == 0x2 2nd row nibble + row parity
|| ||||| ||||| \\\\\---------------------------- 0000 0 == 0x0 1st row nibble + row parity
|| ||||| \\\\\---------------------------------- 0100 1 == 0x8 address + address parity
|| \\\\\---------------------------------------- 0101 0 == EM4X70_COMMAND_WRITE + parity
\\---------------------------------------------- 00 == RM bits
Equivalent of: lf em 4x70 auth --rnd EF23C6FEEC2586 --frn 99DD8FC0 --> 91DA80
[#] sent >>>: 98 bits: 00 00110 1110 1111 0010 0011 1100 0110 1111 1110 1110 1100 0010 0101 1000 0110 0000000 1001 1001 1101 1101 1000 1111 1100
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||| \--/ \--/ \--/ \--/ \--/ \--/ \--/---- FRN
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||| 9 9 D D 8 F C
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| \\\\\\\---------------------------------------- Tdiv (always seven zero bits)
|| ||||| \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/-------------------------------------------------- 56-bits RN
|| ||||| E F 2 3 C 6 F E E C 2 5 8 6
|| \\\\\---------------------------------------- 0011 0 == EM4X70_COMMAND_AUTH + parity
\\---------------------------------------------- 00 == RM bits
[#] recv <<<: 20 bits: 1001 0001 1101 1010 1000
9 1 D A 8 ---- GRN
other output
[=] Writing new key ( ok )
[=] Verifying auth for new key: 022a028c02be000102030405 --> lf em 4x70 auth --rnd EF23C6FEEC2586 --frn 99DD8FC0 --> 91DA80
[=] Authenticating with new key ( ok )
lf em 4x70 auth
This is authentication using the autorecovery test key.
[usb|script] pm3 --> lf em 4x70 auth --rnd EF23C6FEEC2586 --frn 99DD8FC0
(log 1)
[usb|script] pm3 --> lf em 4x70 auth --rnd 8713F4E00B8716 --frn CB8A1EA0
(log 2)
log 1
[#] sent >>>: [ 17169 .. 55350 ] ( 38181 ) 98 bits: 00001101110111100100011110001101111111011101100001001011000011000000001001100111011101100011111100
[#] recv <<<: [ 61421 .. 69103 ] ( 7682 ) 20 bits: 10010001110110101000
decoded log 1
[#] sent >>>: 98 bits: 00 00110 1110 1111 0010 0011 1100 0110 1111 1110 1110 1100 0010 0101 1000 0110 0000000 1001 1001 1101 1101 1000 1111 1100
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||| \--/ \--/ \--/ \--/ \--/ \--/ \--/---- FRN
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||| 9 9 D D 8 F C
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||||||
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| \\\\\\\---------------------------------------- Tdiv (7x zero)
|| ||||| \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/-------------------------------------------------- 56-bits RN
|| ||||| E F 2 3 C 6 F E E C 2 5 8 6
|| \\\\\---------------------------------------- 0011 0 == EM4X70_COMMAND_AUTH + parity
\\---------------------------------------------- 00 == RM bits
[#] recv <<<: 20 bits: 1001 0001 1101 1010 1000
9 1 D A 8 ---- GRN
log 2
[#] sent >>>: [ 21002 .. 59178 ] ( 38176 ) 98 bits: 00001101000011100010011111101001110000000001011100001110001011000000001100101110001010000111101010
[#] recv <<<: [ 1 .. 73322 ] ( 73321 ) 20 bits: 11110100100011100001
decoded lgo 2
[#] sent >>>: 98 bits: 00 00110 1000 0111 0001 0011 1111 0100 1110 0000 0000 1011 1000 0111 0001 0110 0000000 1100 1011 1000 1010 0001 1110 1010
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||| \--/ \--/ \--/ \--/ \--/ \--/ \--/---- FRN
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||| C B 8 A 1 E A
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||||||
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| \\\\\\\---------------------------------------- Tdiv (7x zero)
|| ||||| \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/ \--/-------------------------------------------------- 56-bits RN
|| ||||| E F 2 3 C 6 F E E C 2 5 8 6
|| \\\\\---------------------------------------- 0011 0 == EM4X70_COMMAND_AUTH + parity
\\---------------------------------------------- 00 == RM bits
[#] recv <<<: 20 bits: 1111 0100 1000 1110 0001
F 4 8 E 1 ---- GRN
other output
[=] Tag Auth Response: 91 DA 80
lf em 4x70 setpin
Set new pin code (writes to blocks 11, 10)
[usb|script] pm3 --> lf em 4x70 setpin -p 12345678
log
[#] sent >>>: [ 17162 .. 19540 ] ( 2378 ) 6 bits: 000001
[#] recv <<<: [ 25992 .. 38282 ] ( 12290 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 45014 .. 59445 ] ( 14431 ) 37 bits: 0001010101110001100101001100100101000
[#] recv <<<: no data
[#] sent >>>: [ 114098 .. 128531 ] ( 14433 ) 37 bits: 0001010101000101001100011111000111000
[#] recv <<<: no data
[#] sent >>>: [ 183182 .. 210838 ] ( 27656 ) 71 bits: 00010010111100010111000111000000001001000010010001101000101011001111000
[#] recv <<<: [ 263748 .. 276039 ] ( 12291 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 282770 .. 285147 ] ( 2377 ) 6 bits: 000010
[#] recv <<<: [ 291612 .. 303901 ] ( 12289 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 310634 .. 313007 ] ( 2373 ) 6 bits: 000111
[#] recv <<<: [ 319451 .. 344030 ] ( 24579 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
decoded log
[#] sent >>>: 6 bits: 00 0001
RM EM4X70_COMMAND_ID
[#] recv <<<: 32 bits: 0111 1000 1011 1000 1110 0000 0001 0010
7 8 B 8 E 0 1 2
[#] sent >>>: 37 bits: 00 01010 10111 00011 00101 00110 01001 01000
|| ||||| ||||| ||||| ||||| ||||| ||||| \\\\\---- 0100 0 == 0x4 5th row: column parity + 0
|| ||||| ||||| ||||| ||||| ||||| \\\\\---------- 0100 1 == 0x4 4th row nibble + row parity
|| ||||| ||||| ||||| ||||| \\\\\---------------- 0011 0 == 0x3 3rd row nibble + row parity
|| ||||| ||||| ||||| \\\\\---------------------- 0010 1 == 0x2 2nd row nibble + row parity
|| ||||| ||||| \\\\\---------------------------- 0001 1 == 0x1 1st row nibble + row parity
|| ||||| \\\\\----------------------------------- 1011 1 == 0xB address + address parity
|| \\\\\------------------------------------------ 0101 0 == EM4X70_COMMAND_WRITE + parity
\\------------------------------------------------ 00 == RM bits
[#] sent >>>: 37 bits: 00 01010 10100 01010 01100 01111 10001 11000
|| ||||| ||||| ||||| ||||| ||||| ||||| \\\\\---- 1100 0 == 0xC 5th row: column parity + 0
|| ||||| ||||| ||||| ||||| ||||| \\\\\---------- 1000 1 == 0x8 4th row nibble + row parity
|| ||||| ||||| ||||| ||||| \\\\\---------------- 0111 1 == 0x7 3rd row nibble + row parity
|| ||||| ||||| ||||| \\\\\---------------------- 0110 0 == 0x6 2nd row nibble + row parity
|| ||||| ||||| \\\\\---------------------------- 0101 0 == 0x5 1st row nibble + row parity
|| ||||| \\\\\----------------------------------- 1010 0 == 0xA address + address parity
|| \\\\\------------------------------------------ 0101 0 == EM4X70_COMMAND_WRITE + parity
\\------------------------------------------------ 00 == RM bits
[#] sent >>>: 71 bits: 00 01001 0111 1000 1011 1000 1110 0000 0001 0010 0001 0010 0011 0100 0101 0110 0111 1000
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| \||/ \||/ \||/ \||/ \||/ \||/ \||/ \||/-- PIN
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| 1 2 3 4 5 6 7 8
|| ||||| \||/ \||/ \||/ \||/ \||/ \||/ \||/ \||/------------------------------------------- Tag ID
|| ||||| 7 8 B 8 E 0 1 2
|| \\\\\------------------------------------------------------------------------------------ EM4X70_COMMAND_PIN + parity
\\------------------------------------------------------------------------------------------ RM bits
[#] recv <<<: 32 bits: 0111 1000 1011 1000 1110 0000 0001 0010 Tag ID
7 8 B 8 E 0 1 2
(reads the UM1 and UM2 blocks again ... skipped for brevity)
other output
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[=] Writing new PIN ( ok )
lf em 4x70 write (lock the tag)
This locks the tag by setting top two bits of UM1.
[usb|script] pm3 --> lf em 4x70 write -b 1 -d E1DF
log
[#] sent >>>: [ 17164 .. 31601 ] ( 14437 ) 37 bits: 0001010000111110100011110111111011010
[#] recv <<<: no data
[#] sent >>>: [ 86259 .. 88633 ] ( 2374 ) 6 bits: 000001
[#] recv <<<: [ 95089 .. 107378 ] ( 12289 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 114110 .. 116487 ] ( 2377 ) 6 bits: 000010
[#] recv <<<: [ 122952 .. 135240 ] ( 12288 ) 32 bits: 11100001110111110101011001111000
[#] sent >>>: [ 141975 .. 144351 ] ( 2376 ) 6 bits: 000111
[#] recv <<<: [ 150792 .. 175370 ] ( 24578 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
decoded log
[#] sent >>>: 37 bits: 00 01010 00011 11101 00011 11011 11110 11010
|| ||||| ||||| ||||| ||||| ||||| ||||| \\\\\---- 1101 0 == 0xD 5th row: column parity + 0
|| ||||| ||||| ||||| ||||| ||||| \\\\\---------- 1111 0 == 0xF 4th row nibble + row parity
|| ||||| ||||| ||||| ||||| \\\\\---------------- 1101 1 == 0xD 3rd row nibble + row parity
|| ||||| ||||| ||||| \\\\\---------------------- 0001 1 == 0x1 2nd row nibble + row parity
|| ||||| ||||| \\\\\---------------------------- 1110 1 == 0xE 1st row nibble + row parity
|| ||||| \\\\\----------------------------------- 0001 1 == 0x1 address + address parity
|| \\\\\------------------------------------------ 0101 0 == EM4X70_COMMAND_WRITE + parity
\\------------------------------------------------ 00 == RM bits
Skipping reads of ID, UM1, UM2
other output
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | E1 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 1
[=] Lockbit 1: 1
[=] Tag is LOCKED.
[=]
lf em 4x70 unlock
[usb|script] pm3 --> lf em 4x70 unlock -p 12345678
log
[#] sent >>>: [ 17162 .. 19538 ] ( 2376 ) 6 bits: 000001
[#] recv <<<: [ 25992 .. 38282 ] ( 12290 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 45015 .. 72674 ] ( 27659 ) 71 bits: 00010010111100010111000111000000001001000010010001101000101011001111000
[#] recv <<<: [ 125592 .. 137883 ] ( 12291 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 144615 .. 146991 ] ( 2376 ) 6 bits: 000010
[#] recv <<<: [ 153457 .. 165744 ] ( 12287 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 172478 .. 174854 ] ( 2376 ) 6 bits: 000111
[#] recv <<<: [ 181296 .. 205874 ] ( 24578 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
other output
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
lf em 4x70 setpin (revert to AAAAAAAA)
Always leave the tag with pin AAAAAAAA
.
[usb|script] pm3 --> lf em 4x70 setpin -p AAAAAAAA
log
[#] sent >>>: [ 17169 .. 19544 ] ( 2375 ) 6 bits: 000001
[#] recv <<<: [ 25998 .. 38289 ] ( 12291 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 45021 .. 59464 ] ( 14443 ) 37 bits: 0001010101111010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 114117 .. 128558 ] ( 14441 ) 37 bits: 0001010101001010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 183212 .. 210875 ] ( 27663 ) 71 bits: 00010010111100010111000111000000001001010101010101010101010101010101010
[#] recv <<<: [ 263791 .. 276080 ] ( 12289 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 282813 .. 285188 ] ( 2375 ) 6 bits: 000010
[#] recv <<<: [ 291642 .. 303930 ] ( 12288 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 310664 .. 313042 ] ( 2378 ) 6 bits: 000111
[#] recv <<<: [ 319482 .. 344060 ] ( 24578 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
decoded log
[#] sent >>>: 6 bits: 00 0001
RM EM4X70_COMMAND_ID
[#] recv <<<: 32 bits: 0111 1000 1011 1000 1110 0000 0001 0010
7 8 B 8 E 0 1 2
[#] sent >>>: 37 bits: 00 01010 10111 10100 10100 10100 10100 00000
|| ||||| ||||| ||||| ||||| ||||| ||||| \\\\\---- 0000 0 == 0x0 5th row: column parity + 0
|| ||||| ||||| ||||| ||||| ||||| \\\\\---------- 1010 0 == 0xA 4th row nibble + row parity
|| ||||| ||||| ||||| ||||| \\\\\---------------- 1010 0 == 0xA 3rd row nibble + row parity
|| ||||| ||||| ||||| \\\\\---------------------- 1010 0 == 0xA 2nd row nibble + row parity
|| ||||| ||||| \\\\\---------------------------- 1010 0 == 0xA 1st row nibble + row parity
|| ||||| \\\\\----------------------------------- 1011 1 == 0xB address + address parity
|| \\\\\------------------------------------------ 0101 0 == EM4X70_COMMAND_WRITE + parity
\\------------------------------------------------ 00 == RM bits
[#] sent >>>: 37 bits: 00 01010 10100 10100 10100 10100 10100 00000
|| ||||| ||||| ||||| ||||| ||||| ||||| \\\\\---- 0000 0 == 0x0 5th row: column parity + 0
|| ||||| ||||| ||||| ||||| ||||| \\\\\---------- 1010 0 == 0xA 4th row nibble + row parity
|| ||||| ||||| ||||| ||||| \\\\\---------------- 1010 0 == 0xA 3rd row nibble + row parity
|| ||||| ||||| ||||| \\\\\---------------------- 1010 0 == 0xA 2nd row nibble + row parity
|| ||||| ||||| \\\\\---------------------------- 1010 0 == 0xA 1st row nibble + row parity
|| ||||| \\\\\----------------------------------- 1010 0 == 0xA address + address parity
|| \\\\\------------------------------------------ 0101 0 == EM4X70_COMMAND_WRITE + parity
\\------------------------------------------------ 00 == RM bits
[#] sent >>>: 71 bits: 00 01001 0111 1000 1011 1000 1110 0000 0001 0010 1010 1010 1010 1010 1010 1010 1010 1010
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| \||/ \||/ \||/ \||/ \||/ \||/ \||/ \||/-- PIN
|| ||||| |||| |||| |||| |||| |||| |||| |||| |||| A A A A A A A A
|| ||||| \||/ \||/ \||/ \||/ \||/ \||/ \||/ \||/------------------------------------------- Tag ID
|| ||||| 7 8 B 8 E 0 1 2
|| \\\\\------------------------------------------------------------------------------------ EM4X70_COMMAND_PIN + parity
\\------------------------------------------------------------------------------------------ RM bits
[#] recv <<<: 32 bits: 0111 1000 1011 1000 1110 0000 0001 0010
7 8 B 8 E 0 1 2
skipping read of UM1 and UM2
other output
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[=] Writing new PIN ( ok )
General format of the output:
^^^^^------- Actual bits sent
[#] DIRECTN_: [ START .. END ] ( ELAPSED) ## bits: .....
^^^^^^^^ ^^^^^^ .. ^^^^^^ ^^^^^^ ^^ ^^^^^
|||||||| |||||| |||||| |||||| || \\\\\------- Actual bits sent or received
|||||||| |||||| |||||| |||||| \\------------------- Count of bits sent or received
|||||||| |||||| |||||| \\\\\\------------------------ (END - START)
|||||||| |||||| \\\\\\----------------------------------- Device tick count after last bit
|||||||| \\\\\\----------------------------------------------- Device tick count at first bit
\\\\\\\\----------------------------------------------------------- Direction: sent from reader, or received from tag
NOTE: bits sent by reader INCLUDE the 2-bit RM (always 00
)
NOTE: bits received by reader EXCLUDE the 12-bit synchronization header (111111110000
).
Initialization of the tag
Script to initialize the tag to known starting state:
Hiding by default as not critical
rem set UM2 blocks to `AAAA`
lf em 4x70 write -b 15 -d AAAA
lf em 4x70 write -b 14 -d AAAA
lf em 4x70 write -b 13 -d AAAA
lf em 4x70 write -b 12 -d AAAA
rem set PIN code to `AAAAAAAA`
lf em 4x70 write -b 11 -d AAAA
lf em 4x70 write -b 10 -d AAAA
rem set KEY to `AAAAAAAAAAAA
lf em 4x70 write -b 9 -d AAAA
lf em 4x70 write -b 8 -d AAAA
lf em 4x70 write -b 7 -d AAAA
lf em 4x70 write -b 6 -d AAAA
lf em 4x70 write -b 5 -d AAAA
lf em 4x70 write -b 4 -d AAAA
rem set ID to `78B8E012`
lf em 4x70 write -b 3 -d 78B8
lf em 4x70 write -b 2 -d E012
rem set UM1 to `21DF5678` (unlocked) ... write block 1 last!
lf em 4x70 write -b 0 -d 5678
lf em 4x70 write -b 1 -d 21DF
[+] 2024-05-15T18:47:50Z remark: set UM2 blocks to `AAAA`
[#] sent >>>: [ 17156 .. 31590 ] ( 14434 ) 37 bits: 0001010111101010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 86240 .. 88618 ] ( 2378 ) 6 bits: 000001
[#] recv <<<: [ 95070 .. 107359 ] ( 12289 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 114092 .. 116470 ] ( 2378 ) 6 bits: 000010
[#] recv <<<: [ 122934 .. 135223 ] ( 12289 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 141957 .. 144333 ] ( 2376 ) 6 bits: 000111
[#] recv <<<: [ 150774 .. 175352 ] ( 24578 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[#] sent >>>: [ 17163 .. 31601 ] ( 14438 ) 37 bits: 0001010111011010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 86259 .. 88635 ] ( 2376 ) 6 bits: 000001
[#] recv <<<: [ 95089 .. 107379 ] ( 12290 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 114111 .. 116488 ] ( 2377 ) 6 bits: 000010
[#] recv <<<: [ 122953 .. 135241 ] ( 12288 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 141976 .. 144349 ] ( 2373 ) 6 bits: 000111
[#] recv <<<: [ 150793 .. 175371 ] ( 24578 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[#] sent >>>: [ 17157 .. 31602 ] ( 14445 ) 37 bits: 0001010110111010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 86252 .. 88627 ] ( 2375 ) 6 bits: 000001
[#] recv <<<: [ 95081 .. 107372 ] ( 12291 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 114105 .. 116478 ] ( 2373 ) 6 bits: 000010
[#] recv <<<: [ 122934 .. 135222 ] ( 12288 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 141956 .. 144332 ] ( 2376 ) 6 bits: 000111
[#] recv <<<: [ 150775 .. 175353 ] ( 24578 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[#] sent >>>: [ 17157 .. 31592 ] ( 14435 ) 37 bits: 0001010110001010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 80480 .. 82858 ] ( 2378 ) 6 bits: 000001
[#] recv <<<: [ 89310 .. 101599 ] ( 12289 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 108333 .. 110708 ] ( 2375 ) 6 bits: 000010
[#] recv <<<: [ 117161 .. 129450 ] ( 12289 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 136185 .. 138561 ] ( 2376 ) 6 bits: 000111
[#] recv <<<: [ 145002 .. 169581 ] ( 24579 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[+] 2024-05-15T18:47:50Z remark: set PIN code to `AAAAAAAA`
[#] sent >>>: [ 17157 .. 31593 ] ( 14436 ) 37 bits: 0001010101111010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 86253 .. 88629 ] ( 2376 ) 6 bits: 000001
[#] recv <<<: [ 95081 .. 107372 ] ( 12291 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 114104 .. 116480 ] ( 2376 ) 6 bits: 000010
[#] recv <<<: [ 122946 .. 135234 ] ( 12288 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 141968 .. 144342 ] ( 2374 ) 6 bits: 000111
[#] recv <<<: [ 150786 .. 175363 ] ( 24577 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[#] sent >>>: [ 17163 .. 31598 ] ( 14435 ) 37 bits: 0001010101001010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 80487 .. 82865 ] ( 2378 ) 6 bits: 000001
[#] recv <<<: [ 89315 .. 101606 ] ( 12291 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 108339 .. 110713 ] ( 2374 ) 6 bits: 000010
[#] recv <<<: [ 117167 .. 129457 ] ( 12290 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 136190 .. 138563 ] ( 2373 ) 6 bits: 000111
[#] recv <<<: [ 145008 .. 169585 ] ( 24577 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[+] 2024-05-15T18:47:51Z remark: set KEY to `AAAAAAAAAAAA
[#] sent >>>: [ 17156 .. 31589 ] ( 14433 ) 37 bits: 0001010100101010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 86242 .. 88616 ] ( 2374 ) 6 bits: 000001
[#] recv <<<: [ 95070 .. 107359 ] ( 12289 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 114093 .. 116469 ] ( 2376 ) 6 bits: 000010
[#] recv <<<: [ 122923 .. 135211 ] ( 12288 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 141944 .. 144317 ] ( 2373 ) 6 bits: 000111
[#] recv <<<: [ 150761 .. 175341 ] ( 24580 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[#] sent >>>: [ 17157 .. 31588 ] ( 14431 ) 37 bits: 0001010100011010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 86240 .. 88615 ] ( 2375 ) 6 bits: 000001
[#] recv <<<: [ 95069 .. 107359 ] ( 12290 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 114093 .. 116470 ] ( 2377 ) 6 bits: 000010
[#] recv <<<: [ 122933 .. 135223 ] ( 12290 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 141957 .. 144330 ] ( 2373 ) 6 bits: 000111
[#] recv <<<: [ 150774 .. 175352 ] ( 24578 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[#] sent >>>: [ 17157 .. 31596 ] ( 14439 ) 37 bits: 0001010011111010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 86252 .. 88630 ] ( 2378 ) 6 bits: 000001
[#] recv <<<: [ 95082 .. 107371 ] ( 12289 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 114104 .. 116478 ] ( 2374 ) 6 bits: 000010
[#] recv <<<: [ 122933 .. 135223 ] ( 12290 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 141956 .. 144332 ] ( 2376 ) 6 bits: 000111
[#] recv <<<: [ 150775 .. 175352 ] ( 24577 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[#] sent >>>: [ 17164 .. 31603 ] ( 14439 ) 37 bits: 0001010011001010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 86259 .. 88635 ] ( 2376 ) 6 bits: 000001
[#] recv <<<: [ 95089 .. 107377 ] ( 12288 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 114111 .. 116487 ] ( 2376 ) 6 bits: 000010
[#] recv <<<: [ 122941 .. 135229 ] ( 12288 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 141963 .. 144339 ] ( 2376 ) 6 bits: 000111
[#] recv <<<: [ 150780 .. 175359 ] ( 24579 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[#] sent >>>: [ 17163 .. 31599 ] ( 14436 ) 37 bits: 0001010010101010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 86259 .. 88633 ] ( 2374 ) 6 bits: 000001
[#] recv <<<: [ 95089 .. 107379 ] ( 12290 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 114111 .. 116485 ] ( 2374 ) 6 bits: 000010
[#] recv <<<: [ 122941 .. 135229 ] ( 12288 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 141963 .. 144337 ] ( 2374 ) 6 bits: 000111
[#] recv <<<: [ 150781 .. 175359 ] ( 24578 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[#] sent >>>: [ 17158 .. 31597 ] ( 14439 ) 37 bits: 0001010010011010010100101001010000000
[#] recv <<<: no data
[#] sent >>>: [ 86253 .. 88631 ] ( 2378 ) 6 bits: 000001
[#] recv <<<: [ 95083 .. 107372 ] ( 12289 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 114104 .. 116477 ] ( 2373 ) 6 bits: 000010
[#] recv <<<: [ 122935 .. 135223 ] ( 12288 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 141956 .. 144332 ] ( 2376 ) 6 bits: 000111
[#] recv <<<: [ 150775 .. 175352 ] ( 24577 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[+] 2024-05-15T18:47:52Z remark: set ID to `78B8E012`
[#] sent >>>: [ 17163 .. 31609 ] ( 14446 ) 37 bits: 0001010001100111110001101111000111000
[#] recv <<<: no data
[#] sent >>>: [ 86259 .. 88637 ] ( 2378 ) 6 bits: 000001
[#] recv <<<: [ 95089 .. 107379 ] ( 12290 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 114112 .. 116487 ] ( 2375 ) 6 bits: 000010
[#] recv <<<: [ 122940 .. 135230 ] ( 12290 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 141963 .. 144336 ] ( 2373 ) 6 bits: 000111
[#] recv <<<: [ 150780 .. 175358 ] ( 24578 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[#] sent >>>: [ 17163 .. 31604 ] ( 14441 ) 37 bits: 0001010001011110100000000110010111010
[#] recv <<<: no data
[#] sent >>>: [ 80499 .. 82872 ] ( 2373 ) 6 bits: 000001
[#] recv <<<: [ 89328 .. 101618 ] ( 12290 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 108350 .. 110726 ] ( 2376 ) 6 bits: 000010
[#] recv <<<: [ 117192 .. 129481 ] ( 12289 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 136216 .. 138590 ] ( 2374 ) 6 bits: 000111
[#] recv <<<: [ 145032 .. 169610 ] ( 24578 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[+] 2024-05-15T18:47:52Z remark: set UM1 to `21DF5678` (unlocked) ... write block 1 last!
[#] sent >>>: [ 17157 .. 31590 ] ( 14433 ) 37 bits: 0001010000000101001100011111000111000
[#] recv <<<: no data
[#] sent >>>: [ 80482 .. 82860 ] ( 2378 ) 6 bits: 000001
[#] recv <<<: [ 89310 .. 101601 ] ( 12291 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 108333 .. 110709 ] ( 2376 ) 6 bits: 000010
[#] recv <<<: [ 117175 .. 129464 ] ( 12289 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 136198 .. 138572 ] ( 2374 ) 6 bits: 000111
[#] recv <<<: [ 145014 .. 169592 ] ( 24578 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]
[#] sent >>>: [ 17163 .. 31599 ] ( 14436 ) 37 bits: 0001010000110010100011110111111000010
[#] recv <<<: no data
[#] sent >>>: [ 80486 .. 82864 ] ( 2378 ) 6 bits: 000001
[#] recv <<<: [ 89316 .. 101606 ] ( 12290 ) 32 bits: 01111000101110001110000000010010
[#] sent >>>: [ 108338 .. 110714 ] ( 2376 ) 6 bits: 000010
[#] recv <<<: [ 117180 .. 129468 ] ( 12288 ) 32 bits: 00100001110111110101011001111000
[#] sent >>>: [ 136202 .. 138578 ] ( 2376 ) 6 bits: 000111
[#] recv <<<: [ 145020 .. 169599 ] ( 24579 ) 64 bits: 1010101010101010101010101010101010101010101010101010101010101010
[=] --- Tag Information ---------------------------
[=] Block | data | info
[=] ------+----------+-----------------------------
[=] 15 | AA AA | UM2
[=] 14 | AA AA | UM2
[=] 13 | AA AA | UM2
[=] 12 | AA AA | UM2
[=] ------+----------+-----------------------------
[=] 11 | -- -- | PIN write only
[=] 10 | -- -- | PIN write only
[=] ------+----------+-----------------------------
[=] 9 | -- -- | KEY write only
[=] 8 | -- -- | KEY write only
[=] 7 | -- -- | KEY write only
[=] 6 | -- -- | KEY write only
[=] 5 | -- -- | KEY write only
[=] 4 | -- -- | KEY write only
[=] ------+----------+-----------------------------
[=] 3 | 78 B8 | ID
[=] 2 | E0 12 | ID
[=] ------+----------+-----------------------------
[=] 1 | 21 DF | UM1
[=] 0 | 56 78 | UM1
[=] ------+----------+-----------------------------
[=]
[=] Tag ID: 78 B8 E0 12
[=] Lockbit 0: 0
[=] Lockbit 1: 0
[=] Tag is UNLOCKED.
[=]