Описание формата файлов и каталогов

Ответить
Аватара пользователя
madlord
Администратор
Сообщения: 457
Зарегистрирован: 04 авг 2014, 11:10
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Описание формата файлов и каталогов

Сообщение madlord » 18 апр 2017, 16:17

Символы "-----------" в описании используются как логические разделители блоков данных в файле.
Т.к. система использует little-endian, то нужно не забывать переворачивать данные, т.е. 01 00 00 35 в файле это число 35 00 00 01.

Формат Id диска: NN 00 00 MM, где NN - идентификатор, а MM - некая версия или группа. В большинстве случаев, MM отличное от 01 не встречал, но в японском сервере у одного диска был 02: в каталоге DATA\DATANN было 2 каталога - NN000001 и NN000002. Каталоги различались кол-вом песен. Надо будет потом изучить этот вопрос.

Все файлы с расширением *.bakN - бэкап, не используются, создаются системой, можно смело удалять (или использовать для анализа изменений ;) ).
Каталог CUSTOM - встречал с файлами только в японских версиях. В других он всегда пустой. Надо проверить, влияет на что-либо его удаление?
Каталог DATA - содержит каталоги дисков и самих песен (в формате MMCS). При удалении дисков - в каталогах удаляются только песни, сами каталоги остаются (надо проверить, влияет ли на что-либо их удаление?).
Каталог INFO - описание данных сервера.
Общая структура

Код: Выделить всё

AVUNIT
    CUSTOM
        ccu.edb
        ccutoc.idx
        sccu.edb
        sccutoc.idx
    DATA
        DATANN
            NN000001
                001.sc
                NN000001DISCID.lst
    INFO
        ALBUM
            ALBUM0000001
                ALBUM0000001.lst
            USEDALBUM.lst
        DISCID
            DISCIDNN.lst
        HIST
            2014
                HIST1401.lst
        RECORD
            RECORDNN
                RECORDNN00001.lst
        TITLE
            TITLENN
                TITLENN00001.lst
        AVVRALBUMARTIST.lst
        AVVRALBUMTITLE.lst
        AVVRTRACKTITLE.lst
        INDEX.lst
        ORG_ARRAY
    AVSCPlayTrackData.dat
AVSCPlayTrackData.dat
Судя по всему содержит некий список последних используемых треков. Файл отсутствует изначально. Но если просто были удалены все диски с сервера - файл остается.
-----------
NFILE_SAFE_HEAD - 16 bytes (15 байт - текст, 16-й байт - 00)
-----------
?? ?? ?? ?? - 4 bytes
-----------
?? ?? ?? ?? - 4 bytes
-----------
00 00 00 00 00 00 00 00 - 8 bytes. прим.1
-----------
?? ?? ?? ?? - 4 bytes
-----------
01 00 00 MM - прим.2
01 00 00 MM
00 01 01 00

01 00 00 MM
01 00 00 MM
00 02 02 00
...
01 00 00 MM
01 00 00 MM
00 XX XX 00 - прим.3
-----------
YY 00 00 00 - прим.4
-----------
00 00 00 00
01 00 00 00
02 00 00 00
...
NN 00 00 00 - прим.5
-----------

Примечания:
1. Все 00 если сервер не пустой. Если пустой (не удалены диски, а именно изначально пустой), то там какие-то данные. При этом (если пустой) после этих данных файл заканчивается (т.е. имеет длину 32 байта).
2. 01 00 00 35 (newcd only) or 01 00 00 15 (orig) or 01 00 00 29 (orig -2 songs) or 01 00 00 01 (newcd). Вообще 35000001 - так записывается Id диска.
3. XX - кол-во блоков по 12 байт, где первые 8 байт - 2 раза повторяется Id диска
4. 99 00 00 00 - newcd only or newcd, 5B 00 00 00 - orig, 4E 00 00 00 - orig-2 songs, 69 00 00 00 - newcd-1 disk. В общем, пока непонятно.
5. блок из 4 байт повторяется NN раз
INDEX.lst
Список групп и дисков.
-----------
?? ?? ?? ?? - 4 bytes. прим.1
-----------
SLJA_INDEX:1.5 - 14 bytes
-----------
00 00 00 00 ... - 18 null bytes (00)
-----------
XX 00 00 00 - 4 bytes. прим.2
-----------
... - 13 200 bytes. прим.3
-----------
01 00 00 NN - 8 bytes * (XX - H'02). прим.4
00 00 00 00
-----------
01 00 00 00 - 16 bytes. прим.5
01 00 00 01
02 00 00 00
01 00 00 01
-----------

Примечания:
1. что за данные пока непонятно. Но есть некая закономерность: если удалить диск, то число уменьшается на Id диска. Если добавить диск (т.е. вставить Audio-CD и он автоматом на сервер "сольется"), то число увеличивается на Id нового диска (точнее Id диска + H'02). Пример:
9F 08 45 C5 - изначально (т.е. C5 45 08 9F)
A2 08 45 FA - (т.е. FA 45 08 A2) добавился диск с Id 01 00 00 35 (т.е. 35 00 00 01)
9F 08 45 E5 - (т.е. E5 45 08 9F) удалился диск с Id 01 00 00 15 (т.е. 15 00 00 01)
При этом на пустом изначально сервере данные какие-то есть (например, 3E 6A 1F 4E).
2. XX - число дисков + H'02 (изначально 2 места под дефолтные группы, типа "Любимые" и еще что-то)
3. 100 * 132 bytes (100 групп) - резерв под 100 групп. Первые 4 байта - MM 00 00 00 - Id группы (начинается с 0), если группа пустая, то FF 00 00 01. При добавлении группы, она добавляется в начало с новым Id, далее только пустые группы. После Id группы 128 байт - имя группы (в кодировке ISO 8895-5)
4. XX - число дисков из прим.2. Повторяются 8 байт: 4 байта - Id диска и 4 нулевых байта
5. описание 2-х дефолтных групп
AVVRALBUMARTIST.lst, AVVRALBUMTITLE.lst, AVVRTRACKTITLE.lst
Не меняющиеся, схожие по структуре файлы по 40 байт.
-----------
4 байта: C0 BB 80 4A - AVVRALBUMARTIST.lst, C7 68 77 4A - AVVRALBUMTITLE.lst, CD 67 65 5B - AVVRTRACKTITLE.lst
-----------
SLJA_VRALBUMARTIST:1.0 (22 байта) - AVVRALBUMARTIST.lst, SLJA_VRALBUMTITLE:1.0 (21 байт) - AVVRALBUMTITLE.lst, SLJA_VRTRACKTITLE:1.0 (21 байт) - AVVRTRACKTITLE.lst
-----------
14 null bytes - AVVRALBUMARTIST.lst, 15 null bytes - AVVRALBUMTITLE.lst и AVVRTRACKTITLE.lst
-----------
ORG_ARRAY
Список дисков
-----------
DATE - 4 bytes. прим.1
-----------
XX 00 00 00 - 4 bytes. прим.2
-----------
... - XX x 224 bytes. прим.3
-----------

Примечания:
1. Если сервер пуст (либо изначально, либо удалили все диски), то - 20 20 20 20. Если диски есть, то слово "DATE".
2. XX - кол-во дисков. Если сервер пуст, то - 00 00 00 00 и дальше ничего (т.е. файл будет размером 8 байт).
3. XX (прим.2) блоков по 224 байта:
1 null byte
4 bytes disk Id (например, 01 00 00 29)
7 null bytes
192 bytes - имя диска (в кодировке ISO 8895-5)
4 bytes - кол-во песен на диске (например, для 18 песен - 12 00 00 00)
4 bytes - пока не понятно (прим.4)
12 null bytes
4. Набор данных для анализа в формате Id диска - 4 непонятных байта (имя диска, кол-во песен):
01 00 00 01 - FF FF 03 00(???, 20 songs)
01 00 00 06 - FF E7 00 00(???, 17 songs)
01 00 00 11 - FF 03 00 00(???, 10 songs)
01 00 00 15 - FF 3F 00 00(Conspiracy Of One, 14 songs)
01 00 00 29 - FF 7F 00 00(Brat 2, 15 songs)
01 00 00 35 - FF FF 03 00(Delta machine, 18 songs)
музыкальные файлы
Музыкальные файлы представляют из себя файлы с расширением *.sc. Формат файлов - данные, закодированные в формате ATRAC3plus (OMA) с заголовком формата WAV (такой формат файлов часто используется на PSP). Заголовок имеет свои особенности (проверил на, порядка, 400 файлах с 3-х разных навигаций - J, N и R):
общий размер заголовка - 80 байт
все цифровые значение записаны в little-endian

Код: Выделить всё

смещение от начала файла (байт)  размер (байт)     описание
0                                4                 Содержит символы “RIFF” в ASCII кодировке 
                                                   (0x52494646 в big-endian представлении).
4                                4                 Оставшийся размер цепочки, начиная с этой позиции. 
                                                   Иначе говоря, это размер файла – 8, то есть, исключены поля chunkId и chunkSize. 
                                                   Но на MMCS здесь всегда нули.
8                                4                 Содержит символы “WAVE” (0x57415645 в big-endian представлении)
12                               4                 Содержит символы “fmt “ (0x666d7420 в big-endian представлении)
16                               4                 Оставшийся размер подцепочки, начиная с этой позиции. 
                                                   Для MMCS всегда 52
20                               2                 Аудио формат. Для ATRAC3plus это 0xFFFE
22                               2                 Количество каналов. Для MMCS всегда 2 (надо проверить)
24                               4                 Частота дискретизации. Для MMCS всегда 44100 (надо проверить)
28                               4                 Количество байт, переданных за секунду воспроизведения. 
                                                   Для MMCS может быть 8096 или 16020
32                               2                 Количество байт для одного сэмпла, включая все каналы. 
                                                   Для MMCS всегда 744
34                               2                 Количество бит в сэмпле. Так называемая “глубина” или точность звучания. 
                                                   Для MMCS всегда 0
36                               2                 Extra format bytes (кол-во байт доп данных). Для MMCS всегда 34 
38                               34                Дополнительные данные формата (описание ниже)
72                               4                 Содержит символы “data” (0x64617461 в big-endian представлении)
76                               4                 Количество байт в области данных. Для MMCS всегда 0
Дополнительные данные формата - спец данные, которые несут дополнительную информацию о формате сжатия (например, первые 2 байта - ValidBitsPerSample, потом 4 байта - channelMask и т.д.). Для MMCS это всегда следующие 34 байта: 0х000803000000BFAA23E958CB7144A119FFFA01E4CE620100285C0000000000000000
в наличии MMCS J-01, J-02, J-03, Toyota Denso E7027, NSCN-W59C
репозитории

megaaxel
Администратор
Сообщения: 9
Зарегистрирован: 25 окт 2016, 15:25

Re: Описание формата файлов и каталогов

Сообщение megaaxel » 18 апр 2017, 17:12

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

Аватара пользователя
madlord
Администратор
Сообщения: 457
Зарегистрирован: 04 авг 2014, 11:10
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Описание формата файлов и каталогов

Сообщение madlord » 18 апр 2017, 18:36

структуру выложил...только ща закончил всё описание, что есть - надеюсь ничего не забыл...
в наличии MMCS J-01, J-02, J-03, Toyota Denso E7027, NSCN-W59C
репозитории

Ответить