Copy Link
Add to Bookmark
Report

NULL mag Issue 07 31 SAUCE record read

eZine's profile picture
Published in 
null magazine
 · 26 Dec 2020

  



A simple function in Python3 to get some SAUCE data. It wont retrieve all
data as we pad the last 32 bytes and also it will ignore any COMMENTS
block. Your homework is to extend it... :p


-- use python3
#!/usr/bin/python3

-- import libraries that we need
import os
import sys

-- the struct library is the important stuff here. with it we will get the
sauce structure and unpack it to values that we can use.
import struct

-- the script needs a filename/path as its first parameter.
filename = sys.argv[1]

-- now let's get that sauce data...
def getsauce(filename):

-- open the given file for reading as binary file.
f = open(filename, 'rb')

-- go to the 128th byte before the end of the file, because that's where
the sauce data is being stored.
f.seek(-128,2)

-- define the structure that we are going to read.
saucestr = "<5s2s35s20s20s8si32x"

-- calculate the size of the structure
sf = struct.calcsize(saucestr)

-- and read it from the file
sauce = f.read(sf)
s = struct.unpack(saucestr,sauce)

-- close the file
f.close()

-- if our variable, contains a SAUCE string, this means the file has
sauce data, otherwise it doesn't.
if ''.join(str(s[0]).strip("b'")) == "SAUCE":
-- return all the sauce data, as a string, as the result of the
function
return s
else:
return -1

-- if successful this will pring the sauce data of the file.
print(getsauce(filename))


complete script below. copy/paste into a text file and make it executable.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

#!/usr/bin/python3

import os
import struct
import sys

filename = sys.argv[1]

def getsauce(filename):
f = open(filename, 'rb')
f.seek(-128,2)
saucestr = "<5s2s35s20s20s8si32x"
sf = struct.calcsize(saucestr)
sauce = f.read(sf)
s = struct.unpack(saucestr,sauce)
f.close()
if ''.join(str(s[0]).strip("b'")) == "SAUCE":
return s
else:
return -1

print(getsauce(filename))

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT