Мартынов, у меня скрипт пишет "warning, secret data is broken" - это значит что исходный файл - не полный. Алгоритм работы:
1. Найти смещение ind строки "0XFF 0XD9", если не найдено (либо находится в конце файла) - выдать сообщение "secret data not found"
2. "Перемещённые" данные (meta) начинаются со смещение ind+2 (т.е. по сути - после этой строки)
3. Длина непрерывного блока данных size - один байт, лежит в конце файла
4. Найти смещение ind2, по которому лежит байт "0x14", если такого нет - выдать сообщение "warning, secret data is broken"
5а. Если байт 0x14 не был найден, то meta - это весь зашифрованный блок, а poses - это последовательность (0, size, size*2, ..., длина meta - 1)
5b. Если байт 0x14 был найден, то зашифрованный блок делится смещением ind2 на две части - meta (от начала блока до ind2) и poses (от ind2 до предпоследнего байта).
6. meta декодируется просто - два раза применить пробразование Hex->Int (т.е. перевести строку из двух букв - запись числа в шестнадцатеричной системе в десятичное число)
7. (если байт 0x14 был найден) poses декодируется чуть сложнее: из каждых 9 байт берётся 3 и 4, и интерпретируются как беззнаковое целое, записанное в формате "big-endian" (т.е. сначала идёт старший байт, затем младший), остальные байты отбрасываются
8. Проводится восстановление исходного файла: по каждому из смещений pos в массиве poses пишется очередной "кусок" из meta размером size, замещая исходные данные
------------ Дoбавленo в 22.33:
Да, если раскомментировать все строки в файле, то пишет "Odd-length string" - значит блок meta был нечётной длины.
Ответов: 5446
Рейтинг: 323
|
|||
карма: 1 |
| ||
Голосовали: | Мартынов |