mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-11-12 04:26:41 +08:00
83 lines
1.9 KiB
Lua
83 lines
1.9 KiB
Lua
|
local getopt = require('getopt')
|
||
|
local lib14a = require('read14a')
|
||
|
local cmds = require('commands')
|
||
|
local ansicolors = require('ansicolors')
|
||
|
|
||
|
copyright = 'Copyright 2020 A. Ozkal, released under GPLv2+.'
|
||
|
author = 'Ave'
|
||
|
version = 'v0.1.1'
|
||
|
desc = [[
|
||
|
This script writes a bunch of random blocks to a Mifare Classic card
|
||
|
]]
|
||
|
example = [[
|
||
|
script run mfc_hammerlite -w 1000 -k FFFFFFFFFFFF
|
||
|
]]
|
||
|
usage = [[
|
||
|
script run mfc_hammerlite [-h] [-w <writecount>] [-k <key>]
|
||
|
]]
|
||
|
arguments = [[
|
||
|
-h : This help
|
||
|
-w <writeroundcount> : Amount of write rounds to be done to each block (optional, default: 100)
|
||
|
-k <key> : A key for the sectors
|
||
|
]]
|
||
|
|
||
|
local function help()
|
||
|
print(author)
|
||
|
print(version)
|
||
|
print(desc)
|
||
|
print(ansicolors.cyan..'Usage'..ansicolors.reset)
|
||
|
print(usage)
|
||
|
print(ansicolors.cyan..'Arguments'..ansicolors.reset)
|
||
|
print(arguments)
|
||
|
print(ansicolors.cyan..'Example usage'..ansicolors.reset)
|
||
|
print(example)
|
||
|
end
|
||
|
|
||
|
function randhex(len)
|
||
|
result = ""
|
||
|
for i = 1,len,1
|
||
|
do
|
||
|
-- 48-57 numbers, 65-70 a-f
|
||
|
hex = math.random(0, 15)
|
||
|
if hex >= 10 then
|
||
|
hex = hex + 7
|
||
|
end
|
||
|
result = result..string.char(48 + hex)
|
||
|
end
|
||
|
return result
|
||
|
end
|
||
|
|
||
|
---
|
||
|
-- The main entry point
|
||
|
function main(args)
|
||
|
-- param defaults
|
||
|
loopcount = 100
|
||
|
verifyevery = 10
|
||
|
key = "FFFFFFFFFFFF"
|
||
|
|
||
|
-- Read the parameters
|
||
|
for o, a in getopt.getopt(args, 'hw:k:') do
|
||
|
if o == 'h' then return help() end
|
||
|
if o == 'w' then loopcount = tonumber(a) end
|
||
|
if o == 'k' then key = a end
|
||
|
end
|
||
|
|
||
|
starttime = os.time()
|
||
|
|
||
|
for i = 1,loopcount,1
|
||
|
do
|
||
|
for a = 1,63,1
|
||
|
do
|
||
|
if ((a + 1) % 4 ~= 0) and a ~= 0 then -- :)
|
||
|
data = randhex(32)
|
||
|
-- core.console('hf mf rdbl '..a..' A FFFFFFFFFFFF')
|
||
|
core.console('hf mf wrbl '..a..' A '..key..' '..data)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
print("Hammering complete.")
|
||
|
end
|
||
|
|
||
|
main(args)
|