пятница, 16 декабря 2011 г.

Как своровать ресурсы из файла swf

Linux: Ну, во-первых, нужен сам файл. Как его загрузить в один клик в браузере, я так и не разобрался, приходится смотреть в html-код, искать ссылку и тянуть её при помощи wget написано, например, вот тут: в FireFox-е через пункт контекстного меню "Информация о странице" переходим во вкладку "Мультимедиа" и тянем всё, что пожелаем. Ладно. Дальше начинается самое интересное.
Есть такая штука, swftools. В ней присутствует утилита swfextract, при помощи которой всё легко достаётся:
1. Выполняем команду
swfextract myfile.swf

На выходе получаем примерно такое:
Objects in file myfile.swf:
[-i] 2 Shapes: ID(s) 2, 4
[-i] 5 MovieClips: ID(s) 3, 5, 7, 10, 11
[-j] 2 JPEGs: ID(s) 17, 632
[-p] 1 PNG: ID(s) 915
[-s] 7 Sounds: ID(s) 40-45, 584
[-F] 2 Fonts: ID(s) 20, 21
[-f] 1 Frame: ID(s) 0
[-m] 1 MP3 Soundstream

2. Дальше извлекаем нужный ресурс. Например, можно утянуть музыку. Вот только команда с ключом -m дохнет с ошибкой ERROR Soundstream is not mp3 (2), зато, например, командой
swfextract -s 44 myfile.swf -o 6.wav
нужный саундтрек достается без хлопот.

Есть еще полезная утилита, swfdump - она показывает более подробную информацию. Т.е. выполняем
swfdump myfile.swf > 1.txt
и смотрим всякие DEFINESOUND defines id 0044 (...) и т.п. - чтобы было понятно, что достаем.

Основная проблема - эти самые swftools поставить. Вроде как в репозитории убунты такого нет, поэтому ставим из исходников. Тут есть небольшая тонкость: потребуется доустановить пакеты libjpeg-dev и libgif-dev. После этого всё компилируется, правда, с кучей ворнингов, но работает, вроде, нормально...

Windows: а в винде всё, помнится, было просто. Во-первых, с браузером интегрировался Orbit Downloader, который позволяет без проблем сохранять флэшки на диск, и, во-вторых, есть Sothink SWF Decompiler, который, хотя и платный, зато имеет приятный интерфейс 8-)

Комментариев нет:

Отправить комментарий