# cat blog >> /dev/brain 2> /proc/mind
cat blog >> /dev/brain 2> /proc/mind
# cat pattern.py #!/usr/bin/python import scipy.io.wavfile import sys import wave from collections import Counter inputfile = sys.argv[1] wave_read_object = wave.open(inputfile, 'rb') print 'Number of audio channels = ', wave_read_object.getnchannels() print 'Sample width = ', wave_read_object.getsampwidth(), '(bytes)' print 'Sampling frequency = ', wave_read_object.getframerate(), '(Hz)' frames = wave_read_object.getnframes() print 'Number of audio frames = ', frames wave_read_object.close() rate, data = scipy.io.wavfile.read(inputfile) r = Counter() for frames in data: r[str(frames[1])] += 1 print r word = '' last_bit = '' binary = '' for frames in data: if frames[1] == 0: bit = '0' else: bit = '1' if last_bit != bit: sys.stdout.write(word + '\n') word = '' word += bit last_bit = bit print binary # ./pattern.py ost.wav Number of audio channels = 2 Sample width = 2 (bytes) Sampling frequency = 44100 (Hz) Number of audio frames = 661522 Counter({'0': 342450, '328': 319072}) 0000000000000 11111111111111111111111111 0000000000000 1111111111111 0000000000000 1111111111111 00000000000000000000000000 11111111111111111111111111 0000000000000 1111111111111 00000000000000000000000000 11111111111111111111111111 00000000000000000000000000 11111111111111111111111111 00000000000000000000000000 11111111111111111111111111 0000000000000 1111111111111 0000000000000 1111111111111 0000000000000 1111111111111 0000000000000 1111111111111 00000000000000000000000000 11111111111111111111111111 0000000000000 1111111111111 ... # cat solution.py #!/usr/bin/python import scipy.io.wavfile import sys import wave from collections import Counter inputfile = sys.argv[1] outputfile = sys.argv[2] wave_read_object = wave.open(inputfile, 'rb') print 'Number of audio channels = ', wave_read_object.getnchannels() print 'Sample width = ', wave_read_object.getsampwidth(), '(bytes)' print 'Sampling frequency = ', wave_read_object.getframerate(), '(Hz)' frames = wave_read_object.getnframes() print 'Number of audio frames = ', frames wave_read_object.close() rate, data = scipy.io.wavfile.read(inputfile) r = Counter() for frames in data: r[str(frames[1])] += 1 print r word = '' binary = '' for frames in data: if frames[1] == 0: bit = '0' else: bit = '1' if word == '0000000000000': binary += '0' sys.stdout.write(word + '\n') word = '' if word == '1111111111111': binary += '1' sys.stdout.write(word + '\n') word = '' word += bit print binary decoded = '' for i in xrange(0, len(binary), 2): print i, i + 2 symbol = binary[i : i + 2] if symbol == '01': digit = '1' else: digit = '0' decoded += digit f = open(outputfile, 'wb') for i in xrange(0, len(decoded), 8): print i, i + 8 byte = decoded[i : i + 8] print chr(int(byte,2)) f.write(chr(int(byte,2))) f.close() # ./solution.py ost.wav output Number of audio channels = 2 Sample width = 2 (bytes) Sampling frequency = 44100 (Hz) Number of audio frames = 661522 Counter({'0': 342450, '328': 319072}) 0000000000000 1111111111111 1111111111111 0000000000000 1111111111111 0000000000000 1111111111111 0000000000000 0000000000000 1111111111111 1111111111111 0000000000000 1111111111111 0000000000000 0000000000000 1111111111111 1111111111111 0000000000000 0000000000000 1111111111111 1111111111111 0000000000000 ... 011010100110100110011001101010101001101001010110100110101001010110101010010110011010101001100110101010010110011010101010011001101010101010101010101010101010101010101010101010101010101001011001100110100110100110011010011010101001101010011010100110011010011010101010101010101010101010101010101010101010011010101001100101101010101010101010101010101010101010101010101010101010010110101010101010100110101010101010100110101010101010101010101010101010101010101010101010100101011010010101101001101001101001010101011001011001100101100110101010101010101010101010101010101010101010101010101010101010011010010110101001101001101001100101100110101001010110011010100110101010101010101010101010101010101001100110011001100110101001011001101001101010010110100101101001101010101010101010 ... 0 2 2 4 4 6 6 8 8 10 10 12 12 14 14 16 16 18 18 20 ... 0 8 � 8 16 P 16 24 N 24 32 G 32 40 40 48 ... # file output output: PNG image data, 534 x 48, 8-bit gray+alpha, non-interlaced # tesseract output flag && cat flag.txt NcN_d787634fa059f9a009f539a18526666208a3e960
cat pattern.py
./pattern.py ost.wav
cat solution.py
./solution.py ost.wav output
file output
tesseract output flag && cat flag.txt