mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 21:33:47 -07:00
Create hf-writer.lua
This commit is contained in:
parent
8cf88c5cd5
commit
9ff3ed2933
1 changed files with 124 additions and 0 deletions
124
client/luascripts/hf-writer.lua
Normal file
124
client/luascripts/hf-writer.lua
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
local utils = require('utils')
|
||||||
|
local read14a = require('read14a')
|
||||||
|
local uid = {} -- Array for eml files
|
||||||
|
local B = {} -- Array for B keys
|
||||||
|
local eml = {} -- Array for data in block 32 dig
|
||||||
|
local a = 0
|
||||||
|
local b = 0
|
||||||
|
local tab = string.rep('-', 64)
|
||||||
|
|
||||||
|
local function read()
|
||||||
|
u = read14a.read(true, true).uid
|
||||||
|
return u
|
||||||
|
end
|
||||||
|
|
||||||
|
local function fkey()
|
||||||
|
f = 'FFFFFFFFFFFF'
|
||||||
|
return f
|
||||||
|
end
|
||||||
|
|
||||||
|
local function finish()
|
||||||
|
read14a.disconnect()
|
||||||
|
core.clearCommandBuffer()
|
||||||
|
end
|
||||||
|
|
||||||
|
local function wait() read14a.waitFor14443a() end
|
||||||
|
|
||||||
|
wait()
|
||||||
|
|
||||||
|
print(tab)
|
||||||
|
|
||||||
|
if string.len(read()) == 14 then -- Detect 7 byte card
|
||||||
|
l = 29 -- 7 byte length of eml file
|
||||||
|
s = 7
|
||||||
|
e = 20
|
||||||
|
else
|
||||||
|
l = 23 -- 4 byte length of eml file
|
||||||
|
s = 7
|
||||||
|
e = 14
|
||||||
|
end
|
||||||
|
|
||||||
|
for _ in io.popen([[dir ".\" /b]]):lines() do -- for UNIX: ls
|
||||||
|
if string.find(_, '%.eml$') then
|
||||||
|
if string.len(_) == l then -- There length of eml file
|
||||||
|
a = a + 1
|
||||||
|
uid[a] = string.sub(tostring(_), s, e) -- Cut UID from eml file
|
||||||
|
print(' ' .. a .. ' ' .. '|' .. ' ' .. uid[a])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
print(tab)
|
||||||
|
print(' Your card has ' .. read() .. ' UID number\n')
|
||||||
|
print(' Choice your dump number to write (from 1 until ' .. a .. ')')
|
||||||
|
print(tab)
|
||||||
|
io.write(' --> ')
|
||||||
|
|
||||||
|
local no = tonumber(io.read())
|
||||||
|
local dump = io.open('./hf-mf-' .. uid[no] .. '-data.eml', 'r');
|
||||||
|
|
||||||
|
print(tab)
|
||||||
|
print(' You have been selected ' .. no .. ' card dump, it UID is ' .. uid[no])
|
||||||
|
|
||||||
|
for _ in dump:lines() do table.insert(eml, _); end
|
||||||
|
for i = 1, #eml do
|
||||||
|
if (i % 4 == 0) then
|
||||||
|
repeat
|
||||||
|
b = b + 1
|
||||||
|
B[b] = string.sub(tostring(eml[i]), (string.len(eml[i]) - 11),
|
||||||
|
string.len(eml[i])) -- Cut key from block
|
||||||
|
until b % 4 == 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
print(tab)
|
||||||
|
|
||||||
|
if (utils.confirm(' Do the UID changing?') == true) then
|
||||||
|
wait()
|
||||||
|
core.console('hf 14a raw -s -c -t 2000 90f0cccc10' .. tostring(eml[1]))
|
||||||
|
print(tab)
|
||||||
|
print(' The new card UID is: ' .. read())
|
||||||
|
end
|
||||||
|
|
||||||
|
print(tab)
|
||||||
|
|
||||||
|
if (utils.confirm(' Would you like to BLOCK the UID for any changing?') == true) then
|
||||||
|
wait()
|
||||||
|
core.console('hf 14a raw -s -c -t 2000 90fd111100')
|
||||||
|
end
|
||||||
|
|
||||||
|
print(tab)
|
||||||
|
|
||||||
|
if (utils.confirm(' At this case are you using a Blank Card?') == true) then
|
||||||
|
wait()
|
||||||
|
for i = 1, #eml do
|
||||||
|
core.console('hf mf wrbl ' .. (i - 1) .. ' B ' .. fkey() .. ' ' ..
|
||||||
|
tostring(eml[i]))
|
||||||
|
end
|
||||||
|
print(tab)
|
||||||
|
else
|
||||||
|
print(tab)
|
||||||
|
if (utils.confirm(
|
||||||
|
' Do you wishing DELETE ALL DATA and rewrite all keys to ' .. fkey() ..
|
||||||
|
'?') == true) then
|
||||||
|
wait()
|
||||||
|
for i = 1, #eml do
|
||||||
|
if (i % 4 == 0) then
|
||||||
|
core.console(
|
||||||
|
'hf mf wrbl ' .. (i - 1) .. ' B ' .. tostring(B[i]) .. ' ' ..
|
||||||
|
fkey() .. '78778800' .. fkey())
|
||||||
|
else
|
||||||
|
core.console(
|
||||||
|
'hf mf wrbl ' .. (i - 1) .. ' B ' .. tostring(B[i]) .. ' ' ..
|
||||||
|
string.rep('0', 32))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
wait()
|
||||||
|
for i = 1, #eml do
|
||||||
|
core.console('hf mf wrbl ' .. (i - 1) .. ' B ' .. tostring(B[i]) ..
|
||||||
|
' ' .. tostring(eml[i]))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
finish()
|
Loading…
Add table
Add a link
Reference in a new issue