dnstuff
Ноя. 6, 2012 08:28:30
Здравствуйте!
Есть куча заксоренных файлов. Надо их пакетно расксорить. Ключ известен. Есть какие-нибудь готовые или полуготовые решения для питона?
Спасибо!
py.user.next
Ноя. 6, 2012 08:53:56
приведи пример, в котором из заксоренного файла получается расксоренный
^ - операция xor
dnstuff
Ноя. 7, 2012 10:57:19
Образец во вложении.
Сейчас работаю вручную. Открываю в Hex Workshop, XOR, указываю ключ (96). Выбираю Treat Data As: 8 bit. Файл становится читабельным. Но файлов много, хотелось бы автоматизировать процесс.
py.user.next
Ноя. 7, 2012 12:03:17
#!/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)
odnochlen
Ноя. 7, 2012 14:23:24
py.user.next, неплохо было бы блоками читать, а то файлы боольшие бывают.
py.user.next
Ноя. 8, 2012 01:12:54
odnochlen
неплохо было бы блоками читать
в общем случае - хорошо, в его случае - медленнее, так как увеличивается количество операций чтения/записи
odnochlen
Ноя. 8, 2012 11:05:58
С чего вдруг?? Все нормальные программы читают блоками, даже когда ты читаешь через read(), с диска это все равно читается блоками. Взяв адекватный размер блока (степень двойки и >= 1 Mb, цифра с потолка), ты разницы не заметишь.
py.user.next
Ноя. 9, 2012 06:15:44
odnochlen
Все нормальные программы читают блоками
неважно, как они читают, я тебе про скрипт говорю, выполняемый интерпретатором
что один вызов
.read() или
.write() работает быстрее, чем десяток таких вызовов
odnochlen
Ноя. 9, 2012 11:58:12
Если читать достаточно большими блоками - разница в скорости будет незаметной. А полностью читать в память неизвестно что - плохой стиль.
py.user.next
Ноя. 11, 2012 06:42:16
odnochlen
Если читать достаточно большими блоками - разница в скорости будет незаметной.
получится тот же
.read()
odnochlen
А полностью читать в память неизвестно что - плохой стиль.
это в общем случае
а в конкретном, где есть множество файлов небольшого размера, нет разницы (код с
.read() короче)