Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- #coding: utf-8
- from array import array
- from sys import argv
- def pad(string, length, pad_with):
- while len(string) < length:
- string = pad_with + string
- return string
- def message_to_bits(message):
- bits = []
- for byte in message:
- bits.append(pad(bin(ord(byte))[2:], 8, "0"))
- return ''.join(bits)
- def insert_lsb_message(data, message):
- data = array('c', data) # Convertimo-lo dato nun array para poder mutalo directamente
- offset = 54 # Ignoramos os primeiros 54 bytes, corresponden a cabeceira
- bits = message_to_bits(message)
- for bit in bits:
- # Convertímo-la cadea a unha representación como enteiro para poder facer isto...
- bit = int(bit)
- # Cambiamo-lo último bit polo valor escollido
- tmp = (ord(data[offset]) & 0xFE) | bit
- data[offset] = chr(tmp)
- # Na próxima iremos a polo seguinte byte
- offset += 1
- return data
- if __name__ == '__main__':
- if len(argv) != 4:
- print "%s <input> <output> <message>" % argv[0]
- exit(0)
- fin = open(argv[1], "rb")
- fout = open(argv[2], "wb")
- message = argv[3]
- fout.write(insert_lsb_message(fin.read(), message))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement