Сейчас на форуме: johnniewalker, Magister Yoda, Kybyx, vsv1, r0lka (+5 невидимых)

 eXeL@B —› Крэки, обсуждения —› Формат данных флэш-вьювера "Электронной библиотеки" РНБ
Посл.ответ Сообщение

Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 сентября 2010 09:18 · Поправил: TShd
· Личное сообщение · #1

Подскажите, что за формат у данных флэш-вьювера. Сам я раньше с флэшем дело не имел.

В общем, при загрузке страницы с книгой сначала грузится флэш-вьювер:

GET 200 112213 application/x-shockwave-flash http://leb.nlr.ru/NLRviewer.swf

А из него уже содежимое книги (2 Мб):

GET 200 2146466 application/octet-stream http://leb.nlr.ru/ws/docserver/document/bd0b7d699163660afb8b01466f34d60a

Содержимое я скачал браузером, но с определением формата возникли проблемы. "На глаз" (то есть по F3) это какой-то контейнер с XML, JPG, Flash и прочим добром, но вот какой именно контейнер? Их много - FXG, fla, xfl и т.д.? К тому же смущает сигнатура библиотеки (NLR) в начале файла.

Определители сигнатур, которые я нашёл, ничего не сказали, а качать 800Мб Adobe Flash Professional мне не хочется.

P.S. Сайт библиотеки у них работает в тестовом режиме, поэтому переодически в дауне. Вот файл на onlinedisk.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 17 сентября 2010 09:36 · Поправил: VodoleY
· Личное сообщение · #2

www.nlr.ru/eng/opac/card/sfile.htm это случайно не ваш файл описывают?
www.rba.ru/rusmarc/rusmarc/fullexamp/hpb/bibsource.htm
и вот еще

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 сентября 2010 09:46 · Поправил: TShd
· Личное сообщение · #3

К сожалению, нет. Это формат для обмена текстовыми библиотечными записями. Что-то вроде csv или db.

А что до данных флэшки, подозреваю, там какой-то стандартный адобовский формат. Но вот какой именно...



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 17 сентября 2010 12:14
· Личное сообщение · #4

TSDh пишет:
А что до данных флэшки, подозреваю, там какой-то стандартный адобовский формат.

При чем здесь формат Адоб. Раз это вьювер, там прога на скриптах сделана для просмотра библиотек. Для декомпиляции swf есть масса инструментов - правда придется сам язык смотреть, но думаю там какой-то стандартный алгоритм упаковки используется.



Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 сентября 2010 15:17
· Личное сообщение · #5

Да, похоже я жестоко протупил. Я почему-то считал, что, например, fla это флэшевский формат для бинарных данных. А это исходники.

Спасибо, попробую на выходных декомпилировать вьювер. Посмотрим, что получится.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 17 сентября 2010 16:26
· Личное сообщение · #6

TShd этот вьювер еще и сжат так что имей ввиду. а сам файл который содержит книжку. вначале типа хмл , а дальше набор смещенний в файле

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 17 сентября 2010 17:12
· Личное сообщение · #7

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

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 17 сентября 2010 17:16
· Личное сообщение · #8

И да, проге через FlashVars должны приходить всякие параметры, например
document_id
document_path
document_part

И есть там такой класс, который похоже связан с этими перемнными - толи генерирует ссылку конечную, толи ещё что,там ещё такие строки есть

Code:
  1.  public static var _-1g:String = "/NLRDirectPrinter.swf";
  2.         public static var _-3D:String = "/NLRPrinter.swf";
  3.         public static var _-1V:String = "/library/vrr/";
  4.         public static var _-4n:int = 34;
  5.         public static var _-2z:int = 8;
  6.         public static var _-Y:String = "http://leb.nlr.ru";
  7.         private static var _instance:_-45;
  8.         public static var _-1P:String = "/ws/printserver/";
  9.  
  10.         private var _-40:int;
  11.         private var _-1R:String = "/ws/docserver/settings/";
  12.         private var _-2L:String = null;
  13.         private var _-0C:String = "RU";
  14.         private var _-v:String = "/ws/docserver/document/";


-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 сентября 2010 19:50 · Поправил: TShd
· Личное сообщение · #9

TShd пишет:
Я почему-то считал, что, например, fla это флэшевский формат для бинарных данных. А это исходники.


Зато есть AMF - бинарный формат для сериализации объектов/данных. Может он?

4kusNick пишет:
И есть там такой класс, который похоже связан с этими перемнными - толи генерирует ссылку конечную, толи ещё что,там ещё такие строки есть


Конечную ссылку я смотрю сниффером - это не проблема. Проблема извлечь данные. Для меня AS пока как китайская грамота, но, пробежав по диагонали, куска с декодированием/десериализацией данных я пока не нашёл. Нашёл только с сериализацией (ObjectEncoding), хотя какой-то странный:

Code:
  1.                     -4Y = new ByteArray();
  2.                     _-4Y.endian = Endian.LITTLE_ENDIAN;
  3.                     _-4Y.objectEncoding = ObjectEncoding.AMF3;


И ниже:

Code:
  1.                 _-4Y.position = _-3A + _-0r;
  2.                 try
  3.                 {
  4.                     _-4Y.readBytes(_-5Q, 0, pagesDataLength);
  5.                 }


Code:
  1.             _-4Y.position = _-1u[pageIndex];
  2.             _-4Y.readBytes(pageBytes, pageBytes.length, _-5o[pageIndex]);


Похоже на чтение страниц по смещениям?



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 17 сентября 2010 20:33
· Личное сообщение · #10

VodoleY пишет:
. вначале типа хмл , а дальше набор смещенний в файле

TShd посмотри, там блоков не так много

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 сентября 2010 20:45
· Личное сообщение · #11

VodoleY пишет:
TShd посмотри, там блоков не так много


Ну, XML я видел, а смещения похоже прозевал. Спасибо, проверю и их.

Хотя там не обязательно jpg, по смещениям и сериализированные данные могут быть.



Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 сентября 2010 07:36 · Поправил: TShd
· Личное сообщение · #12

Распаковывать я пока не пробовал, только код читал, но вроде всё понятно.

Первые 28 байт это хедер. Интересен в нём прежде всего девятый байт (кол-во страниц) и размер XML структуры после хедера (но с его местоположением пока не уверен).

После хедера идёт XML.

За XML - таблица смещений и размеров страниц. На каждую страницу отводится восемь байт: 4 байта на смещение и 4 байта на размер.



Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 сентября 2010 20:17 · Поправил: TShd
· Личное сообщение · #13

Темплейт для WinHex:

Code:
  1. template "NLR Flash Viewer Data Format"
  2. description "NLR Flash Viewer Data Format"
  3. fixed_start 0
  4. requires 0 "4E 4C 52"
  5.  
  6. begin
  7.          char[3] "Signature"
  8.          goto       4
  9.          uint32   "FileSize"
  10.          goto       8
  11.          uint16   "BookPageQuantity"
  12.          goto       18
  13.          uint16  "PartFirstPageNumber"
  14.          goto       20
  15.          uint16  "PartPageQuantity"
  16.          goto      26
  17.          uint16   "XMLDataSize"
  18.          goto       28
  19.          move       "XMLDataSize"
  20.          {
  21.                  uint32          "PageOffset"
  22.                  uint32          "PageSize"
  23.          } ["PartPageQuantity"]
  24. end


Страницы представляют собой сжатый флэш без сигнатуры, которая добавляется перед самой загрузкой страницы во вьювер. То есть: [{CWS}] {BYTE версия флэша} {DWORD размер файла} {упакованные zlib данные}.

Хотя по zlib есть некоторые непонятки. Завтра проверю кое-что и напишу. Если кому интересно.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 20 сентября 2010 07:49
· Личное сообщение · #14

TShd по zlib че непонятно то? вот ты все и разодрал собственно

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 сентября 2010 08:13 · Поправил: TShd
· Личное сообщение · #15

Проверить я не успел, но с zlib мне не понятна прежде всего сигнатура 78 DA 9C. Насколько я знаю, у zlib может быть либо 78 9C (обычное сжатие), либо 78 DA (максимальное сжатие).

Видимо поэтому и перловский Compress::Zlib данные распаковывать не хочет, как и WinHex. Flasm и Sothink, правда, берут, но всё равно интересно, в чём тут дело.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 20 сентября 2010 11:10
· Личное сообщение · #16

скорее всего Flasm и Sothink не проверяют заголовок на валидность а просто пытаюца распаковать ее, возможно это еще одна подлость разрабов

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 сентября 2010 23:29
· Личное сообщение · #17

Можно ли сделать просто просмотр скаченного файла flv из библиотеки на компе ?, без интернета ?




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 26 сентября 2010 08:16
· Личное сообщение · #18

Nemos190 Что спросил то?
Если скаченый файл flv, как ты написал, то проблемм с просмотром не возникнет.

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 сентября 2010 10:57
· Личное сообщение · #19

Он как раз странный и просто "смотреться" не хочет ...
Пример любой из данной библиотеки
или надо исполбзлвать какой-то проигрыватель ... (странный0 - ?


 eXeL@B —› Крэки, обсуждения —› Формат данных флэш-вьювера "Электронной библиотеки" РНБ
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати