Наверное, многие программисты сталкивались с такой ситуацией, когда программа написана и отлажена, а ее исходный код утерян.
Т.е., готовая программа есть, а вот исходник её, блин, взял и потерялся. Вообщем, когда надо раздербанить чей-то код
восстановить внезапно утерянный исходник программы, творимой месяцами и годами. В случае программ, написанных на флеше, существует
несколько коммерческих решений для выдирания различных ресурсов (изображения и звук) из swf-файлов. Так же существует бесплатный пакет
swftools кроссплатформенных консольных утилит, предназначенный как для создания флеш-элементов,
так и для их декомпилирования.
В частности в этот пакет входят утилиты swfextract и swfdump,позволяющие извлекать отдельные ресурсы из swf-файла и декомпилировать файлы, получая листинг их содержимого с дампом. Недостатком этих утилит является то, что первая из них не умеет автоматически извлекать сразу все ресурсы из файла (хотя, где-то в Сети мне попадался патч, который добавляет эту возможность, но наложить его на последнюю версию swftools у меня не получилось), а вторая не умеет сохранять дамп в двоичный файл.
Для устранения этих недостатков был написан скрипт на питоне, который
Причем, все эти операции выполняются в одно действие, и в результате из исходного swf получается большое количество файлов ресурсов. Часть извлеченных файлов могут оказаться одинаковыми и для удаления дубликатов можно воспользоваться например этой програмкой
Синтаксис вызова команды следующий:
В Linux:
swf-extract.py <filename.swf> [<outdir>]
В Windows:
python swf-extract.py <filename.swf> [<outdir>]
Где первый аргумент filename.swf определяет имя распаковываемого файла swf, а второй необязательный параметр outdir определяет путь к директории, в которую будут сложены найденные файлы ресурсов. Если этот путь не указан, извлеченные файлы будут сложены в один каталог с распаковываемым файлом.
В заключении стоит добавить, что во избежании нарушения закона об авторских правах, таким образом можно распаковывать только swf-файлы собственного написания.
Скрипт можно скачать по ссылке ниже.
Пакет swftools ищется тут.
А среда Python живёт здесь.
Файлы:
swf-extract.zip