У знакомого один вирус испортил много фотографий на компьютере, поиск в поисковике привел на форум касперского где один хороший человек выложил скрипт на питоне который расшифровывает фотографии, но проблема в том что сам скрипт при запуске выдает ошибку, помогите понят в чем проблема в скрипте или же может кто поймет логику вируса есть сам зловред + фотографии с исходниками.
Ниже выкладываю две фотографии и скрипт который должен работать но не работает, для запуска нужен питон 2.7
http://rghost.ru/private/37699950/e310ebbd5b1ff64b17feb5a350dd1b3b
code_27728.txt
Этот топик читают: Гость
Ответов: 157
Рейтинг: 1
|
|||
карма: 0 |
| ||
файлы: 1 | code_27728.txt [1KB] [107] |
Ответов: 5446
Рейтинг: 323
|
|||
Мартынов, у меня скрипт пишет "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 был нечётной длины. |
|||
карма: 1 |
| ||
Голосовали: | Мартынов |
Ответов: 1841
Рейтинг: 369
|
|||
"Расшифровка" именно "зараженных" изображений jpg формата на бинарном уровне
см. ниже ------------ Дoбавленo в 22.50: При создании схемы, в исходник питона не смотрел, просто сравнил 2 файла которые были в архиве и на основе полученной информации была составлена схема. ------------ Дoбавленo в 22.52: У мультика забыл установить Mode: OnlyOnce ------------ Дoбавленo в 22.59: Обновлённый вариант с исправленным Mode: OnlyOnce.
|
|||
карма: 1 |
|
Ответов: 157
Рейтинг: 1
|
|||
iarspider, спасибо за развернутый ответ у меня голова закипела
CriDos, интересная схема и она работает ... но только на этой фотографии пожалуйста опиши логику которой ты мотивировался при написании своей схемы(чем сравнивал файлы?) откуда ты взял эти числа в массиве ? 255 216 19 ? Если сравнить файлы и удалить все что не совпадает в оригинальном файле, фотография просматривается но она имеет некоторые дефекты, я так понял этот исходник питона не подходит под данную реализацию вируса... ------------ Дoбавленo в 23.19: Походу ты возвращаешь хедэр в начальное положение .... |
|||
карма: 0 |
|
Ответов: 1841
Рейтинг: 369
|
|||
Мартынов, заменяю первые 5 вирусных байтов, на положенные по формату JPG...
Как-то так ------------ Дoбавленo в 23.37: А массив с INT представлением байтов и сложение лишь для ускорения процесса и корректности замены Можно например вообще заменить текст R2d8h на яШяб и всё, изображение рабочее p.s. Сравнивал WinHex'ом. ------------ Дoбавленo в 23.43: Хотя нет, в данном случае просто заменить как текст, не получится. |
|||
карма: 1 |
|
Ответов: 157
Рейтинг: 1
|
|||
iarspider, у тебя скрипт запустился? у меня выдает ошибку Applibencodingshex_codec.py42 exceptions.TypeError: Odd-length string
|
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Мартынов, я же написал - либо раскодировщик "не той системы", либо зашифрованный файл не полный
|
|||
карма: 1 |
|
7