Подтвердить что ты не робот

Как определить, для какой версии флэш-плеера был опубликован swf?

У меня есть SWF неизвестного происхождения, и мне нужно знать, в какую версию флеш-плейера он был нацелен, когда он был опубликован. Как получить эту информацию?

4b9b3361

Ответ 1

4-й байт в SWF файле содержит номер версии, например 0A для Flash Player 10.

РЕДАКТИРОВАТЬ: Из-за высокого интереса к этому вопросу я решил дать больше отзывов

Первые 8 байтов любого SWF файла не сжаты, остальная часть файла может быть сжата (или нет) сжатием zlib.

  • 1-й байт: 'F' (не сжатый) ИЛИ 'C' (сжатый).
  • 2-й байт: 'W' всегда.
  • Третий байт: 'S' всегда.
  • 4-й байт: номер версии (09 означает, что этот файл предназначен для Flash Player 9 и т.д.)
  • От 5-го по 8-й: длина всего файла в байтах.

Ответ 2

В Flex SDK содержится инструмент swfdump, который отображает все метаданные внутри SWF файла. Вот начало вывода, когда я запускаю "swfdump foo.swf":

<swf xmlns='http://macromedia/2003/swfx' version='9' framerate='24' size='10000x7500' compressed='true'>

Ответ 3

Это добавляет, что сказал Брайан Шарон.

Да отображение 1-к-1 версии swf-версии и версии Flash Player больше не существует.

Что изображает 4-й байт, является -swf-версией, и что хорошего в этом, так это то, что теперь есть отношение один к одному с выпуском точек.

Посмотрите на эти ссылки:
http://blogs.adobe.com/airodynamics/2011/08/16/versioning-in-flash-runtime-swf-version/
http://sleepydesign.blogspot.in/2012/04/flash-swf-version-meaning.html

Из второй ссылки:

Compiler Option     Flash Player Version
-swf-version=9      9
-swf-version=10     10, 10.1
-swf-version=11     10.2
-swf-version=12     10.3
-swf-version=13     11.0
-swf-version=14     11.1
-swf-version=15     11.2
-swf-version=16     11.3

Я использую эту информацию из флеш файлов, чтобы предупредить пользователей о том, что их флэш-плеер может устареть на моем портале флеш-игр. И это прекрасно работает.

Ответ 4

Большинство - все? - ответов до сих пор неверны, что очень печально, так как я надеялся найти ответ на этот вопрос:).

Байт 4 SWF указывает, какая версия SWF файла используется SWF файлом. Это не то же, что и версия целевого игрока.

Минимальная версия игрока устанавливается во время компиляции с помощью целевого игрока опции компилятора, а версия формата SWF файла устанавливается с помощью опции swf-версии.

Значения по умолчанию для этих параметров можно найти внутри FLEX_SDK/frameworks/flex-config.xml. Для версии SDK, используемой мной (4.5.1), значения по умолчанию следующие:

    <!-- Specifies the minimum player version that will run the compiled SWF. -->
   <target-player>10.2.0</target-player>

    <!-- Specifies the version of the compiled SWF -->
    <swf-version>11</swf-version>

Это означает, что swfversion.com показывает 11 для моего SWF, хотя я только требую, чтобы у пользователей было 10.2. И согласно http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7a92.html, Flex 4.6 устанавливает целевого игрока в 11.1 и swf-версию до 14. Поэтому я не понимаю, как swfversion. com полезен.

Ответ 5

Вы можете использовать инструмент проверки DoubleClick Flash Validator:

https://flashval-temp.appspot.com/validator/

Он предоставит информацию, такую ​​как имя SWF, версию, размер файла, размеры, кадры в секунду, сжатие и общие кадры.

Ответ 6

Возьмите gander в спецификации SWF из http://www.adobe.com/devnet/swf.html

Затем сделайте шестнадцатеричный дамп или откройте SWF в редакторе, который может отображать hex. Версия SWF является одним из первых байтов и перед запуском сжатых данных. Я хочу сказать, что это байт 4, но я не помню полностью. Значение - номер версии. IIRC, точечная версия не закодирована в SWF.

Файл GNU также может вам рассказать. Возможно, я редактировал свои правила, чтобы сделать это.