cross-posted from: https://lemmy.nz/post/4294116
I have a file with content like this:
item({ ["attr"] = { ["size"] = "62091"; ["filename"] = "qBuUP9-OTfuzibt6PQX4-g.jpg"; ["stamp"] = "2023-12-05T19:31:37Z"; ["xmlns"] = "urn:xmpp:http:upload:0"; ["content-type"] = "image/jpeg"; }; ["key"] = "Wa4AJWFldqRZjBozponbSLRZ"; ["with"] = "email@address"; ["when"] = 1701804697; ["name"] = "request"; });I need to know what format this is, and if there exists a tool in linux already to parse this or if I need to write one myself?
Thanks!
- It’s not really a standalone file format, it’s executable Lua code. - It returns a new item with the given table contents. - That syntax with the keys in square brackets is the “long-form” method of creating a new table, that’s allows the use of spaces and dashes in the key name. - Maybe this is the lua-equivelent of a python Pickle file? - Ohhhhh… - Ok so I just have to write a bit of Lua to utilise the file and give me the info I want. - Thanks! - assuming you run it in the right lua environment. The item function must be defined, and we’re only speculating about its return value without seeing proper docs, or the source - Item is a function? - Well actually, yeah thats kinda obvious isn’t it now I look at the whole thing. - Thats fine, I’ll just use a bit of the old sed and json it. - Aha I have avoided learning Lua yet again! - the code is constructing a table, and passing it to a function called item. But if all you need is the data, you can just remove the function call and assign the table to a variable like so: local myvar = {…}. - then you can just manipulate the table as usual. - Unfortunately, this sequence is repeated many many times, so I would need to do a for-each and construct a new table for each inner section… - There’s gotta be a better way. Time to read the source code and hijack whatever item() is doing. 
- actually those semicolons indicate this isn’t actually lua, they are invalid in table constructors afaik 
 
 
 
 
- This isn’t Lua code, Lua requires commas as separators for table items.- EDIT: Retracted, it seems like Lua allows this madness - Lua isn’t that picky.  - Wow. Seems like I will never stop learning new things about Lua. 
 
 
 
- WTFON 
- I think it’s just normal Lua code. - Here’s a quick json converter (based on https://stackoverflow.com/a/55575074), assuming you have lua installed: - local function to_json(obj) local result = {} for key, value in pairs(obj) do if type(value) == "string" then value = string.format("\"%s\"", value) elseif type(value) == "table" then value = to_json(value) end table.insert(result, string.format("\"%s\":%s", key, value)) end return "{" .. table.concat(result, ",") .. "}" end function item(obj) print(to_json(obj)) end dofile(arg[1])- It just defines the - itemfunction to print json, and executes the data file.- arg[1], the first command line argument, is the path to the data file:- $ lua to_json.lua path/to/datafile.list- and pipe the output to - something.jsonor whatever else you want to do.
- Almost looks like mongodb output. What’s the file extension? - It’s .list - I believe the program that generated this file is written in Lua 
 
- deleted by creator - Not to worry; there’s definitely no sensitive information in here and it’s from a preprod environment. - (If you’re able to figure out a way to use that key field, you’re either going to get shot by the FBI or hired by the CIA.) - It is a file created that records information about files in another folder. I just want to extract some values from it. I would have expected this to be in like, xml or json. I believe the program that generated this file is written in Lua, but I don’t know Lua. - Security by obscurity is no security at all. You should really invalidate and change the key. I personally would fire you if I ever found out you leaked credentials and then did nothing about it. - This isn’t even an encryption key. It’s a unique name generated for the image. My guess is it uses the word ‘key’ because the ‘value’ is the image file. - This is also my preprod environment. 
 
 
 
- deleted by creator - I assume the semicolons would break it. 
 
- Looks like somebody rewrote json to require brackets around keys and to require semicolons? Very likely custom. - The semi-colons threw me off… why is it not commas? Could be custom. Hope it isn’t… 
 
- WTH is this shit? @postwatchbot@lemy.lol - lua code apparently 
 






