def main(): text = endo()[0x3e78:0x6848] with open('achtung.txt', 'w') as fout: for i in range(0, len(text), 16): print>>fout, text[i:i+16] png = endo()[0x6c58:] i = png.find('PP', ) png, audio = png[:i], png[i+2:] assert len(png)%8 == 0 with open('achtung.png', 'wb') as fout: for i in range(0, len(png), 8): t = png[i:i+8].replace('I', '0').replace('C', '1') t = t[::-1] fout.write(chr(int(t, 2))) audio = audio[:audio.find('P')] # wtf is this? assert len(audio)%8 == 0 with open('achtung.hz', 'wb') as fout: for i in range(0, len(audio), 8): t = audio[i:i+8].replace('I', '0').replace('C', '1') t = t[::-1] fout.write(chr(int(t, 2)))
def stats_run(n_steps=0): e = Executor(endo()) #e.debug = True start = clock() try: for i in xrange(2*10**9): if i > 0 and i%1000 == 0: print i, int(i/(clock()-start+1e-6)),'steps/s' e.step() n_steps -= 1 if n_steps == 0: break except FinishException: print 'execution finished' finally: print e.iteration, 'iterations' print len(e.rna), 'rna produced' print 'it took', clock()-start print int(e.iteration/(clock()-start+1e-6)), 'iterations/s' print 'pattern freqs', e.pattern_freqs print 'template freqs', e.template_freqs print 'codon len freqs', e.codon_len_freqs
def main(): parser = argparse.ArgumentParser(description='Produce RNA from DNA') parser.add_argument('--trace', action='store_true') parser.add_argument('--pause', action='store_true') parser.add_argument('prefix_filename') args = parser.parse_args() prefix_filename = args.prefix_filename prefix = open(prefix_filename+'.dna').read().strip() assert all(c in 'ICFP' for c in prefix) e = Executor(prefix+endo()) e.debug = args.trace or args.pause start = clock() #for r in e.obtain_rna(): # print>>rna, r try: while True: e.step() if args.pause: print 'press enter', raw_input() except FinishException: pass rna_file = open(prefix_filename+'.rna', 'w') for r in e.rna: print>>rna_file, r print 'it took', clock()-start print int(e.iteration/(clock()-start+1e-6)), 'iterations/s' rna_file.close()
if not result.endswith('~'): result += '~' continue bits = bits.replace('I', '0').replace('C', '1') bits = bits[::-1] x = int(bits, 2) if x in character: result += character[x] else: result += '?' return result def strings(s): result = [] for m in re.finditer(r'[^\~^\?]{6,}', s): result.append((m.start(), m.end(), m.group())) return result if __name__ == '__main__': s = endo() for i in range(100): print '************** PROTECTION LEVEL', i results = [] for i in range(9): data = decode_chars(s[i:]) results += strings(data) results.sort(key=lambda (start, end, text): start) for start, end, text in results: print text s = forgiving_unprotect(s)
import string_code import dna_code import sys if __name__ == "__main__": command = sys.argv[1] endo = dna_code.endo(); if command == 'offset': offset = int(sys.argv[2]) print string_code.extract_from_offset(endo, offset) elif command == 'prefix': prefix = sys.argv[2] (offset, substring) = string_code.extract_from_prefix(endo, prefix) if offset > 0: print "at", str(offset) + ":" print substring else: print "Nothing found." else: print "Syntax: string_ripper.py ( offset | prefix ) ARGUMENT"
print dna[start:end] # ugly abuse of iterator-based nat() iter = (b for b in dna[start:end]) nat_list = list(nat(b for b in iter)) assert(len(nat_list) == 1) result = nat_list[0] #assert(asnat(result, length=sizeof[type]) == dna[start:end]) return result def print_syntax(): print "Syntax: green_set.py OFFSET TYPE [VALUE]" print "Supported types: " + ", ".join(types) exit() if __name__ == "__main__": argc = len(sys.argv) if argc not in [3, 4]: print_syntax() offset, type = sys.argv[1:3] if type not in types: print_syntax() offset = int(offset, 16) if offset.lower().startswith('0x') else int(offset) if argc == 4: value = int(sys.argv[-1]) print modify(endo(), offset, type, value) else: print get_value(endo(), offset, type)
def generate_trace(n_steps=10): e = Executor(endo()) e.debug = True for i in range(n_steps): e.step()