small fix
[proxmark3-svn] / client / scripts / htmldump.lua
index e9d35443375ecba80cae216a665f74544d3218fe..d14f88195e2e92177dfe469afe71b4bb65634dc1 100644 (file)
@@ -2,10 +2,11 @@
 -- Have a look there for further details
 getopt = require('getopt')
 bin = require('bin')
+dumplib = require('html_dumplib')
 
-example = "script run 14araw -x 6000F57b"
+example = "script run htmldump -o mifarecard_foo.html"
 author = "Martin Holst Swende"
-usage = "script run htmldump [-f <file>]"
+usage = "script run htmldump [-i <file>] [-o <file>]"
 desc =[[
 This script takes a dumpfile and produces a html based dump, which is a 
 bit more easily analyzed. 
@@ -43,29 +44,8 @@ function help()
        print(example)
 end
 
-local function readdump(infile)
-        t = infile:read("*all")
-        --print(string.len(t))
-        len = string.len(t)
-        local len,hex = bin.unpack(("H%d"):format(len),t)
-        --print(len,hex)
-        return hex
-end
-local function convert_to_js(hexdata)
-       if string.len(hexdata) % 32 ~= 0 then 
-               return oops(("Bad data, length should be a multiple of 32 (was %d)"):format(string.len(hexdata)))
-       end
-       local js,i = "[";
-       for i = 1, string.len(hexdata),32 do
-               js = js .."'" ..string.sub(hexdata,i,i+31).."',\n"
-       end
-       js = js .. "]"
-       return js
-end
-
 local function main(args)
 
-       print(desc)
        local input = "dumpdata.bin"
        local output = os.date("%Y-%m-%d_%H%M%S.html");
        for o, a in getopt.getopt(args, 'i:o:h') do
@@ -73,31 +53,12 @@ local function main(args)
                if o == "i" then input = a end
                if o == "o" then output = a end
        end
-       -- Validate the parameters
-       
-       local infile = io.open(input, "r")
-       if infile == nil then 
-               return ("Could not read file ", input)
-       end
-       --lokal skel = require("skel")
-       local dumpdata = readdump(infile)
-       io.close(infile)
+       local filename, err = dumplib.convert_bin_to_html(input,output,16)
+       if err then return oops(err) end
 
-       local js_code = convert_to_js(dumpdata)
-       --print(js_code)
-       local skel = require("htmlskel")
-       html = skel.getHTML(js_code);
-       
-       local outfile = io.open(output, "w")
-       if outfile == nil then 
-               return oops("Could not write to file ", output)
-       end
-       outfile:write(html)
-       io.close(outfile)
-       print(("Wrote a HTML dump to the file %s"):format(output))
+       print(("Wrote a HTML dump to the file %s"):format(filename))
 end
 
-
 --[[
 In the future, we may implement so that scripts are invoked directly 
 into a 'main' function, instead of being executed blindly. For future
Impressum, Datenschutz