| New file |
| | |
| | | #!/usr/bin/python |
| | | |
| | | import os |
| | | import subprocess |
| | | |
| | | def filechecksum(aaxfile): |
| | | ret = subprocess.Popen(["ffprobe", "-v", "info", "-hide_banner", os.path.abspath(aaxfile)], stderr=subprocess.PIPE) |
| | | grep = subprocess.Popen(["grep", "checksum"], stdin=ret.stderr, stdout=subprocess.PIPE) |
| | | awk = subprocess.Popen(["awk", " { print $8 } "], stdin=grep.stdout, stdout=subprocess.PIPE) |
| | | hashsum,out = awk.communicate() |
| | | hashsum = hashsum.strip('\n') |
| | | return hashsum |
| | | |
| | | |
| | | def writeauthcode(hashsum): |
| | | try: |
| | | file = open(".authcode", "a") |
| | | file.write(hashsum + os.linesep) |
| | | except (IOError, OSError) as e: |
| | | print "Can't write to .authcode" |
| | | return 1 |
| | | finally: |
| | | file.close() |
| | | return 0 |
| | | |
| | | |
| | | def readauthcode(): |
| | | try: |
| | | if not os.path.isfile(".authcode"): |
| | | open (".authcode", "w").close() |
| | | with open(".authcode") as f: |
| | | hashes = f.read().split() |
| | | except (IOError, OSError) as e: |
| | | print "Can't read in .authcode" |
| | | return 1 |
| | | finally: |
| | | f.close() |
| | | return hashes |
| | | |
| | | |
| | | def newauthcode(checksum): |
| | | rcwd = os.path.dirname(os.path.realpath(__file__)) |
| | | command = "./rcrack *.rtc -h " |
| | | command += checksum |
| | | cmd = subprocess.Popen(command, cwd=rcwd, stdout=subprocess.PIPE, shell=True) |
| | | grep = subprocess.Popen(["grep","-a", "hex"], stdin=cmd.stdout,stdout=subprocess.PIPE) |
| | | key,stderr = grep.communicate() |
| | | key = key.split() |
| | | return key[2].split(':')[1] |
| | | |
| | | def checkagainstexisting(abytes,aaxfile): |
| | | ret = subprocess.Popen(["ffprobe","-activation_bytes", abytes ,"-hide_banner" , os.path.abspath(aaxfile)], stderr=subprocess.PIPE) |
| | | grep = subprocess.Popen(["grep", "mismatch", "-c"], stdin=ret.stderr, stdout=subprocess.PIPE) |
| | | works,out = grep.communicate() |
| | | return works.strip('\n') |
| | | |
| | | |
| | | def getcorrectkey(aaxfile): |
| | | authcodes = readauthcode() |
| | | abyte = '' |
| | | for x in authcodes: |
| | | if (checkagainstexisting(x,aaxfile) == '0'): |
| | | abyte = x |
| | | return abyte |
| | | if (abyte == ''): |
| | | csum = filechecksum(aaxfile) |
| | | abyte = newauthcode(csum) |
| | | writeauthcode(abyte) |
| | | return abyte |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | import sys |
| | | if len(sys.argv) >= 2: |
| | | args = sys.argv[1] |
| | | else: |
| | | print "I need an file name to lookup" |
| | | sys.exit(1) |
| | | checksum = filechecksum(args) |
| | | out = newauthcode(checksum.strip()) |
| | | if out is not None: |
| | | print sys.argv[1], "Auth code is:", out |
| | | else: |
| | | print sys.argv[1], "no Authcode found" |