diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6b67384 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/__pycache__/ +/.nvimlog +/header.bin \ No newline at end of file diff --git a/tclcheck.py b/tclcheck.py index 57b8c98..aaf80b8 100644 --- a/tclcheck.py +++ b/tclcheck.py @@ -37,4 +37,10 @@ for s in slaves: print("http://{}{}".format(s, fileurl)) if fc.mode == fc.MODE_FULL: - print(fc.encrypt_header(fileurl, random.choice(encslaves))) + header = fc.do_encrypt_header(random.choice(encslaves), fileurl) + if len(header) == 4194320: + print("Header length check passed. Writing to header.bin.") + with open("header.bin", "wb") as f: + f.write(header) + else: + print("Header length invalid ({}).".format(len(header))) diff --git a/tcllib.py b/tcllib.py index f0ed78d..fea4243 100644 --- a/tcllib.py +++ b/tcllib.py @@ -188,17 +188,14 @@ class FotaCheck: encslaves = [s.text for s in enc_list] return fileid, fileurl, slaves, encslaves - def encrypt_header(self, address, encslave): + def do_encrypt_header(self, encslave, address): params = self.get_creds() params[b"address"] = bytes(address, "utf-8") url = "https://" + encslave + "/encrypt_header.php" req = self.sess.post(url, data=params, verify=False) # Expect "HTTP 206 Partial Content" response - if req.status_code == 206: # partial - #return req.content - contentlength = int(req.headers["Content-Length"]) - sentinel = "\nHEADER FOUND" if contentlength == 4194320 else "\nNO HEADER FOUND" - return sentinel + if req.status_code == 206: + return req.content else: print("ENCRYPT: " + repr(req)) print(repr(req.headers))