# cat blog >> /dev/brain 2> /proc/mind
cat blog >> /dev/brain 2> /proc/mind
# cat mission_15.py import hashlib import itertools import png import numpy as np r = png.Reader(file = open('leak.png')) (width, height, iterator, info) = r.read() b = [0] * width for i in iterator: row = i.tolist() for i in xrange(0, len(row), 3): value = row[i:i + 3] if value == [255, 0, 0]: b[i / 3] += 1 print ''.join([chr(c) for c in b]) hashes = [ 'e6d9fe6df8fd2a07ca6636729d4a615a', '273e97dc41693b152c71715d099a1049', 'bd014fafb6f235929c73a6e9d5f1e458', 'ab892a96d92d434432d23429483c0a39', 'b56a807858d5948a4e4604c117a62c2d' ] alphabet = ' !ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' password = [' '] * 5 counter = 0 for result in itertools.product(alphabet, repeat = 5): word = ''.join(list(result)) m = hashlib.md5() m.update(word) hd = m.hexdigest() if hd in hashes: pos = hashes.index(hd) print pos, word password[pos] = word counter += 1 if counter == 5: break print ''.join(password) # python mission_15.py <?php if (!isset($_GET['password']) || !is_string($_GET['password'])) { die("bad password"); } $p = $_GET['password']; if (strlen($p) !== 25) { die("bad password"); } if (md5($p) !== 'e66c97b8837d0328f3e5522ebb058f85') { die("bad password"); } // Split the password in five and check the pieces. // We need to be sure! $values = array( 0 => 'e6d9fe6df8fd2a07ca6636729d4a615a', 5 => '273e97dc41693b152c71715d099a1049', 10 => 'bd014fafb6f235929c73a6e9d5f1e458', 15 => 'ab892a96d92d434432d23429483c0a39', 20 => 'b56a807858d5948a4e4604c117a62c2d' ); for ($i = 0; $i < 25; $i += 5) { if (md5(substr($p, $i, 5)) !== $values[$i]) { die("bad password"); } } die("GW!"); 2 are 0 Pie c 3 delic 1 harts 4 ious! Pie charts are delicious!
cat mission_15.py
python mission_15.py
Post a Comment
No comments:
Post a Comment