コード例 #1
0
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)))
コード例 #2
0
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
コード例 #3
0
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()
コード例 #4
0
            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)
コード例 #5
0
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"
コード例 #6
0
    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)

コード例 #7
0
def generate_trace(n_steps=10):
    e = Executor(endo())
    
    e.debug = True
    for i in range(n_steps):
        e.step()