self.number_of_chars_in_text = 0 # начальное значение длины зашифрованного текста
self.original_text = '' # переменная, хранящая скрытый текст
def read_header(self): # функция, считывающая каждый байт по # Читаем заголовок, текст в нем не закодирован
for i in range(0, HEADER_SIZE): # Цикл, перебирающий все байты = self.fh.read(1) # присвоение байтов в переменную
def get_char(self): # объявление функции, получающая последний незначимых бит из текста 8 байт и ассемблирует байты из него
new_byte = '' # объявление переменной
for bit in range(0, 8): # объявление цикла
byte = self.fh.read(1) # чтение значения последнего незначимого бита
new_byte += str(ord(byte) & 0x01) # присвоение значение последнего незначимого бита
n = int(new_byte, 2) # приведение к типу integer
desteg_char = binascii.unhexlify('%x' % n) # конвертация бинарного вида в ASCII
return desteg_char # возврат зашифрованного текста
def get_text_size(self): # функция, получающая длину скрытого текста
curr_ch = self.get_char() # присвоение текущего символа
s_sz = '' # объявление переменной
while curr_ch != DELIMITER: # цикл, перебирающий значения, пока не будет найден разделитель
s_sz += curr_ch # присвоение текущего символа
curr_ch = self.get_char() # присвоение текущего символа
if (s_sz != ''): # Условие, если переменная не пустая
self.number_of_chars_in_text = int(s_sz) # тогда привести s_sz к типу integer и присвоить значение read_stega_text(self): # функция, читающая весь скрытый текс в изображении
decoded_chars = 0; # объявление переменнойdecoded_chars < self.number_of_chars_in_text: # объявление цикла.original_text += self.get_char() # присвоение переменной скрытого текста
decoded_chars += 1 # инкремент
def close_file(self): # функция, закрывающая картинку
self.fh.close(); # Закрытие картинки
def get_text(self): # функция, выполняющая извлечение скрытого текста
self.read_header() # вызов функции
self.get_text_size() # вызов функции
self.read_stega_text() # вызов функции.close_file() # вызов функцииself.original_text # возвращает оригинальный текст main():# Объявление аргументов командной стоки
destag_insta = LSBDecrypter() # присвоение переменной результат выполнения класса
text = destag_insta.get_text() # присвоение переменной text значения оригинального текста
print "Successfully decoded, text is: {}".format(text) # при успешном выполнении вывод надписи, сообщающая корректное завершение.
if __name__ == '__main__': # конструктор, определяющий начало работы программы
main() # вызов main
Похожие работы
Интересная статья: Основы написания курсовой работы