Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 6, 2012 08:28:30

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

Python и XOR

Здравствуйте!
Есть куча заксоренных файлов. Надо их пакетно расксорить. Ключ известен. Есть какие-нибудь готовые или полуготовые решения для питона?
Спасибо!

Офлайн

#2 Ноя. 6, 2012 08:53:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Python и XOR

приведи пример, в котором из заксоренного файла получается расксоренный
^ - операция xor



Офлайн

#3 Ноя. 7, 2012 10:57:19

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

Python и XOR

Образец во вложении.
Сейчас работаю вручную. Открываю в Hex Workshop, XOR, указываю ключ (96). Выбираю Treat Data As: 8 bit. Файл становится читабельным. Но файлов много, хотелось бы автоматизировать процесс.

Прикреплённый файлы:
attachment simple.img (177,5 KБ)

Офлайн

#4 Ноя. 7, 2012 12:03:17

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Python и XOR

#!/usr/bin/env python3
 
def func(ifname, ofname, key):
    with open(ifname, 'rb') as fin, \
         open(ofname, 'wb') as fout:
        fout.write(bytes(b ^ key for b in fin.read()))
 
if __name__ == '__main__':
    func('simple.img', 'simple.img.out', 96)



Офлайн

#5 Ноя. 7, 2012 14:23:24

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Python и XOR

py.user.next, неплохо было бы блоками читать, а то файлы боольшие бывают.

Офлайн

#6 Ноя. 8, 2012 01:12:54

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Python и XOR

odnochlen
неплохо было бы блоками читать
в общем случае - хорошо, в его случае - медленнее, так как увеличивается количество операций чтения/записи



Офлайн

#7 Ноя. 8, 2012 11:05:58

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Python и XOR

С чего вдруг?? Все нормальные программы читают блоками, даже когда ты читаешь через read(), с диска это все равно читается блоками. Взяв адекватный размер блока (степень двойки и >= 1 Mb, цифра с потолка), ты разницы не заметишь.

Офлайн

#8 Ноя. 9, 2012 06:15:44

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Python и XOR

odnochlen
Все нормальные программы читают блоками
неважно, как они читают, я тебе про скрипт говорю, выполняемый интерпретатором
что один вызов .read() или .write() работает быстрее, чем десяток таких вызовов



Офлайн

#9 Ноя. 9, 2012 11:58:12

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Python и XOR

Если читать достаточно большими блоками - разница в скорости будет незаметной. А полностью читать в память неизвестно что - плохой стиль.

Офлайн

#10 Ноя. 11, 2012 06:42:16

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Python и XOR

odnochlen
Если читать достаточно большими блоками - разница в скорости будет незаметной.
получится тот же .read()

odnochlen
А полностью читать в память неизвестно что - плохой стиль.
это в общем случае
а в конкретном, где есть множество файлов небольшого размера, нет разницы (код с .read() короче)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version