Найти - Пользователи
Полная версия: Python и XOR
Начало » Python для экспертов » Python и XOR
1 2
dnstuff
Здравствуйте!
Есть куча заксоренных файлов. Надо их пакетно расксорить. Ключ известен. Есть какие-нибудь готовые или полуготовые решения для питона?
Спасибо!
py.user.next
приведи пример, в котором из заксоренного файла получается расксоренный
^ - операция xor
dnstuff
Образец во вложении.
Сейчас работаю вручную. Открываю в Hex Workshop, XOR, указываю ключ (96). Выбираю Treat Data As: 8 bit. Файл становится читабельным. Но файлов много, хотелось бы автоматизировать процесс.
py.user.next
#!/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
py.user.next, неплохо было бы блоками читать, а то файлы боольшие бывают.
py.user.next
odnochlen
неплохо было бы блоками читать
в общем случае - хорошо, в его случае - медленнее, так как увеличивается количество операций чтения/записи
odnochlen
С чего вдруг?? Все нормальные программы читают блоками, даже когда ты читаешь через read(), с диска это все равно читается блоками. Взяв адекватный размер блока (степень двойки и >= 1 Mb, цифра с потолка), ты разницы не заметишь.
py.user.next
odnochlen
Все нормальные программы читают блоками
неважно, как они читают, я тебе про скрипт говорю, выполняемый интерпретатором
что один вызов .read() или .write() работает быстрее, чем десяток таких вызовов
odnochlen
Если читать достаточно большими блоками - разница в скорости будет незаметной. А полностью читать в память неизвестно что - плохой стиль.
py.user.next
odnochlen
Если читать достаточно большими блоками - разница в скорости будет незаметной.
получится тот же .read()

odnochlen
А полностью читать в память неизвестно что - плохой стиль.
это в общем случае
а в конкретном, где есть множество файлов небольшого размера, нет разницы (код с .read() короче)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB