Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- #coding: utf-8
- from sys import argv
- def bits_to_byte(bits):
- # Toma un par de bits, multiplica o da esquerda por dous e sumalle o da dereita
- # elimina os dous e engade o resultado no seu lugar, repíteo ata que so queda un
- result = reduce(lambda x, y: x * 2 + y, bits)
- return chr(result)
- def bits_to_message(bits):
- message = []
- # Agrupa os bits por grupos de 8 e pasaos por bits_to_byte
- for index in xrange(len(bits) / 8):
- message.append(bits_to_byte(bits[index*8:(index+1)*8]))
- return ''.join(message)
- def read_lsb_message(data):
- bits = []
- # Non temos máis posibilidade que considerar todos os bits dende a cabeceira
- for byte in data[54:]:
- bits.append(ord(byte) & 1) # Engadimos o bit a lista
- print bits_to_message(bits)
- if __name__ == '__main__':
- if len(argv) != 2:
- print "%s <input>" % argv[0]
- exit(0)
- fin = open(argv[1], "rb")
- read_lsb_message(fin.read())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement