Merge pull request #1925 from augustozanellato/gen4_lua_mfc_signature

Add mfc signature support to gen4 lua script
This commit is contained in:
Iceman 2023-02-27 17:30:45 +01:00 committed by GitHub
commit 558129c3fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 12 deletions

View file

@ -22,6 +22,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac
- Changed `hf iclass decrypt` - mark credentials as decrypted in the dump (@natesales) - Changed `hf iclass decrypt` - mark credentials as decrypted in the dump (@natesales)
- Changed `hf iclass view` - show credentials on a decrypted dump (@natesales) - Changed `hf iclass view` - show credentials on a decrypted dump (@natesales)
- Show NTAG213TT tamper info in `hf mfu info` and add commands for configuring it's tamper feature (@mjaksn) - Show NTAG213TT tamper info in `hf mfu info` and add commands for configuring it's tamper feature (@mjaksn)
- Add Mifare Classic EV1 signature write support to gen4 magic tag lua script (@augustozanellato)
## [Nitride.4.16191][2023-01-29] ## [Nitride.4.16191][2023-01-29]
- Changed `build_all_firmwares.sh` to fit GENERIC 256kb firmware images (@doegox) - Changed `build_all_firmwares.sh` to fit GENERIC 256kb firmware images (@doegox)

View file

@ -13,7 +13,7 @@ local err_lock = 'use -k or change cfg0 block'
local _print = 0 local _print = 0
copyright = '' copyright = ''
author = 'Nathan Glaser' author = 'Nathan Glaser'
version = 'v1.0.4' version = 'v1.0.5'
date = 'Created - Jan 2022' date = 'Created - Jan 2022'
desc = 'This script enables easy programming of an Ultimate Mifare Magic card' desc = 'This script enables easy programming of an Ultimate Mifare Magic card'
example = [[ example = [[
@ -483,17 +483,29 @@ local function write_signature(data)
end end
local info = connect() local info = connect()
if not info then return false, "Can't select card" end if not info then return false, "Can't select card" end
if ulprotocol == '00' then return nil, 'Magic Card is not using the Ultralight Protocol' end if ulprotocol == '00' then
print('Writing new signature',data) print('Writing new MFC signature',data)
local b,c send('CF'.._key..'6B48')
local cmd = 'A2F%d%s' lib14a.disconnect()
local j = 2 connect() -- not 100% sure why it's needed, but without this blocks aren't actually written
for i = 1, #data, 8 do local sig1 = data:sub(1, 32)
b = data:sub(i,i+7) local sig2 = data:sub(33, 64)
c = cmd:format(j,b)
local resp = send(c) send('CF'.._key..'CD45'..sig1)
if resp ~= '0A' then lib14a.disconnect(); return nil, oops('Failed to write signature') end send('CF'.._key..'CD46'..sig2)
j = j + 1 send('CF'.._key..'CD475C8FF9990DA270F0F8694B791BEA7BCC')
else
print('Writing new MFUL signature',data)
local b,c
local cmd = 'A2F%d%s'
local j = 2
for i = 1, #data, 8 do
b = data:sub(i,i+7)
c = cmd:format(j,b)
local resp = send(c)
if resp ~= '0A' then lib14a.disconnect(); return nil, oops('Failed to write signature') end
j = j + 1
end
end end
lib14a.disconnect() lib14a.disconnect()
return true, 'Ok' return true, 'Ok'