mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2026-05-12 11:18:11 -07:00
style
This commit is contained in:
@@ -542,7 +542,7 @@ void RunMod(void) {
|
||||
sprintf(dumpFileName, DUMP_FILE, mattyrun_card.uid[0], mattyrun_card.uid[1], mattyrun_card.uid[2], mattyrun_card.uid[3]);
|
||||
rdv40_spiffs_write(dumpFileName, emCARD, 1024, RDV40_SPIFFS_SAFETY_SAFE);
|
||||
Dbprintf("[" _GREEN_("+") "] " _GREEN_("Stored card on %s"), dumpFileName);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
state = STATE_EMULATE;
|
||||
|
||||
+1
-1
@@ -349,7 +349,7 @@ int sam_get_serial_number(void) {
|
||||
}
|
||||
|
||||
Dbprintf(_YELLOW_("Serial Number: "));
|
||||
Dbhexdump(sam_response_an[1],sam_serial_an, false);
|
||||
Dbhexdump(sam_response_an[1], sam_serial_an, false);
|
||||
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -356,7 +356,7 @@ int sam_picopass_get_pacs(PacketCommandNG *c) {
|
||||
// step 1: ping SAM
|
||||
sam_get_version(info);
|
||||
|
||||
if(info){
|
||||
if (info) {
|
||||
sam_get_serial_number();
|
||||
goto out;
|
||||
}
|
||||
|
||||
+746
-746
File diff suppressed because it is too large
Load Diff
@@ -1,128 +1,128 @@
|
||||
local getopt = require('getopt')
|
||||
|
||||
|
||||
copyright = ''
|
||||
author = "TheChamp669"
|
||||
version = 'v1.0.0'
|
||||
desc = [[
|
||||
Perform bulk enrollment of 26 bit AWID style RFID Tags
|
||||
For more info, check the comments in the code
|
||||
]]
|
||||
example = [[
|
||||
--
|
||||
script run lf_awid_bulkclone.lua -f 1 -b 1000
|
||||
]]
|
||||
usage = [[
|
||||
script run lf_awid_bulkclone.lua -f facility -b base_id_num
|
||||
]]
|
||||
arguments = [[
|
||||
-h : this help
|
||||
-f : facility id
|
||||
-b : starting card id
|
||||
]]
|
||||
local DEBUG = true
|
||||
---
|
||||
-- A debug printout-function
|
||||
local function dbg(args)
|
||||
if not DEBUG then return end
|
||||
if type(args) == 'table' then
|
||||
local i = 1
|
||||
while args[i] do
|
||||
dbg(args[i])
|
||||
i = i+1
|
||||
end
|
||||
else
|
||||
print('###', args)
|
||||
end
|
||||
end
|
||||
---
|
||||
-- This is only meant to be used when errors occur
|
||||
local function oops(err)
|
||||
print('ERROR:', err)
|
||||
core.clearCommandBuffer()
|
||||
return nil, errr
|
||||
end
|
||||
---
|
||||
-- Usage help
|
||||
local function help()
|
||||
print(copyright)
|
||||
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
|
||||
---
|
||||
-- Exit message
|
||||
local function exitMsg(msg)
|
||||
print( string.rep('--',20) )
|
||||
print( string.rep('--',20) )
|
||||
print(msg)
|
||||
print()
|
||||
end
|
||||
|
||||
local function showHelp()
|
||||
print("Usage: script run <scriptname> [-h]")
|
||||
print("Options:")
|
||||
print("-h \t This help")
|
||||
end
|
||||
|
||||
local function main(args)
|
||||
|
||||
|
||||
print( string.rep('--',20) )
|
||||
print( string.rep('--',20) )
|
||||
print()
|
||||
|
||||
if #args == 0 then return help() end
|
||||
|
||||
for o, a in getopt.getopt(args, 'f:b:c:h') do
|
||||
if o == 'h' then return help() end
|
||||
if o == 'f' then
|
||||
if isempty(a) then
|
||||
print('You did not supply a facility code, using 255')
|
||||
fc = 255
|
||||
else
|
||||
fc = a
|
||||
end
|
||||
end
|
||||
if o == 'b' then
|
||||
if isempty(a) then
|
||||
print('You did not supply a starting card number, using 59615')
|
||||
cn = 59615
|
||||
else
|
||||
cn = a
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Example starting values
|
||||
local sessionStart = os.date("%Y_%m_%d_%H_%M_%S") -- Capture the session start time
|
||||
|
||||
print("Session Start: " .. sessionStart)
|
||||
print("Facility Code,Card Number")
|
||||
|
||||
while true do
|
||||
print(string.format("Preparing to Write: Facility Code %d, Card Number %d", fc, cn))
|
||||
|
||||
local command = string.format("lf awid clone --fmt 26 --fc %d --cn %d", fc, cn)
|
||||
core.console(command)
|
||||
|
||||
print(string.format("%d,%d", fc, cn))
|
||||
|
||||
print("Press Enter to continue with the next card number or type 'q' and press Enter to quit.")
|
||||
local user_input = io.read()
|
||||
|
||||
if user_input:lower() == 'q' then
|
||||
break
|
||||
else
|
||||
cn = cn + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local getopt = require('getopt')
|
||||
|
||||
|
||||
copyright = ''
|
||||
author = "TheChamp669"
|
||||
version = 'v1.0.0'
|
||||
desc = [[
|
||||
Perform bulk enrollment of 26 bit AWID style RFID Tags
|
||||
For more info, check the comments in the code
|
||||
]]
|
||||
example = [[
|
||||
--
|
||||
script run lf_awid_bulkclone.lua -f 1 -b 1000
|
||||
]]
|
||||
usage = [[
|
||||
script run lf_awid_bulkclone.lua -f facility -b base_id_num
|
||||
]]
|
||||
arguments = [[
|
||||
-h : this help
|
||||
-f : facility id
|
||||
-b : starting card id
|
||||
]]
|
||||
local DEBUG = true
|
||||
---
|
||||
-- A debug printout-function
|
||||
local function dbg(args)
|
||||
if not DEBUG then return end
|
||||
if type(args) == 'table' then
|
||||
local i = 1
|
||||
while args[i] do
|
||||
dbg(args[i])
|
||||
i = i+1
|
||||
end
|
||||
else
|
||||
print('###', args)
|
||||
end
|
||||
end
|
||||
---
|
||||
-- This is only meant to be used when errors occur
|
||||
local function oops(err)
|
||||
print('ERROR:', err)
|
||||
core.clearCommandBuffer()
|
||||
return nil, errr
|
||||
end
|
||||
---
|
||||
-- Usage help
|
||||
local function help()
|
||||
print(copyright)
|
||||
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
|
||||
---
|
||||
-- Exit message
|
||||
local function exitMsg(msg)
|
||||
print( string.rep('--',20) )
|
||||
print( string.rep('--',20) )
|
||||
print(msg)
|
||||
print()
|
||||
end
|
||||
|
||||
local function showHelp()
|
||||
print("Usage: script run <scriptname> [-h]")
|
||||
print("Options:")
|
||||
print("-h \t This help")
|
||||
end
|
||||
|
||||
local function main(args)
|
||||
|
||||
|
||||
print( string.rep('--',20) )
|
||||
print( string.rep('--',20) )
|
||||
print()
|
||||
|
||||
if #args == 0 then return help() end
|
||||
|
||||
for o, a in getopt.getopt(args, 'f:b:c:h') do
|
||||
if o == 'h' then return help() end
|
||||
if o == 'f' then
|
||||
if isempty(a) then
|
||||
print('You did not supply a facility code, using 255')
|
||||
fc = 255
|
||||
else
|
||||
fc = a
|
||||
end
|
||||
end
|
||||
if o == 'b' then
|
||||
if isempty(a) then
|
||||
print('You did not supply a starting card number, using 59615')
|
||||
cn = 59615
|
||||
else
|
||||
cn = a
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Example starting values
|
||||
local sessionStart = os.date("%Y_%m_%d_%H_%M_%S") -- Capture the session start time
|
||||
|
||||
print("Session Start: " .. sessionStart)
|
||||
print("Facility Code,Card Number")
|
||||
|
||||
while true do
|
||||
print(string.format("Preparing to Write: Facility Code %d, Card Number %d", fc, cn))
|
||||
|
||||
local command = string.format("lf awid clone --fmt 26 --fc %d --cn %d", fc, cn)
|
||||
core.console(command)
|
||||
|
||||
print(string.format("%d,%d", fc, cn))
|
||||
|
||||
print("Press Enter to continue with the next card number or type 'q' and press Enter to quit.")
|
||||
local user_input = io.read()
|
||||
|
||||
if user_input:lower() == 'q' then
|
||||
break
|
||||
else
|
||||
cn = cn + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
main(args)
|
||||
|
||||
@@ -1,131 +1,131 @@
|
||||
local getopt = require('getopt')
|
||||
local ansicolors = require('ansicolors')
|
||||
local cmds = require('commands')
|
||||
|
||||
copyright = ''
|
||||
author = "TheChamop669"
|
||||
version = 'v1.0.1'
|
||||
desc = [[
|
||||
Perform bulk enrollment of 26 bit H10301 style RFID Tags
|
||||
For more info, check the comments in the code
|
||||
]]
|
||||
example = [[
|
||||
--
|
||||
script run lf_hid_bulkclone_v2.lua -f 1 -b 1000
|
||||
]]
|
||||
usage = [[
|
||||
script run lf_hid_bulkclone_v2.lua -f facility -b base_id_num
|
||||
]]
|
||||
arguments = [[
|
||||
-h : this help
|
||||
-f : facility id
|
||||
-b : starting card id
|
||||
]]
|
||||
local DEBUG = true
|
||||
---
|
||||
-- A debug printout-function
|
||||
local function dbg(args)
|
||||
if not DEBUG then return end
|
||||
if type(args) == 'table' then
|
||||
local i = 1
|
||||
while args[i] do
|
||||
dbg(args[i])
|
||||
i = i+1
|
||||
end
|
||||
else
|
||||
print('###', args)
|
||||
end
|
||||
end
|
||||
---
|
||||
-- This is only meant to be used when errors occur
|
||||
local function oops(err)
|
||||
print('ERROR:', err)
|
||||
core.clearCommandBuffer()
|
||||
return nil, errr
|
||||
end
|
||||
---
|
||||
-- Usage help
|
||||
local function help()
|
||||
print(copyright)
|
||||
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
|
||||
---
|
||||
-- Exit message
|
||||
local function exitMsg(msg)
|
||||
print( string.rep('--',20) )
|
||||
print( string.rep('--',20) )
|
||||
print(msg)
|
||||
print()
|
||||
end
|
||||
|
||||
local function main(args)
|
||||
|
||||
print( string.rep('--',20) )
|
||||
print( string.rep('--',20) )
|
||||
print()
|
||||
|
||||
if #args == 0 then return help() end
|
||||
|
||||
for o, a in getopt.getopt(args, 'f:b:h') do
|
||||
if o == 'h' then return help() end
|
||||
if o == 'f' then
|
||||
if isempty(a) then
|
||||
print('You did not supply a facility code, using 0')
|
||||
fc = 10
|
||||
else
|
||||
fc = a
|
||||
end
|
||||
end
|
||||
if o == 'b' then
|
||||
if isempty(a) then
|
||||
print('You did not supply a starting card number, using 1000')
|
||||
cn = 1000
|
||||
else
|
||||
cn = a
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local successful_writes = {}
|
||||
local timestamp = os.date('%Y-%m-%d %H:%M:%S', os.time())
|
||||
|
||||
while true do
|
||||
print(string.format("Writing Facility Code: %d, Card Number: %d", fc, cn))
|
||||
|
||||
local command = string.format("lf hid clone -w H10301 --fc %d --cn %d", fc, cn)
|
||||
core.console(command)
|
||||
|
||||
table.insert(successful_writes, string.format("%d,%d", fc, cn))
|
||||
|
||||
print("Press Enter to write the next card, type 'r' and press Enter to retry, or type 'q' and press Enter to quit.")
|
||||
local user_input = io.read()
|
||||
|
||||
if user_input:lower() == 'q' then
|
||||
print("Timestamp: ", timestamp)
|
||||
print("Successful Writes:")
|
||||
for _, v in ipairs(successful_writes) do print(v) end
|
||||
break
|
||||
elseif user_input:lower() ~= 'r' then
|
||||
cn = cn + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
main(args)
|
||||
|
||||
--[[
|
||||
Notes:
|
||||
1. The `lf hid clone` command is used to write HID formatted data to T5577 cards, using the H10301 format.
|
||||
2. The script prompts the user for the initial facility code and card number at the start of the session.
|
||||
3. Users can continue to write to the next card, retry the current write, or quit the session by responding to the prompts.
|
||||
4. Upon quitting, the script prints all successful writes along with a timestamp.
|
||||
5. Password-related features have been removed in this version of the script as they are not supported by the `lf hid clone` command.
|
||||
]]
|
||||
local getopt = require('getopt')
|
||||
local ansicolors = require('ansicolors')
|
||||
local cmds = require('commands')
|
||||
|
||||
copyright = ''
|
||||
author = "TheChamop669"
|
||||
version = 'v1.0.1'
|
||||
desc = [[
|
||||
Perform bulk enrollment of 26 bit H10301 style RFID Tags
|
||||
For more info, check the comments in the code
|
||||
]]
|
||||
example = [[
|
||||
--
|
||||
script run lf_hid_bulkclone_v2.lua -f 1 -b 1000
|
||||
]]
|
||||
usage = [[
|
||||
script run lf_hid_bulkclone_v2.lua -f facility -b base_id_num
|
||||
]]
|
||||
arguments = [[
|
||||
-h : this help
|
||||
-f : facility id
|
||||
-b : starting card id
|
||||
]]
|
||||
local DEBUG = true
|
||||
---
|
||||
-- A debug printout-function
|
||||
local function dbg(args)
|
||||
if not DEBUG then return end
|
||||
if type(args) == 'table' then
|
||||
local i = 1
|
||||
while args[i] do
|
||||
dbg(args[i])
|
||||
i = i+1
|
||||
end
|
||||
else
|
||||
print('###', args)
|
||||
end
|
||||
end
|
||||
---
|
||||
-- This is only meant to be used when errors occur
|
||||
local function oops(err)
|
||||
print('ERROR:', err)
|
||||
core.clearCommandBuffer()
|
||||
return nil, errr
|
||||
end
|
||||
---
|
||||
-- Usage help
|
||||
local function help()
|
||||
print(copyright)
|
||||
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
|
||||
---
|
||||
-- Exit message
|
||||
local function exitMsg(msg)
|
||||
print( string.rep('--',20) )
|
||||
print( string.rep('--',20) )
|
||||
print(msg)
|
||||
print()
|
||||
end
|
||||
|
||||
local function main(args)
|
||||
|
||||
print( string.rep('--',20) )
|
||||
print( string.rep('--',20) )
|
||||
print()
|
||||
|
||||
if #args == 0 then return help() end
|
||||
|
||||
for o, a in getopt.getopt(args, 'f:b:h') do
|
||||
if o == 'h' then return help() end
|
||||
if o == 'f' then
|
||||
if isempty(a) then
|
||||
print('You did not supply a facility code, using 0')
|
||||
fc = 10
|
||||
else
|
||||
fc = a
|
||||
end
|
||||
end
|
||||
if o == 'b' then
|
||||
if isempty(a) then
|
||||
print('You did not supply a starting card number, using 1000')
|
||||
cn = 1000
|
||||
else
|
||||
cn = a
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local successful_writes = {}
|
||||
local timestamp = os.date('%Y-%m-%d %H:%M:%S', os.time())
|
||||
|
||||
while true do
|
||||
print(string.format("Writing Facility Code: %d, Card Number: %d", fc, cn))
|
||||
|
||||
local command = string.format("lf hid clone -w H10301 --fc %d --cn %d", fc, cn)
|
||||
core.console(command)
|
||||
|
||||
table.insert(successful_writes, string.format("%d,%d", fc, cn))
|
||||
|
||||
print("Press Enter to write the next card, type 'r' and press Enter to retry, or type 'q' and press Enter to quit.")
|
||||
local user_input = io.read()
|
||||
|
||||
if user_input:lower() == 'q' then
|
||||
print("Timestamp: ", timestamp)
|
||||
print("Successful Writes:")
|
||||
for _, v in ipairs(successful_writes) do print(v) end
|
||||
break
|
||||
elseif user_input:lower() ~= 'r' then
|
||||
cn = cn + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
main(args)
|
||||
|
||||
--[[
|
||||
Notes:
|
||||
1. The `lf hid clone` command is used to write HID formatted data to T5577 cards, using the H10301 format.
|
||||
2. The script prompts the user for the initial facility code and card number at the start of the session.
|
||||
3. Users can continue to write to the next card, retry the current write, or quit the session by responding to the prompts.
|
||||
4. Upon quitting, the script prints all successful writes along with a timestamp.
|
||||
5. Password-related features have been removed in this version of the script as they are not supported by the `lf hid clone` command.
|
||||
]]
|
||||
|
||||
@@ -1,125 +1,125 @@
|
||||
local getopt = require('getopt')
|
||||
local cmds = require('commands')
|
||||
|
||||
|
||||
copyright = ''
|
||||
author = "TheChamp669"
|
||||
version = 'v1.0.0'
|
||||
desc = [[
|
||||
Perform bulk enrollment of 26 bit IO Prox / Kantech style RFID Tags
|
||||
The vnc is set to 2.
|
||||
For more info, check the comments in the code
|
||||
]]
|
||||
example = [[
|
||||
--
|
||||
script run lf_ioprox_bulkclone.lua -f 1 -b 1000
|
||||
]]
|
||||
usage = [[
|
||||
script run lf_ioprox_bulkclone.lua -f facility -b base_id_num
|
||||
]]
|
||||
arguments = [[
|
||||
-h : this help
|
||||
-f : facility id
|
||||
-b : starting card id
|
||||
]]
|
||||
local DEBUG = true
|
||||
|
||||
---
|
||||
-- A debug printout-function
|
||||
local function dbg(args)
|
||||
if not DEBUG then return end
|
||||
if type(args) == 'table' then
|
||||
local i = 1
|
||||
while args[i] do
|
||||
dbg(args[i])
|
||||
i = i+1
|
||||
end
|
||||
else
|
||||
print('###', args)
|
||||
end
|
||||
end
|
||||
---
|
||||
-- This is only meant to be used when errors occur
|
||||
local function oops(err)
|
||||
print('ERROR:', err)
|
||||
core.clearCommandBuffer()
|
||||
return nil, errr
|
||||
end
|
||||
---
|
||||
-- Usage help
|
||||
local function help()
|
||||
print(copyright)
|
||||
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
|
||||
---
|
||||
-- Exit message
|
||||
local function exitMsg(msg)
|
||||
print( string.rep('--',20) )
|
||||
print( string.rep('--',20) )
|
||||
print(msg)
|
||||
print()
|
||||
end
|
||||
|
||||
local function main(args)
|
||||
|
||||
print( string.rep('--',20) )
|
||||
print( string.rep('--',20) )
|
||||
print()
|
||||
|
||||
if #args == 0 then return help() end
|
||||
|
||||
for o, a in getopt.getopt(args, 'f:b:h') do
|
||||
if o == 'h' then return help() end
|
||||
if o == 'f' then
|
||||
if isempty(a) then
|
||||
print('You did not supply a facility code, using 0')
|
||||
fc = 0
|
||||
else
|
||||
fc = a
|
||||
end
|
||||
end
|
||||
if o == 'b' then
|
||||
if isempty(a) then return oops('You must supply the flag -b (starting card number)') end
|
||||
cn = a
|
||||
end
|
||||
end
|
||||
|
||||
local successful_writes = {}
|
||||
local timestamp = os.date('%Y-%m-%d %H:%M:%S', os.time())
|
||||
|
||||
while true do
|
||||
print(string.format("Setting fob to Facility Code: %d, Card Number: %d", fc, cn))
|
||||
|
||||
-- Writing to block 0 with the specific data for ioProx card format
|
||||
core.console("lf t55xx write -b 0 -d 00147040")
|
||||
|
||||
-- Command to set facility code and card number on the fob
|
||||
local command = string.format("lf io clone --vn 2 --fc %d --cn %d", fc, cn)
|
||||
core.console(command)
|
||||
|
||||
table.insert(successful_writes, string.format("%d,%d", fc, cn))
|
||||
print("Fob created successfully.")
|
||||
|
||||
print("Press Enter to create the next fob, type 'r' and press Enter to retry, or type 'q' and press Enter to quit.")
|
||||
local user_input = io.read()
|
||||
|
||||
if user_input:lower() == 'q' then
|
||||
print("Timestamp: ", timestamp)
|
||||
print("Successful Writes:")
|
||||
for _, v in ipairs(successful_writes) do print(v) end
|
||||
break
|
||||
elseif user_input:lower() ~= 'r' then
|
||||
cn = cn + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
main(args)
|
||||
local getopt = require('getopt')
|
||||
local cmds = require('commands')
|
||||
|
||||
|
||||
copyright = ''
|
||||
author = "TheChamp669"
|
||||
version = 'v1.0.0'
|
||||
desc = [[
|
||||
Perform bulk enrollment of 26 bit IO Prox / Kantech style RFID Tags
|
||||
The vnc is set to 2.
|
||||
For more info, check the comments in the code
|
||||
]]
|
||||
example = [[
|
||||
--
|
||||
script run lf_ioprox_bulkclone.lua -f 1 -b 1000
|
||||
]]
|
||||
usage = [[
|
||||
script run lf_ioprox_bulkclone.lua -f facility -b base_id_num
|
||||
]]
|
||||
arguments = [[
|
||||
-h : this help
|
||||
-f : facility id
|
||||
-b : starting card id
|
||||
]]
|
||||
local DEBUG = true
|
||||
|
||||
---
|
||||
-- A debug printout-function
|
||||
local function dbg(args)
|
||||
if not DEBUG then return end
|
||||
if type(args) == 'table' then
|
||||
local i = 1
|
||||
while args[i] do
|
||||
dbg(args[i])
|
||||
i = i+1
|
||||
end
|
||||
else
|
||||
print('###', args)
|
||||
end
|
||||
end
|
||||
---
|
||||
-- This is only meant to be used when errors occur
|
||||
local function oops(err)
|
||||
print('ERROR:', err)
|
||||
core.clearCommandBuffer()
|
||||
return nil, errr
|
||||
end
|
||||
---
|
||||
-- Usage help
|
||||
local function help()
|
||||
print(copyright)
|
||||
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
|
||||
---
|
||||
-- Exit message
|
||||
local function exitMsg(msg)
|
||||
print( string.rep('--',20) )
|
||||
print( string.rep('--',20) )
|
||||
print(msg)
|
||||
print()
|
||||
end
|
||||
|
||||
local function main(args)
|
||||
|
||||
print( string.rep('--',20) )
|
||||
print( string.rep('--',20) )
|
||||
print()
|
||||
|
||||
if #args == 0 then return help() end
|
||||
|
||||
for o, a in getopt.getopt(args, 'f:b:h') do
|
||||
if o == 'h' then return help() end
|
||||
if o == 'f' then
|
||||
if isempty(a) then
|
||||
print('You did not supply a facility code, using 0')
|
||||
fc = 0
|
||||
else
|
||||
fc = a
|
||||
end
|
||||
end
|
||||
if o == 'b' then
|
||||
if isempty(a) then return oops('You must supply the flag -b (starting card number)') end
|
||||
cn = a
|
||||
end
|
||||
end
|
||||
|
||||
local successful_writes = {}
|
||||
local timestamp = os.date('%Y-%m-%d %H:%M:%S', os.time())
|
||||
|
||||
while true do
|
||||
print(string.format("Setting fob to Facility Code: %d, Card Number: %d", fc, cn))
|
||||
|
||||
-- Writing to block 0 with the specific data for ioProx card format
|
||||
core.console("lf t55xx write -b 0 -d 00147040")
|
||||
|
||||
-- Command to set facility code and card number on the fob
|
||||
local command = string.format("lf io clone --vn 2 --fc %d --cn %d", fc, cn)
|
||||
core.console(command)
|
||||
|
||||
table.insert(successful_writes, string.format("%d,%d", fc, cn))
|
||||
print("Fob created successfully.")
|
||||
|
||||
print("Press Enter to create the next fob, type 'r' and press Enter to retry, or type 'q' and press Enter to quit.")
|
||||
local user_input = io.read()
|
||||
|
||||
if user_input:lower() == 'q' then
|
||||
print("Timestamp: ", timestamp)
|
||||
print("Successful Writes:")
|
||||
for _, v in ipairs(successful_writes) do print(v) end
|
||||
break
|
||||
elseif user_input:lower() ~= 'r' then
|
||||
cn = cn + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
main(args)
|
||||
|
||||
+487
-487
File diff suppressed because it is too large
Load Diff
@@ -1921,7 +1921,7 @@ int detect_nxp_card(uint8_t sak, uint16_t atqa, uint64_t select_status,
|
||||
// if ((sak & 0x01) == 0x01) { // SAK b2=0 b4=0 b5=1 b1=1, SAK=0x11
|
||||
// } else { // SAK b2=0 b4=0 b5=1 b1=0, SAK=0x10
|
||||
// }
|
||||
type |= MTPLUS;
|
||||
type |= MTPLUS;
|
||||
|
||||
} else { // SAK b2=0 b4=0 b5=0
|
||||
|
||||
|
||||
@@ -327,7 +327,7 @@ static const iclass_config_card_item_t *get_config_card_item(int idx) {
|
||||
static void print_config_cards(void) {
|
||||
PrintAndLogEx(INFO, "---- " _CYAN_("Config cards options") " ------------");
|
||||
for (int i = 0; i < ARRAYLEN(iclass_config_options) ; ++i) {
|
||||
switch (i){
|
||||
switch (i) {
|
||||
case 0:
|
||||
PrintAndLogEx(INFO, _YELLOW_("---- LED Operations ----"));
|
||||
break;
|
||||
|
||||
@@ -567,7 +567,7 @@ static int CmdEM4x70Brute(const char *Cmd) {
|
||||
return PM3_EINVARG;
|
||||
}
|
||||
CLIParserFree(ctx);
|
||||
|
||||
|
||||
// opts structure takes value in BIG ENDIAN form
|
||||
opts.partial_key_start[0] = (uint8_t)((start_key >> 8) & 0xFF);
|
||||
opts.partial_key_start[1] = (uint8_t)((start_key >> 0) & 0xFF);
|
||||
@@ -628,7 +628,7 @@ static int CmdEM4x70Unlock(const char *Cmd) {
|
||||
PrintAndLogEx(FAILED, "PIN length must be 4 bytes, got %d", pin_len);
|
||||
return PM3_EINVARG;
|
||||
}
|
||||
|
||||
|
||||
// Client command line parsing and validation complete ... now use the helper function
|
||||
em4x70_tag_info_t info;
|
||||
int result = unlock_em4x70(&opts, &info);
|
||||
@@ -768,7 +768,7 @@ static int CmdEM4x70SetKey(const char *Cmd) {
|
||||
PrintAndLogEx(FAILED, "Key length must be 12 bytes, got %d", key_len);
|
||||
return PM3_EINVARG;
|
||||
}
|
||||
|
||||
|
||||
// Client command line parsing and validation complete ... now use the helper function
|
||||
int result = setkey_em4x70(&opts);
|
||||
|
||||
|
||||
+19
-31
@@ -3682,9 +3682,10 @@
|
||||
"--break stop tag interaction on nr-mac",
|
||||
"-p, --prevent fake epurse update",
|
||||
"--shallow shallow mod",
|
||||
"-d, --data <hex> DER encoded command to send to SAM"
|
||||
"-d, --data <hex> DER encoded command to send to SAM",
|
||||
"--info get SAM infos (version, serial number)"
|
||||
],
|
||||
"usage": "hf iclass sam [-hvkntp] [--break] [--shallow] [-d <hex>]..."
|
||||
"usage": "hf iclass sam [-hvkntp] [--break] [--shallow] [-d <hex>]... [--info]"
|
||||
},
|
||||
"hf iclass sim": {
|
||||
"command": "hf iclass sim",
|
||||
@@ -7084,7 +7085,7 @@
|
||||
},
|
||||
"hf mfu aesauth": {
|
||||
"command": "hf mfu aesauth",
|
||||
"description": "Tests AES key on Mifare Ultralight AES tags. If no key is specified, null key will be tried. Key index 0: DataProtKey (default) Key index 1: UIDRetrKey Key index 2: OriginalityKey",
|
||||
"description": "Tests AES key on Mifare Ultralight AES tags. If no key is specified, null key will be tried. Key index 0... DataProtKey (default) Key index 1... UIDRetrKey Key index 2... OriginalityKey",
|
||||
"notes": [
|
||||
"hf mfu aesauth",
|
||||
"hf mfu aesauth --key <16 hex bytes> --index <0..2>"
|
||||
@@ -9397,11 +9398,10 @@
|
||||
"offline": false,
|
||||
"options": [
|
||||
"-h, --help This help",
|
||||
"--par Add parity bit when sending commands",
|
||||
"--rnd <hex> Random 56-bit",
|
||||
"--frn <hex> F(RN) 28-bit as 4 hex bytes"
|
||||
],
|
||||
"usage": "lf em 4x70 auth [-h] [--par] --rnd <hex> --frn <hex>"
|
||||
"usage": "lf em 4x70 auth [-h] --rnd <hex> --frn <hex>"
|
||||
},
|
||||
"lf em 4x70 autorecover": {
|
||||
"command": "lf em 4x70 autorecover",
|
||||
@@ -9414,12 +9414,11 @@
|
||||
"offline": false,
|
||||
"options": [
|
||||
"-h, --help This help",
|
||||
"--par Add parity bit when sending commands",
|
||||
"--rnd <hex> Random 56-bit from known-good authentication",
|
||||
"--frn <hex> F(RN) 28-bit as 4 hex bytes from known-good authentication",
|
||||
"--grn <hex> G(RN) 20-bit as 3 hex bytes from known-good authentication"
|
||||
],
|
||||
"usage": "lf em 4x70 autorecover [-h] [--par] --rnd <hex> --frn <hex> --grn <hex>"
|
||||
"usage": "lf em 4x70 autorecover [-h] --rnd <hex> --frn <hex> --grn <hex>"
|
||||
},
|
||||
"lf em 4x70 calc": {
|
||||
"command": "lf em 4x70 calc",
|
||||
@@ -9448,27 +9447,24 @@
|
||||
"offline": true,
|
||||
"options": [
|
||||
"-h, --help This help",
|
||||
"--par Add parity bit when sending commands",
|
||||
"-b, --block <dec> block/word address, dec",
|
||||
"--rnd <hex> Random 56-bit",
|
||||
"--frn <hex> F(RN) 28-bit as 4 hex bytes",
|
||||
"-s, --start <hex> Start bruteforce enumeration from this key value"
|
||||
],
|
||||
"usage": "lf em 4x70 brute [-h] [--par] -b <dec> --rnd <hex> --frn <hex> [-s <hex>]"
|
||||
"usage": "lf em 4x70 brute [-h] -b <dec> --rnd <hex> --frn <hex> [-s <hex>]"
|
||||
},
|
||||
"lf em 4x70 info": {
|
||||
"command": "lf em 4x70 info",
|
||||
"description": "Tag Information EM4x70 Tag variants include ID48 automotive transponder. ID48 does not use command parity (default). V4070 and EM4170 do require parity bit.",
|
||||
"notes": [
|
||||
"lf em 4x70 info",
|
||||
"lf em 4x70 info --par -> adds parity bit to command"
|
||||
"lf em 4x70 info"
|
||||
],
|
||||
"offline": false,
|
||||
"options": [
|
||||
"-h, --help This help",
|
||||
"--par Add parity bit when sending commands"
|
||||
"-h, --help This help"
|
||||
],
|
||||
"usage": "lf em 4x70 info [-h] [--par]"
|
||||
"usage": "lf em 4x70 info [-h]"
|
||||
},
|
||||
"lf em 4x70 recover": {
|
||||
"command": "lf em 4x70 recover",
|
||||
@@ -9481,13 +9477,12 @@
|
||||
"offline": true,
|
||||
"options": [
|
||||
"-h, --help This help",
|
||||
"--par Add parity bit when sending commands",
|
||||
"-k, --key <hex> Key as 6 hex bytes",
|
||||
"--rnd <hex> Random 56-bit",
|
||||
"--frn <hex> F(RN) 28-bit as 4 hex bytes",
|
||||
"--grn <hex> G(RN) 20-bit as 3 hex bytes"
|
||||
],
|
||||
"usage": "lf em 4x70 recover [-h] [--par] -k <hex> --rnd <hex> --frn <hex> --grn <hex>"
|
||||
"usage": "lf em 4x70 recover [-h] -k <hex> --rnd <hex> --frn <hex> --grn <hex>"
|
||||
},
|
||||
"lf em 4x70 setkey": {
|
||||
"command": "lf em 4x70 setkey",
|
||||
@@ -9500,56 +9495,49 @@
|
||||
"offline": false,
|
||||
"options": [
|
||||
"-h, --help This help",
|
||||
"--par Add parity bit when sending commands",
|
||||
"-k, --key <hex> Key as 12 hex bytes"
|
||||
],
|
||||
"usage": "lf em 4x70 setkey [-h] [--par] -k <hex>"
|
||||
"usage": "lf em 4x70 setkey [-h] -k <hex>"
|
||||
},
|
||||
"lf em 4x70 setpin": {
|
||||
"command": "lf em 4x70 setpin",
|
||||
"description": "Write new PIN",
|
||||
"notes": [
|
||||
"lf em 4x70 setpin -p 11223344 -> Write new PIN",
|
||||
"lf em 4x70 setpin -p 11223344 --par -> Write new PIN using parity commands"
|
||||
"lf em 4x70 setpin -p 11223344 -> Write new PIN"
|
||||
],
|
||||
"offline": false,
|
||||
"options": [
|
||||
"-h, --help This help",
|
||||
"--par Add parity bit when sending commands",
|
||||
"-p, --pin <hex> pin, 4 bytes"
|
||||
],
|
||||
"usage": "lf em 4x70 setpin [-h] [--par] -p <hex>"
|
||||
"usage": "lf em 4x70 setpin [-h] -p <hex>"
|
||||
},
|
||||
"lf em 4x70 unlock": {
|
||||
"command": "lf em 4x70 unlock",
|
||||
"description": "Unlock EM4x70 by sending PIN Default pin may be: AAAAAAAA 00000000",
|
||||
"notes": [
|
||||
"lf em 4x70 unlock -p 11223344 -> Unlock with PIN",
|
||||
"lf em 4x70 unlock -p 11223344 --par -> Unlock with PIN using parity commands"
|
||||
"lf em 4x70 unlock -p 11223344 -> Unlock with PIN"
|
||||
],
|
||||
"offline": false,
|
||||
"options": [
|
||||
"-h, --help This help",
|
||||
"--par Add parity bit when sending commands",
|
||||
"-p, --pin <hex> pin, 4 bytes"
|
||||
],
|
||||
"usage": "lf em 4x70 unlock [-h] [--par] -p <hex>"
|
||||
"usage": "lf em 4x70 unlock [-h] -p <hex>"
|
||||
},
|
||||
"lf em 4x70 write": {
|
||||
"command": "lf em 4x70 write",
|
||||
"description": "Write EM4x70",
|
||||
"notes": [
|
||||
"lf em 4x70 write -b 15 -d c0de -> write 'c0de' to block 15",
|
||||
"lf em 4x70 write -b 15 -d c0de --par -> adds parity bit to commands"
|
||||
"lf em 4x70 write -b 15 -d c0de -> write 'c0de' to block 15"
|
||||
],
|
||||
"offline": false,
|
||||
"options": [
|
||||
"-h, --help This help",
|
||||
"--par Add parity bit when sending commands",
|
||||
"-b, --block <dec> block/word address, dec",
|
||||
"-d, --data <hex> data, 2 bytes"
|
||||
],
|
||||
"usage": "lf em 4x70 write [-h] [--par] -b <dec> -d <hex>"
|
||||
"usage": "lf em 4x70 write [-h] -b <dec> -d <hex>"
|
||||
},
|
||||
"lf em help": {
|
||||
"command": "lf em help",
|
||||
@@ -13377,6 +13365,6 @@
|
||||
"metadata": {
|
||||
"commands_extracted": 768,
|
||||
"extracted_by": "PM3Help2JSON v1.00",
|
||||
"extracted_on": "2025-06-09T12:58:22"
|
||||
"extracted_on": "2025-06-15T10:52:29"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user