Advertisement
Guest User

Untitled

a guest
Oct 29th, 2012
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.00 KB | None | 0 0
  1. #!/usr/bin/env python
  2. #coding: utf-8
  3.  
  4. from sys import argv
  5.  
  6. def bits_to_byte(bits):
  7.     # Toma un par de bits, multiplica o da esquerda por dous e sumalle o da dereita
  8.     # elimina os dous e engade o resultado no seu lugar, repíteo ata que so queda un
  9.     result = reduce(lambda x, y: x * 2 + y, bits)
  10.  
  11.     return chr(result)
  12.  
  13. def bits_to_message(bits):
  14.     message = []
  15.  
  16.     # Agrupa os bits por grupos de 8 e pasaos por bits_to_byte
  17.     for index in xrange(len(bits) / 8):
  18.         message.append(bits_to_byte(bits[index*8:(index+1)*8]))
  19.  
  20.     return ''.join(message)
  21.  
  22.  
  23. def read_lsb_message(data):
  24.     bits = []
  25.  
  26.     # Non temos máis posibilidade que considerar todos os bits dende a cabeceira
  27.     for byte in data[54:]:
  28.         bits.append(ord(byte) & 1) # Engadimos o bit a lista
  29.  
  30.     print bits_to_message(bits)
  31.  
  32. if __name__ == '__main__':
  33.     if len(argv) != 2:
  34.         print "%s <input>" % argv[0]
  35.         exit(0)
  36.  
  37.     fin = open(argv[1], "rb")
  38.     read_lsb_message(fin.read())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement