print "evil"
"""


collider = Collider(blockfilter=filter_disallow_binstrings([b'\0', b"'''"]))

prefix1 = b"""#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#"""
prefix2 = b"""\ndiff = '''"""

# Ensure prefix is a multiple of 64 bytes
prefix = prefix1 + md5pad(prefix1 + prefix2, b' ') + prefix2

# Load the first half of the collision files that opens the 'diff' variable delcaration
collider.bincat(prefix)
# Fill in the 'diff' variable with 2 different blocks that may be chosen
collider.safe_diverge()

postfix = b"""'''
same = '''"""

c1, c2 = collider.get_last_coll()

postfix += c1

postfix += b"""'''

if (same == diff):
    print "good"
예제 #2
0
            startchars = q - (64 * 3)
            if not first:
                first = i
                offset = i - startchars
            else:
                second = startchars + offset

            compdata[q] = 0
            break

if not (first and second):
    raise Exception('error: did not find marker strings')

# Splice in the collision blocks according to the obtained offsets
collider = Collider(blockfilter=filter_disallow_binstrings([b'\0']))
collider.bincat(compdata[:first])
collider.safe_diverge()
c1, c2 = collider.get_last_coll()
collider.bincat(compdata[first + 128:second] + c1 + compdata[second + 128:])

# Write out good and evil binaries
cols = collider.get_collisions()

GOOD = 'out_c_good'
EVIL = 'out_c_evil'

with open(GOOD, 'wb') as good:
    good.write(next(cols))

with open(EVIL, 'wb') as evil:
    evil.write(next(cols))
            if not first:
                first = i
                offset = i - startchars
            else:
                second = startchars + offset
                
            compdata[q] = 0
            break
        

if not (first and second):
    raise Exception('error: did not find marker strings')

# Splice in the collision blocks according to the obtained offsets
collider = Collider(blockfilter=filter_disallow_binstrings([b'\0']))
collider.bincat(compdata[:first])
collider.safe_diverge()
c1, c2 = collider.get_last_coll()
collider.bincat(compdata[first+128:second] + c1 + compdata[second+128:])

# Write out good and evil binaries
cols = collider.get_collisions()

GOOD = 'out_c_good'
EVIL = 'out_c_evil'

with open(GOOD,  'wb') as good:
    good.write(next(cols))
    
with open(EVIL, 'wb') as evil:
    evil.write(next(cols))
else:
    print "evil"
"""

collider = Collider(blockfilter=filter_disallow_binstrings([b'\0', b"'''"]))

prefix1 = b"""#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#"""
prefix2 = b"""\ndiff = '''"""

# Ensure prefix is a multiple of 64 bytes
prefix = prefix1 + md5pad(prefix1 + prefix2, b' ') + prefix2

# Load the first half of the collision files that opens the 'diff' variable delcaration
collider.bincat(prefix)
# Fill in the 'diff' variable with 2 different blocks that may be chosen
collider.safe_diverge()

postfix = b"""'''
same = '''"""

c1, c2 = collider.get_last_coll()

postfix += c1

postfix += b"""'''

if (same == diff):
    print "MD5 is secure!"