]>
Commit | Line | Data |
---|---|---|
1 | local getopt = require('getopt') | |
2 | ||
3 | example = "script run remagic" | |
4 | author = "Iceman" | |
5 | desc = | |
6 | [[ | |
7 | This is a script that tries to bring back a chinese magic card (1k generation1) | |
8 | from the dead when it's block 0 has been written with bad values. | |
9 | or mifare Ultralight magic card which answers to chinese backdoor commands | |
10 | ||
11 | Arguments: | |
12 | -h this help | |
13 | -u remagic a Ultralight tag w 7 bytes UID. | |
14 | ]] | |
15 | --- | |
16 | -- A debug printout-function | |
17 | function dbg(args) | |
18 | if DEBUG then | |
19 | print("###", args) | |
20 | end | |
21 | end | |
22 | --- | |
23 | -- This is only meant to be used when errors occur | |
24 | function oops(err) | |
25 | print("ERROR: ",err) | |
26 | end | |
27 | --- | |
28 | -- Usage help | |
29 | function help() | |
30 | print(desc) | |
31 | print("Example usage") | |
32 | print(example) | |
33 | end | |
34 | ||
35 | local function cmdUltralight() | |
36 | return { | |
37 | --[[ | |
38 | --]] | |
39 | [0] = "hf 14a raw -p -a -b 7 40", | |
40 | [1] = "hf 14a raw -p -a 43", | |
41 | [2] = "hf 14a raw -c -a A2005380712A", | |
42 | [3] = "hf 14a raw -p -a -b 7 40", | |
43 | [4] = "hf 14a raw -p -a 43", | |
44 | [5] = "hf 14a raw -c -a A2010200D980", | |
45 | [6] = "hf 14a raw -p -a -b 7 40", | |
46 | [7] = "hf 14a raw -p -a 43", | |
47 | [8] = "hf 14a raw -c -a A2025B480000", | |
48 | [9] = "hf 14a raw -c -a 5000", | |
49 | } | |
50 | end | |
51 | local function cmdClassic() | |
52 | return { | |
53 | --[[ | |
54 | --]] | |
55 | [0] = "hf 14a raw -p -a -b 7 40", | |
56 | [1] = "hf 14a raw -p -a 43", | |
57 | [2] = "hf 14a raw -c -p -a A000", | |
58 | [3] = "hf 14a raw -c -p -a 01020304049802000000000000001001", | |
59 | [4] = "hf 14a raw -c -a 5000", | |
60 | } | |
61 | end | |
62 | local function cmdRestoreST() | |
63 | local arr = {} | |
64 | for i = 0, 15 do | |
65 | local blk = 3 + (4*i) | |
66 | arr[i] = "hf mf csetbl "..blk.." FFFFFFFFFFFFFF078000FFFFFFFFFFFF" | |
67 | end | |
68 | return arr | |
69 | end | |
70 | local function sendCmds( cmds ) | |
71 | for i = 0, #cmds do | |
72 | if cmds[i] then | |
73 | print ( cmds[i] ) | |
74 | core.console( cmds[i] ) | |
75 | end | |
76 | end | |
77 | end | |
78 | --- | |
79 | -- The main entry point | |
80 | function main(args) | |
81 | ||
82 | local i | |
83 | local cmds = {} | |
84 | local isUltralight = false | |
85 | ||
86 | -- Read the parameters | |
87 | for o, a in getopt.getopt(args, 'hu') do | |
88 | if o == "h" then return help() end | |
89 | if o == "u" then isUltralight = true end | |
90 | end | |
91 | ||
92 | core.clearCommandBuffer() | |
93 | ||
94 | if isUltralight then | |
95 | sendCmds ( cmdUltralight() ) | |
96 | else | |
97 | sendCmds( cmdClassic() ) | |
98 | sendCmds( cmdRestoreST() ) | |
99 | end | |
100 | end | |
101 | ||
102 | main(args) |