diff --git a/AGENTS.md b/AGENTS.md index 5726bb5..61a9e77 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -50,11 +50,12 @@ description: Описание категории на русском языке. Markdown. 6. `homepage` — необязательный URL домашней страницы. 7. `source` — необязательный URL исходного кода. -8. `author` — необязательное имя автора или название организации-разработчика. -9. `screenshots` — обязательный массив путей; используй `[]`, если изображений +8. `forum` — необязательный URL темы программы на форуме. +9. `author` — необязательное имя автора или название организации-разработчика. +10. `screenshots` — обязательный массив путей; используй `[]`, если изображений нет. -10. `versions` — обязательный непустой массив версий. -11. `additional_files` — необязательный массив файлов, не привязанных к версии. +11. `versions` — обязательный непустой массив версий. +12. `additional_files` — необязательный массив файлов, не привязанных к версии. Новые версии добавляй в начало `versions`, от новых к старым. Каждая версия имеет такой вид: @@ -87,6 +88,11 @@ description: Описание категории на русском языке. SHA-256 не добавляй в индекс программы: они хранятся только в автоматически создаваемом `catalog/files.yaml`. +`description` файла добавляй только для существенной информации: отличия от +других вариантов, особого назначения или дополнительных материалов в архиве. +Не повторяй в нём название программы, номер версии, имя файла или тип +«программа», «дистрибутив», «исполняемый файл». + ### Короткое описание `summary` выводится рядом с названием программы в списке категории. Напиши @@ -109,12 +115,17 @@ additional_files: - Названия категорий, описания программ, версий и файлов пиши на русском языке. Официальные названия продуктов и технологий не переводи. +- Если доступно авторское описание, сохраняй его лексику, тон, порядок мыслей и + характерные формулировки. Не переписывай текст в нейтральном справочном стиле + и не заменяй авторские термины своими. Исправляй только оформление Markdown, + явные опечатки и очевидные грамматические ошибки. - Сохраняй полноту исходного описания. Не сокращай перечень возможностей до общего пересказа и не удаляй значимые технические подробности. - Содержимое каждого `description` интерпретируется как Markdown. Для длинного описания со списком используй литеральный блок `|-` и Markdown-списки; для обычного абзаца, перенесённого на несколько строк, используй `>-`. Не вставляй HTML-разметку. +- Каждый пункт Markdown-списка начинай с заглавной буквы. - Не выдумывай даты, ссылки, возможности или платформы. Неизвестное необязательное поле лучше не добавлять. - Сначала пытайся определить версию по странице, имени файла, README и @@ -134,8 +145,13 @@ additional_files: - Дистрибутивы и отдельные исполняемые файлы храни в ZIP, совместимом со встроенным распаковщиком Windows XP: методы Store или Deflate, без шифрования и Zip64. Не добавляй RAR, 7z и незапакованные EXE. -- При перепаковке сохраняй имена, содержимое и время изменения файлов внутри - архива. +- RAR, 7z, ZIP и отдельные EXE перепаковывай только командой + `pnpm repack-archive <путь>`. Она создаёт рядом проверенный ZIP и сохраняет + имена, содержимое и время изменения файлов. По умолчанию исходник остаётся; + `--replace` используй только когда его нужно удалить после успешной проверки. + Для другого пути назначения используй `--output <путь>`. +- После перепаковки замени путь в `index.yaml` и выполни + `pnpm fill-metadata`, чтобы обновить `catalog/files.yaml`. - Архивы должны проходить через Git LFS согласно `.gitattributes`. Остальные файлы хранятся в обычном Git. diff --git a/README.md b/README.md index db21074..3886adb 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ description: |- Полное описание в Markdown. homepage: https://example.org source: https://github.com/example/project +forum: https://example.org/forum/topic author: Автор screenshots: - img/screenshot.png @@ -78,9 +79,12 @@ additional_files: pnpm install pnpm fill-metadata pnpm fill-metadata:check +pnpm repack-archive path/to/archive.rar pnpm tree pnpm typecheck ``` `fill-metadata` пересобирает `catalog/files.yaml`. `tree` принимает путь и флаги -`--paths`, `--versions`. +`--paths`, `--versions`. `repack-archive` создаёт совместимый с Windows XP ZIP и +проверяет содержимое и timestamps; флаг `--replace` удаляет исходник только +после успешной проверки. diff --git a/catalog/development/debugging/armdebugger/files/ArmDebugger-079m2.zip b/catalog/development/debugging/armdebugger/files/ArmDebugger-079m2.zip new file mode 100644 index 0000000..2a80ce3 --- /dev/null +++ b/catalog/development/debugging/armdebugger/files/ArmDebugger-079m2.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f02c880d1631a3d56938c962019c494fb7c50effabdf85095a316a84c310b9c +size 539301 diff --git a/catalog/development/debugging/armdebugger/index.yaml b/catalog/development/debugging/armdebugger/index.yaml index b6358b6..37f1f05 100644 --- a/catalog/development/debugging/armdebugger/index.yaml +++ b/catalog/development/debugging/armdebugger/index.yaml @@ -1,30 +1,41 @@ format: 1 type: program name: ArmDebugger -summary: Отладчик ARM/Thumb-кода для телефонов Siemens 65/70/75-й серии. +summary: Дебаггер для телефонов Siemens 65/70/75-й серии. description: |- Отладчик для телефонов Siemens 65/70/75-й серии. - Возможности: - - автоматическая генерация CGSN-патча по слитому фулфлешу; - - просмотр содержимого памяти телефона в HEX-дампе; - - ARM/Thumb-дизассемблер с inline-ассемблером; - - пошаговая трассировка программы или процесса; - - установка точек мониторинга на любой адрес флеш-памяти и на запись в - диапазон RAM; - - редактирование памяти, в том числе флеш-области, с использованием замещения - flash-страниц; - - поиск байтов, строк и ссылок в памяти; - - интеграция с Keil ARM Tools; - - дамп памяти в файл, вызов функций flash с параметрами и hex/bin/dec - калькулятор. + - Автоматическая генерация CGSN-патча по слитому фулфлешу + - Просмотр содержимого памяти телефона в HEX-дампе + - ARM/Thumb дизассемблер с inline-ассемблером + - Пошаговая трассировка программы или процесса + - Установка точек мониторинга на любой адрес флеш-памяти и на запись в + диапазон RAM + - Возможность редактирования памяти, в том числе флеш-области (используется + замещение flash-страниц) + - Поиск байтов/строк в памяти, ссылок + - Интеграция с Keil ARM tools + - Дополнительные функции: дамп памяти в файл, вызов функций flash с + параметрами, hex/bin/dec калькулятор + + [Инструкция по работе с ArmDebugger](/docs/reverse-engineering/arm-debugger). homepage: https://web.archive.org/web/20130813164842/http://chaos.allsiemens.com/software.html +forum: https://web.archive.org/web/20160806060433/http://forum.allsiemens.com/viewtopic.php?t=20735 author: Chaos screenshots: [] versions: + - version: "0.7.9m2" + released: "2012-04-07" + description: >- + Модификация Dimadze для BenQ-Siemens: работа с MallocAddress, мониторинг + внешней и виртуальной RAM, дополнительные паттерны Nucleus и подсветка + указателей. + files: + - path: files/ArmDebugger-079m2.zip + platform: win32 - version: "0.7.9" released: "2006-12-28" files: - path: files/ArmDebugger-079.zip - description: Отладчик, краткое руководство и примеры для Keil ARM Tools + description: В комплекте краткое руководство и примеры для Keil ARM Tools platform: win32 diff --git a/catalog/development/debugging/atcgsn-debug/files/ATCGSN.Debug-1.2.0.0.zip b/catalog/development/debugging/atcgsn-debug/files/ATCGSN.Debug-1.2.0.0.zip new file mode 100644 index 0000000..0104a91 --- /dev/null +++ b/catalog/development/debugging/atcgsn-debug/files/ATCGSN.Debug-1.2.0.0.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:745857e73e9dc6632b9586840fbe0e706230dfa9016c7cba4c7bc574de5463b8 +size 368471 diff --git a/catalog/development/debugging/atcgsn-debug/index.yaml b/catalog/development/debugging/atcgsn-debug/index.yaml new file mode 100644 index 0000000..c8d6913 --- /dev/null +++ b/catalog/development/debugging/atcgsn-debug/index.yaml @@ -0,0 +1,16 @@ +format: 1 +type: program +name: ATCGSN.Debug +summary: Дебаггер телефонов Siemens на платформе EGOLD через AT+CGSN. +description: >- + Дебаггер для чтения и изменения памяти работающего телефона Siemens на + платформе EGOLD через расширенную команду AT+CGSN и установленный в прошивку + патч. +homepage: https://web.archive.org/web/20050901015815/http://alexsid.antex.ru/index.php?main=techinfo.php +author: ACiD[mrp] +screenshots: [] +versions: + - version: "1.2.0.0" + files: + - path: files/ATCGSN.Debug-1.2.0.0.zip + platform: win32 diff --git a/catalog/development/debugging/cgsn-debugger/files/CGSN-Debugger-1.3.zip b/catalog/development/debugging/cgsn-debugger/files/CGSN-Debugger-1.3.zip new file mode 100644 index 0000000..32e5482 --- /dev/null +++ b/catalog/development/debugging/cgsn-debugger/files/CGSN-Debugger-1.3.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9e849b4968d69f1352c8eb80b1593c84abf6ed8c091c188408bcc292f1eab95 +size 387740 diff --git a/catalog/development/debugging/cgsn-debugger/index.yaml b/catalog/development/debugging/cgsn-debugger/index.yaml new file mode 100644 index 0000000..df99a38 --- /dev/null +++ b/catalog/development/debugging/cgsn-debugger/index.yaml @@ -0,0 +1,21 @@ +format: 1 +type: program +name: CGSN Debugger +summary: Дебаггер телефонов Siemens на платформе EGOLD через патч AT+CGSN. +description: |- + Дебаггер для работы с внутренней памятью RAM, ROM и Flash телефонов Siemens + на платформе EGOLD через соответствующую версию патча AT+CGSN. + + - Чтение участка памяти в файл; + - Запись и заполнение памяти; + - Поиск данных в пределах сегмента; + - Мониторинг выбранного участка памяти; + - Вызов процедуры по заданному адресу с установкой значений регистров. +homepage: https://web.archive.org/web/20050901015815/http://alexsid.antex.ru/index.php?main=techinfo.php +author: KonstanT +screenshots: [] +versions: + - version: "1.3" + files: + - path: files/CGSN-Debugger-1.3.zip + platform: win32 diff --git a/catalog/development/debugging/siemens-debugger/files/SiemensDebugger-1.7.2.16.zip b/catalog/development/debugging/siemens-debugger/files/SiemensDebugger-1.7.2.16.zip new file mode 100644 index 0000000..7df4006 --- /dev/null +++ b/catalog/development/debugging/siemens-debugger/files/SiemensDebugger-1.7.2.16.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46893fd85a864b5fd163c5a55677b544adbe1e376dd5c57058e51f8608958e8d +size 442087 diff --git a/catalog/development/debugging/siemens-debugger/index.yaml b/catalog/development/debugging/siemens-debugger/index.yaml new file mode 100644 index 0000000..ca1d35e --- /dev/null +++ b/catalog/development/debugging/siemens-debugger/index.yaml @@ -0,0 +1,16 @@ +format: 1 +type: program +name: Siemens Debugger +summary: Дебаггер телефонов Siemens на платформе EGOLD через BFB Mode. +description: >- + Дебаггер для телефонов Siemens на платформе EGOLD с открытым BFB. Для работы + требуется патч, открывающий BFB Mode и отключающий проверку CRC; примеры + патчей для разных моделей входят в комплект. +homepage: https://web.archive.org/web/20050901015815/http://alexsid.antex.ru/index.php?main=techinfo.php +author: ACiD[mrp] +screenshots: [] +versions: + - version: "1.7.2.16" + files: + - path: files/SiemensDebugger-1.7.2.16.zip + platform: win32 diff --git a/catalog/development/firmware/smelter/files/ocx-control-1.1.zip b/catalog/development/firmware/smelter/files/ocx-control-1.1.zip new file mode 100644 index 0000000..929194c --- /dev/null +++ b/catalog/development/firmware/smelter/files/ocx-control-1.1.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:926cc3c943ec030395840c69642a6c280226d011e8fbc8802cd30698e9f057b0 +size 1070964 diff --git a/catalog/development/firmware/smelter/files/smelter-9.65.zip b/catalog/development/firmware/smelter/files/smelter-9.65.zip new file mode 100644 index 0000000..6926ad3 --- /dev/null +++ b/catalog/development/firmware/smelter/files/smelter-9.65.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91dc68718aead4dd21b7c6e14d9960d45c892e079d0fb543deb99761f5e2959a +size 508512 diff --git a/catalog/development/firmware/smelter/files/smelter-language-files.zip b/catalog/development/firmware/smelter/files/smelter-language-files.zip new file mode 100644 index 0000000..fefa988 --- /dev/null +++ b/catalog/development/firmware/smelter/files/smelter-language-files.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f8d51d6670baa57668faf770d23ffd280c7b99b6e609790ad44fb7d8bfaece1 +size 55580 diff --git a/catalog/development/firmware/smelter/index.yaml b/catalog/development/firmware/smelter/index.yaml new file mode 100644 index 0000000..41e9daa --- /dev/null +++ b/catalog/development/firmware/smelter/index.yaml @@ -0,0 +1,58 @@ +format: 1 +type: program +name: Smelter +summary: "Исследователь FullFlash телефонов Siemens: EEPROM, ленгпак, меню и ресурсы прошивки." +description: |- + Эта программа предназначена для исследования фуллфлеша телефона. Она + вытаскивает из фф информацию о еепромах, ленгпаке, меню, картинках, мелодиях, + файлах и многом другом, после чего показывает их в удобном виде. Программа + заточена под 55-ю серию, но, по идее, должна грамотно работать и с + фуллфлешами других телефонов. Изначально предназначена для флешекопателей, но + может быть полезна и неискушенным пользователям. + + Возможности: + + - Вывод найденной в фф информации; + - Просмотр, загрузка и выгрузка блоков EEPROM, расшифровка содержимого + отдельных блоков, создание резервных копий и определение IMEI; + - Просмотр и редактирование ленгпака, загрузка и сохранение всего ленгпака или + его области; + - Исследование системы меню и поиск точек входа элементов; + - Просмотр и выгрузка картинок из фф; + - Просмотр, прослушивание, загрузка и выгрузка мелодий; + - Просмотр содержимого флекс-мемори и выгрузка файлов; + - Графический просмотр фф по блокам; + - Просмотр адресной книги x45–x65; + - Поиск байт с маской и выравниванием, поиск текста; + - Создание VKP-патча из изменений фф и запуск V_Klay; + - Сохранение списков в текстовый формат и IDC-файлы для IDA, поиск по спискам + и интеграция с WinHex или HexWorkshop; + - Мультиязычный интерфейс; + - Просмотр фф, стандартный калькулятор Windows и отдельный Calc166; + - Поиск стандартных функций по заданным в ini-файле сигнатурам; + - Генерация стандартных патчей по заданным в ini-файле сигнатурам; + - Нахождение бут-ключей и создание лоадера для V_Klay; + - Брут-форсовый поиск PhoneID; + - Поиск мастер-кодов для разлочки; + - Включение дополнительных менюшек в WinSwup; + - Создание сертификатов и подписывание мидлетов без Java; + - Дизарм, МикроАсм, работа с библиотекой функций и скриптами; + - Проверка и стрипание эльфов. + + Для корректной работы программы необходимы OCX-компоненты из комплекта OCX + Control, размещённого в дополнительных файлах. +homepage: https://web.archive.org/web/20130401035858/https://avkiev.kiev.ua/Siemens/Smelter/Smelter_ru.htm +author: avkiev +screenshots: [] +versions: + - version: "9.65" + released: "2008-04-20" + files: + - path: files/smelter-9.65.zip + description: В комплекте базы, скрипты и документация + platform: win32 +additional_files: + - path: files/smelter-language-files.zip + description: Языковые файлы для перевода интерфейса + - path: files/ocx-control-1.1.zip + description: Обязательные библиотеки ActiveX и OCX Control 1.1 для их регистрации diff --git a/catalog/development/firmware/wsff/index.yaml b/catalog/development/firmware/wsff/index.yaml index 1711e82..868d6b2 100644 --- a/catalog/development/firmware/wsff/index.yaml +++ b/catalog/development/firmware/wsff/index.yaml @@ -2,9 +2,7 @@ format: 1 type: program name: WSFF summary: Программа для анализа и распаковки сервисных прошивок Siemens WinSwup. -description: |- - Утилита для анализа структуры и распаковки баз сервисных прошивок Siemens - WinSwup. +description: Программа для анализа и распаковки WinSwup-баз. homepage: https://web.archive.org/web/20130825050857/http://papuas.allsiemens.com/ author: Papuas screenshots: [] @@ -13,5 +11,4 @@ versions: released: "2006-02-10" files: - path: files/WSFF4.zip - description: Программа WSFF4 platform: win32 diff --git a/catalog/development/modding/index.yaml b/catalog/development/modding/index.yaml new file mode 100644 index 0000000..745144e --- /dev/null +++ b/catalog/development/modding/index.yaml @@ -0,0 +1,4 @@ +format: 1 +type: category +name: Моддинг +description: Изменение интерфейса и ресурсов прошивок телефонов. diff --git a/catalog/development/modding/layoutme/files/layoutme-2.59.zip b/catalog/development/modding/layoutme/files/layoutme-2.59.zip new file mode 100644 index 0000000..9a0cc73 --- /dev/null +++ b/catalog/development/modding/layoutme/files/layoutme-2.59.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c4bd6dfe0f4afdb0f54a806c7027502834120e9d7067ac9279bfed5ae4cb82a +size 41012 diff --git a/catalog/development/modding/layoutme/index.yaml b/catalog/development/modding/layoutme/index.yaml new file mode 100644 index 0000000..70ef4e2 --- /dev/null +++ b/catalog/development/modding/layoutme/index.yaml @@ -0,0 +1,37 @@ +format: 1 +type: program +name: LayoutMe +summary: Редактор клавиатурных раскладок в FullFlash телефонов Siemens. +description: |- + Данная программа предназначена для редактирования клавиатурных раскладок + телефонов Siemens. Программа позволяет избавиться от надоедливых каракулей в + конце символьных последовательностей, русифицировать раскладки, а также + создавать экзотические раскладки вида АБЦ2ABC и тому подобных. + + Возможности: + + - Редактирование раскладки в фуллфлеше; + - Загрузка и выгрузка раскладки в автономный файл `*.lay`; + - Сохранение изменённого фуллфлеша или патча VKP; + - Интеграция с V_Klay; + - Поддержка WAP-раскладки; + - Русификация ввода во встроенном mail-клиенте с использованием KOI-8; + - Контроль количества используемых и доступных символов; + - Автоопределение модели и версии прошивки. + + Поддерживаемые прошивки: C45_3803, C45_5001, ME45_2803, ME45_3003, + S45i_0403, SL45_5601, 2118_3108, A50_1091, A50_1105, A50_1191, A50_1201, + MT50_1791, M50_1791, M50_1991, A55_0901, C55_2491, M55_1002, M55_1091, + M55_1191, M55_1192, M55_9191, S55_2091, S55_9191, SL55_1491, SL55_1691, + A52_0701, A60_1095, C60_2391, C60_2591, C60_2691, C60_2791, MC60_1095, + CF62_0791 и CF62_1191. +homepage: https://web.archive.org/web/20130401035858/http://avkiev.kiev.ua/Siemens/LayoutMe/LayoutMe.htm +author: avkiev +screenshots: [] +versions: + - version: "2.59" + released: "2004-10-27" + files: + - path: files/layoutme-2.59.zip + description: В комплекте документация и типовые раскладки X45/X55 + platform: win32 diff --git a/catalog/development/patching/ffpatch/index.yaml b/catalog/development/patching/ffpatch/index.yaml deleted file mode 100644 index 21a08e1..0000000 --- a/catalog/development/patching/ffpatch/index.yaml +++ /dev/null @@ -1,24 +0,0 @@ -format: 1 -type: program -name: FFPatch -summary: Программа для сравнения образов FullFlash и работы с патчами VKP. -description: |- - Программа для сравнения двух файлов fullflash, сохранения найденных отличий - в виде патча VKP и поиска уже установленных патчей в образе flash-памяти. - - Возможности: - - сравнение оригинального и текущего fullflash; - - формирование файла различий в формате VKP; - - поиск одного или нескольких патчей VKP в fullflash; - - добавление патчей отдельными файлами или целым каталогом; - - исключение заданных диапазонов адресов из поиска и сравнения; - - сохранение настроек фильтрации адресов. -homepage: https://web.archive.org/web/20130813164842/http://vi-soft.com.ua/ -author: Александр Яблочкин -screenshots: [] -versions: - - version: "0.4.2" - files: - - path: files/ffpatch.zip - description: Программа FFPatch и руководство пользователя - platform: win32 diff --git a/catalog/development/patching/filescomparer/index.yaml b/catalog/development/patching/filescomparer/index.yaml deleted file mode 100644 index 861bcfd..0000000 --- a/catalog/development/patching/filescomparer/index.yaml +++ /dev/null @@ -1,22 +0,0 @@ -format: 1 -type: program -name: FilesComparer -summary: Программа для побайтового сравнения файлов и образов FullFlash. -description: |- - Программа для сравнения файлов и образов flash-памяти. - - Возможности: - - сравнение файлов одинакового и разного размера; - - ограничение сравнения начальным и конечным адресами; - - передача параметров через командную строку; - - выравнивание результатов по байтам; - - работа под DOS и Windows. -homepage: https://web.archive.org/web/20130813164842/http://vi-soft.com.ua/ -author: SaiNT -screenshots: [] -versions: - - version: "1.2" - files: - - path: files/fc_v1.2.zip - description: Программа FilesComparer 1.2 - platform: win32 diff --git a/catalog/development/patching/hex2vkp/index.yaml b/catalog/development/patching/hex2vkp/index.yaml deleted file mode 100644 index 33a15a9..0000000 --- a/catalog/development/patching/hex2vkp/index.yaml +++ /dev/null @@ -1,21 +0,0 @@ -format: 1 -type: program -name: Hex2VKP -summary: Конвертер Intel HEX в формат патчей VKP для V_KLay. -description: |- - Консольный конвертер из формата Intel HEX в формат патчей VKP программы - V_KLay. - - Intel HEX применяется для загрузки данных в микроконтроллеры и может быть - создан компиляторами для C166, включая Keil и Tasking C. Hex2VKP преобразует - результат компиляции в патч VKP для последующей записи через V_KLay. Ключ - `-F` создаёт секцию отмены патча `UNDO PATCH`. -homepage: https://web.archive.org/web/20130813164842/http://vi-soft.com.ua/ -author: Redkin -screenshots: [] -versions: - - version: "0.1a" - files: - - path: files/hex2vkp.zip - description: Программа Hex2VKP, исходный код, настройки и руководство - platform: win32 diff --git a/catalog/development/patching/index.yaml b/catalog/development/patching/index.yaml deleted file mode 100644 index 3836672..0000000 --- a/catalog/development/patching/index.yaml +++ /dev/null @@ -1,4 +0,0 @@ -format: 1 -type: category -name: Патчинг -description: Сравнение прошивок, поиск изменений и создание патчей VKP. diff --git a/catalog/development/patching/ffpatch/files/ffpatch.zip b/catalog/development/utilities/ffpatch/files/ffpatch.zip similarity index 100% rename from catalog/development/patching/ffpatch/files/ffpatch.zip rename to catalog/development/utilities/ffpatch/files/ffpatch.zip diff --git a/catalog/development/utilities/ffpatch/index.yaml b/catalog/development/utilities/ffpatch/index.yaml new file mode 100644 index 0000000..1bcc3c0 --- /dev/null +++ b/catalog/development/utilities/ffpatch/index.yaml @@ -0,0 +1,17 @@ +format: 1 +type: program +name: FFPatch +summary: Программа для сравнения образов FullFlash и работы с патчами VKP. +description: >- + Для Windows. Сравнивает 2 файла (fullflash), результат сравнения можно + сохранять в виде vkp-файла. Также при помощи этой программы можно производить + поиск установленных патчей в файле фуллфлеша. +homepage: https://web.archive.org/web/20130813164842/http://vi-soft.com.ua/ +author: Александр Яблочкин +screenshots: [] +versions: + - version: "0.4.2" + files: + - path: files/ffpatch.zip + description: В комплекте руководство пользователя + platform: win32 diff --git a/catalog/development/patching/filescomparer/files/fc_v1.2.zip b/catalog/development/utilities/filescomparer/files/fc_v1.2.zip similarity index 100% rename from catalog/development/patching/filescomparer/files/fc_v1.2.zip rename to catalog/development/utilities/filescomparer/files/fc_v1.2.zip diff --git a/catalog/development/utilities/filescomparer/index.yaml b/catalog/development/utilities/filescomparer/index.yaml new file mode 100644 index 0000000..3417f79 --- /dev/null +++ b/catalog/development/utilities/filescomparer/index.yaml @@ -0,0 +1,18 @@ +format: 1 +type: program +name: FilesComparer +summary: Программа для побайтового сравнения файлов и образов FullFlash. +description: >- + Для DOS. Сравниватель файлов/флешей может сравнивать не только равные по + размеру файлы, но и неравные, а также выполнять сравнение с начального по + конечный адреса, которые задает сам пользователь. Параметры можно задавать из + командной строки. Возможность выравнивания результатов по байтам. Под DOS & + Windows. +homepage: https://web.archive.org/web/20130813164842/http://vi-soft.com.ua/ +author: SaiNT +screenshots: [] +versions: + - version: "1.2" + files: + - path: files/fc_v1.2.zip + platform: win32 diff --git a/catalog/development/patching/hex2vkp/files/hex2vkp.zip b/catalog/development/utilities/hex2vkp/files/hex2vkp.zip similarity index 100% rename from catalog/development/patching/hex2vkp/files/hex2vkp.zip rename to catalog/development/utilities/hex2vkp/files/hex2vkp.zip diff --git a/catalog/development/utilities/hex2vkp/index.yaml b/catalog/development/utilities/hex2vkp/index.yaml new file mode 100644 index 0000000..a2e07ea --- /dev/null +++ b/catalog/development/utilities/hex2vkp/index.yaml @@ -0,0 +1,23 @@ +format: 1 +type: program +name: Hex2VKP +summary: Конвертер Intel HEX в формат патчей VKP для V_KLay. +description: |- + Для Windows, с консольным интерфейсом. Hex2VKP — конвертер из Intel HEX + формата в формат программы V_Klay — .VKP. + + HEX (.H86) — это формат от фирмы Intel, специально предназначенный для + загрузки данных в микроконтроллеры. Многие компиляторы для C166 (в том числе + Keil и Tasking C) умеют выдавать результаты в этом формате. Таким образом, + заливка патчей в телефон становится проще. Все, что вам остается сделать + после компиляции патча, — это сконвертировать его данным тулом в формат .VKP и + залить в телефон программой V_KLay. +homepage: https://web.archive.org/web/20130813164842/http://vi-soft.com.ua/ +author: Redkin +screenshots: [] +versions: + - version: "0.1a" + files: + - path: files/hex2vkp.zip + description: В комплекте исходный код, настройки и руководство + platform: win32 diff --git a/catalog/development/utilities/index.yaml b/catalog/development/utilities/index.yaml new file mode 100644 index 0000000..9986f30 --- /dev/null +++ b/catalog/development/utilities/index.yaml @@ -0,0 +1,4 @@ +format: 1 +type: category +name: Утилиты +description: Сравнение и анализ прошивок, поиск функций и создание патчей VKP. diff --git a/catalog/development/patching/slfc/files/slfc-chaos.zip b/catalog/development/utilities/slfc/files/slfc-chaos.zip similarity index 100% rename from catalog/development/patching/slfc/files/slfc-chaos.zip rename to catalog/development/utilities/slfc/files/slfc-chaos.zip diff --git a/catalog/development/patching/slfc/files/slfc-vi-soft.zip b/catalog/development/utilities/slfc/files/slfc-vi-soft.zip similarity index 100% rename from catalog/development/patching/slfc/files/slfc-vi-soft.zip rename to catalog/development/utilities/slfc/files/slfc-vi-soft.zip diff --git a/catalog/development/patching/slfc/index.yaml b/catalog/development/utilities/slfc/index.yaml similarity index 56% rename from catalog/development/patching/slfc/index.yaml rename to catalog/development/utilities/slfc/index.yaml index 37504da..246138f 100644 --- a/catalog/development/patching/slfc/index.yaml +++ b/catalog/development/utilities/slfc/index.yaml @@ -3,12 +3,11 @@ type: program name: SLFC summary: Консольная программа для сравнения образов FullFlash и создания VKP-патчей. description: |- - Консольная программа для сравнения двух файлов fullflash и создания патча в - формате VKP. + Для Windows, с консольным интерфейсом. Сравнивает 2 файла (fullflash), + результат сравнения можно сохранять в виде vkp-файла. - Совпадающие байты можно учитывать по правилу: если их не больше трёх, они - включаются в патч; более длинная совпадающая последовательность считается - окончанием блока изменений. + Совпадающие байты можно обойти так: если их `<=3`, то включать в патч, если + больше, тогда уже считать, что блок изменений закончился. homepage: https://web.archive.org/web/20130813164842/http://chaos.allsiemens.com/software.html author: Chaos screenshots: [] diff --git a/catalog/drivers/pl-2303/index.yaml b/catalog/drivers/pl-2303/index.yaml index d03cd64..88adeaf 100644 --- a/catalog/drivers/pl-2303/index.yaml +++ b/catalog/drivers/pl-2303/index.yaml @@ -3,7 +3,8 @@ type: program name: PL-2303 Driver (Patched) summary: Модифицированный драйвер дата-кабелей PL-2303 с поддержкой скорости до 1625000 бит/с. description: >- - Модифицированный Chaos драйвер для дата-кабелей на чипсете Prolific PL-2303. В отличие от штатного драйвера он позволяет флешерам обмениваться данными с телефоном на скорости до 1625000 бит/с. + Пропатченный драйвер для дата-кабелей на чипсете Prolific PL-2303, + позволяющий работать с флешером на скорости 1625000 бит/с. homepage: https://web.archive.org/web/20130813164842/http://chaos.allsiemens.com/software.html author: Prolific Technology Inc.; модификация — Chaos screenshots: [] @@ -11,5 +12,4 @@ versions: - version: "2.0.5.26" files: - path: files/PL-2303_patched.zip - description: Драйвер PL-2303 с поддержкой скорости до 1625000 бит/с platform: win32 diff --git a/catalog/explorers/index.yaml b/catalog/explorers/index.yaml new file mode 100644 index 0000000..9fea5ad --- /dev/null +++ b/catalog/explorers/index.yaml @@ -0,0 +1,5 @@ +format: 1 +type: category +name: Эксплореры +order: -15 +description: Программы для управления содержимым телефонов с компьютера. diff --git a/catalog/explorers/simoco/files/SiMoCo-2.2.9.zip b/catalog/explorers/simoco/files/SiMoCo-2.2.9.zip new file mode 100644 index 0000000..29bfa98 --- /dev/null +++ b/catalog/explorers/simoco/files/SiMoCo-2.2.9.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:289a26e6f137447fafdaadf03ad83c25e01199254010adaa13b4dbc506335456 +size 1064761 diff --git a/catalog/explorers/simoco/img/simoco.jpg b/catalog/explorers/simoco/img/simoco.jpg new file mode 100644 index 0000000..ba689b9 Binary files /dev/null and b/catalog/explorers/simoco/img/simoco.jpg differ diff --git a/catalog/explorers/simoco/index.yaml b/catalog/explorers/simoco/index.yaml new file mode 100644 index 0000000..6d3654e --- /dev/null +++ b/catalog/explorers/simoco/index.yaml @@ -0,0 +1,58 @@ +format: 1 +type: program +name: SiMoCo +summary: Управление данными и функциями телефонов Siemens с компьютера. +description: |- + SiMoCo (Siemens Mobile Control, прежнее название — Sx45CZ) предназначена для + управления мобильными телефонами Siemens с компьютера. Поддерживаются S25, + C35(i), M35, S35(i), SL42(i), SL45(i), C45, S45(i), ME45, M50, MT50, C55, + S55, SL55, M55, A60, C60, MC60, CF62, C65, M65, CX65, S65, CX70, C75, CX75, + M75 и S75. Телефон подключается кабелем к последовательному порту или через + ИК-порт, создающий виртуальный COM-порт. + + Возможности программы: + + - Просмотр технической информации о телефоне. + - Управление вызовами, громкостью, мелодией, вибровызовом, звуком, + блокировкой клавиатуры и громкой связью. + - Отображение номера входящего вызова, приём и отклонение вызова. + - Просмотр и редактирование телефонных книг SIM и телефона, адресной книги, + печать, резервное копирование и восстановление, перенос записей мышью, + импорт и экспорт vCard. + - Создание и отправка SMS с выбором кодировки, срока действия, отчёта о + доставке и режима Flash SMS; длинные сообщения до пяти SMS. + - Групповая отправка SMS и сохранение групп получателей. + - Просмотр и редактирование SMS на SIM-карте и в памяти телефона. + - Отправка и приём EMS: составных сообщений, изображений, анимаций и звуков, + в том числе на телефонах без встроенной поддержки EMS. + - Автоматическое архивирование принятых и отправленных SMS, экспорт в CSV и + сохранение текста сообщений в файл. + - Уведомления о новых SMS отдельным окном или значком в области уведомлений. + - Доступ к FlexMemory и передача файлов между телефоном и компьютером. + - Просмотр и редактирование органайзера и календаря. + - Поддержка национальных символов в SMS, телефонных книгах, адресной книге и + органайзере с использованием UCS-2 и UTF-8. + - Просмотр доступных и предпочтительных сетей, сведений об операторах и + редактирование списка предпочтительных сетей. + - Загрузка логотипов и заставок из BMP- и GIF-файлов, а также редактор + логотипов. + - Загрузка мелодий из MIDI-файлов и редактор мелодий iMelody с сохранением в + TXT, iMelody или MIDI. + - Настройка переадресации и запретов вызовов. + - Синхронизация даты и времени телефона с компьютером. + - Отправка DTMF-сигналов и строк. + - Дистанционное управление телефоном через AT+CKPD. + - Активация сервисного меню телефона. + - Просмотр обмена между программой и телефоном и ручной ввод AT-команд в + окне терминала. +homepage: https://web.archive.org/web/20070513090023/http://www.mysiemens.cz/ms/simoco/ +forum: https://www.siemensmania.cz/forum/viewtopic.php?t=1018 +author: Ing. Pavel Cibulka +screenshots: + - img/simoco.jpg +versions: + - version: "2.2.9" + released: "2007-04-30" + files: + - path: files/SiMoCo-2.2.9.zip + platform: win32 diff --git a/catalog/files.yaml b/catalog/files.yaml index b497ad2..8085ed7 100644 --- a/catalog/files.yaml +++ b/catalog/files.yaml @@ -3,27 +3,54 @@ files: development/debugging/armdebugger/files/ArmDebugger-079.zip: size: 537898 sha256: f5f098523b4920387ac1fdceb6225bc7b2c9669fdf80199467061375cefcae43 + development/debugging/armdebugger/files/ArmDebugger-079m2.zip: + size: 539301 + sha256: 1f02c880d1631a3d56938c962019c494fb7c50effabdf85095a316a84c310b9c + development/debugging/atcgsn-debug/files/ATCGSN.Debug-1.2.0.0.zip: + size: 368471 + sha256: 745857e73e9dc6632b9586840fbe0e706230dfa9016c7cba4c7bc574de5463b8 + development/debugging/cgsn-debugger/files/CGSN-Debugger-1.3.zip: + size: 387740 + sha256: d9e849b4968d69f1352c8eb80b1593c84abf6ed8c091c188408bcc292f1eab95 + development/debugging/siemens-debugger/files/SiemensDebugger-1.7.2.16.zip: + size: 442087 + sha256: 46893fd85a864b5fd163c5a55677b544adbe1e376dd5c57058e51f8608958e8d + development/firmware/smelter/files/ocx-control-1.1.zip: + size: 1070964 + sha256: 926cc3c943ec030395840c69642a6c280226d011e8fbc8802cd30698e9f057b0 + development/firmware/smelter/files/smelter-9.65.zip: + size: 508512 + sha256: 91dc68718aead4dd21b7c6e14d9960d45c892e079d0fb543deb99761f5e2959a + development/firmware/smelter/files/smelter-language-files.zip: + size: 55580 + sha256: 3f8d51d6670baa57668faf770d23ffd280c7b99b6e609790ad44fb7d8bfaece1 development/firmware/wsff/files/WSFF4.zip: size: 161402 sha256: 0bd7fc9324dc8c2c37dde7136761a4be75818fca5a4db53738868a1bae732a17 - development/patching/ffpatch/files/ffpatch.zip: + development/modding/layoutme/files/layoutme-2.59.zip: + size: 41012 + sha256: 4c4bd6dfe0f4afdb0f54a806c7027502834120e9d7067ac9279bfed5ae4cb82a + development/utilities/ffpatch/files/ffpatch.zip: size: 86130 sha256: 6f78952f0711c2f5f5c5c3d41ec3710704c86ba059cf2349cbcc15e1ac7997ff - development/patching/filescomparer/files/fc_v1.2.zip: + development/utilities/filescomparer/files/fc_v1.2.zip: size: 7634 sha256: 2410c09137f78dbd6fb661d78bfe1c666ce67aaea1b87078f2327a0ca686e1bd - development/patching/hex2vkp/files/hex2vkp.zip: + development/utilities/hex2vkp/files/hex2vkp.zip: size: 50300 sha256: 10149c6770337551f18f5ff948acf9e3fbd025fca3e97a1f0f1cab9702301786 - development/patching/slfc/files/slfc-chaos.zip: + development/utilities/slfc/files/slfc-chaos.zip: size: 29659 sha256: 079b74cdb678a8b3da9be62416a8d49df912790c54f6eb4979e0bae53252fea7 - development/patching/slfc/files/slfc-vi-soft.zip: + development/utilities/slfc/files/slfc-vi-soft.zip: size: 29837 sha256: 418b3e9e75cabf8d8c70fc02e472231468433b130144d61ad97e036bfcbeb4b6 drivers/pl-2303/files/PL-2303_patched.zip: size: 245989 sha256: 95ed927523632540cf2368827c40658c6e6a713d247eb695b0303980fedabf69 + explorers/simoco/files/SiMoCo-2.2.9.zip: + size: 1064761 + sha256: 289a26e6f137447fafdaadf03ad83c25e01199254010adaa13b4dbc506335456 flashers/v-klay/files/v_klay_setup_v2152.zip: size: 2329199 sha256: ff564a3eeecee306b1ccc4cb0e6e9385f9dd9a6cc9d48bfbba36faf4d35182a3 @@ -54,9 +81,18 @@ files: service/joker/files/JokerV0295.zip: size: 205801 sha256: 338408da0cb9d48b4243a58a8bca0b4a4acf97e9753b06a90291b7e5832fa5f5 + service/joker/files/JokerV0343.zip: + size: 214581 + sha256: 13bdf3358c965a173dc3dcb51fa08d8dc453d73a34665821ff3090c1ccb17c1e + service/siemens-eeprom-tool/files/SiemensEEPROMtool315.zip: + size: 135787 + sha256: 574799e79a0653eaa28a539371fff4592833eba2f8728967b0c84daf7cfd6dd8 service/siemens-eeprom-tool/files/SiemensEEPROMtool315plus.zip: size: 76842 sha256: d782a805d2d03c991d48ab909de669d45e331f12e806153f21708191bb1e566e + service/swrite-map-r65/files/SWriteMapR65-1.04.zip: + size: 1342392 + sha256: 7959f1b1a0d2ddd76cc7b15793978eacd716e8bc085ef9425fc9ada2ff0fef1a service/winswup/files/winswup-0.91-pre1.zip: size: 392129 sha256: 49cae8b5b1c27ffa90106ae3480d3e3af7e7593fa65a5e02cb64cc11375e64a9 @@ -240,6 +276,12 @@ files: service/x65-papua-utils/files/x65PapuaUtilsV111c_rus.zip: size: 622911 sha256: 692002231f2af62ecf053d41c714302fd24c1895b7c839cc3ad9d3440dce47df + utilities/fardes/files/fardes-1.63-des-2.67.zip: + size: 213941 + sha256: 7517fa47a8890317550f259c46625489febfb0e5a4d59bd1bfee5974131b6151 + utilities/fardes/files/fardes-1.63-des-3.0.0.zip: + size: 214248 + sha256: d9a284e84804226237c5e582c036bcb73bd28360d1038cb5a3b8f11d27c92d4a utilities/midletsigner/files/JRE131L.zip: size: 714574 sha256: 491630231a390b9460fae0411d967484d7efa5a35ec7ec89e21f7cadf082c9c9 diff --git a/catalog/flashers/v-klay/index.yaml b/catalog/flashers/v-klay/index.yaml index 53fa12a..9f89224 100644 --- a/catalog/flashers/v-klay/index.yaml +++ b/catalog/flashers/v-klay/index.yaml @@ -3,23 +3,31 @@ type: program name: V_KLay summary: Флешер и VKP-патчер для телефонов Siemens с редактором раскладки клавиатуры. description: |- - Патчер, флешер и редактор раскладки клавиатуры для мобильных телефонов - Siemens. + Программа для применения патчей, чтения/записи Флеш и изменения раскладки + клавиатуры мобильных телефонов Siemens. Возможности: - - чтение и запись flash-памяти телефона; - - установка и отмена патчей в формате VKP; - - изменение раскладки клавиатуры; - - подключение через Password Boot, Chaos BootPatch, Bootcore bug, Patched - bootcore и Test point; - - работа с телефоном без выключения в режиме online, если модель и прошивка - поддерживают такой способ; - - многоязычный интерфейс, включая русский и украинский языки. - Версия 3.3 поддерживает Siemens 1168, 2118, 2128, 3118, 3618, 6618, 6688, - A35, A36, A40, A50, A52, A55, A60, A65, C30, C35, C45, C55, C60, C65, - CF62, CX65, M35, M50, M55, M65, MC60, ME45, MT50, S35, S40, S45, S55, - S65, SL42, SL45, SL55, SL65 и SX1. + - Применение и отмена патчей VKP с проверкой старых данных; + - Создание, открытие, редактирование и сохранение патчей VKP; + - Поиск и замена в тексте патча; + - Чтение и запись памяти телефона; + - Сохранение прочитанных данных в файл и загрузка данных из файла; + - Работа со всем фуллфлешем, отдельными областями памяти и EEPROM; + - Применение патчей непосредственно к телефону или к файлу Флеш; + - Чтение, редактирование и запись раскладки клавиатуры; + - Загрузка и сохранение раскладок в файлах VKL; + - Работа с загрузчиками VKD; + - Автоматическое распознавание патчей, раскладок и файлов Флеш, переданных в + командной строке; + - Управление применением и отменой патчей из командной строки; + - Подключение через Password boot, Chaos BootPatch, Bootcore bug, Patched + bootcore и Test point; + - Работа с телефоном без выключения в режиме online; + - Мультиязычный интерфейс. + + Поддержка конкретного телефона определяется наличием подходящего загрузчика + VKD. homepage: https://web.archive.org/web/20130813164842/http://vi-soft.com.ua/ author: ValeraVi (Валерий Вишняк) screenshots: [] @@ -28,29 +36,25 @@ versions: status: current files: - path: files/v_klay_setup.zip - description: Установочный пакет V_KLay 3.3 platform: win32 - version: "2.7.2" status: archived files: - path: files/v_klay_setup_v272.zip - description: Установочный пакет V_KLay 2.7.2 platform: win32 - version: "2.5" status: archived files: - path: files/v_klay_setup_v25.zip - description: Установочный пакет V_KLay 2.5 platform: win32 - version: "2.1.12" status: archived files: - path: files/v_klay_update_v2112.zip - description: Обновление до V_KLay 2.1.12 platform: win32 - version: "2.1.5.2" status: archived files: - path: files/v_klay_setup_v2152.zip - description: Англоязычный установочный пакет V_KLay 2.1.5.2 + description: Англоязычная версия platform: win32 diff --git a/catalog/flashers/x65flasher/index.yaml b/catalog/flashers/x65flasher/index.yaml index 932ddd6..24fa4b7 100644 --- a/catalog/flashers/x65flasher/index.yaml +++ b/catalog/flashers/x65flasher/index.yaml @@ -3,15 +3,14 @@ type: program name: x65flasher summary: Программа для чтения и записи flash-памяти телефонов Siemens 65–75-й серии. description: |- - Флешер для телефонов Siemens 65–75-й серии и мидлеты для поиска boot-ключей. + Флешер для телефонов 65-75-й серии + мидлет для поиска boot-ключей. - Возможности: - - чтение и запись flash-памяти телефона; - - резервное копирование и восстановление как всего fullflash, так и отдельных - частей: файловой системы, прошивки и EEPROM; - - просмотр карты flash-памяти; - - работа на скорости от 57600 до 1600000 бит/с; - - генерация загрузчиков для V_Klay. + - Чтение и запись flash-памяти телефона + - Бэкап и восстановление как всего fullflash, так и отдельных частей + (файловой системы, прошивки, EEPROM) + - Просмотр карты flash-памяти + - Работа на скорости от 57600 до 1600000 бит/с + - Генерация лоадеров для V_Klay homepage: https://web.archive.org/web/20130813164842/http://chaos.allsiemens.com/software.html author: Chaos screenshots: [] @@ -20,7 +19,7 @@ versions: released: "2006-12-06" files: - path: files/x65flasher-2103.zip - description: Флешер, документация и вспомогательные мидлеты + description: В комплекте документация и вспомогательные мидлеты platform: win32 additional_files: - path: files/px75v1.zip diff --git a/catalog/service/joker/files/JokerV0343.zip b/catalog/service/joker/files/JokerV0343.zip new file mode 100644 index 0000000..9996367 --- /dev/null +++ b/catalog/service/joker/files/JokerV0343.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13bdf3358c965a173dc3dcb51fa08d8dc453d73a34665821ff3090c1ccb17c1e +size 214581 diff --git a/catalog/service/joker/index.yaml b/catalog/service/joker/index.yaml index 3008613..51aaea3 100644 --- a/catalog/service/joker/index.yaml +++ b/catalog/service/joker/index.yaml @@ -3,33 +3,30 @@ type: program name: Joker summary: Сервисная программа для диагностики и восстановления телефонов Siemens на платформе EGOLD. description: |- - Сервисная программа для восстановления программных неисправностей телефонов - Siemens на платформе EGOLD с помощью обычного кабеля с минимальными - доработками. Поддерживаются A50–A75, AX72/AX75, C55/C56/C60, CF62/CF110, - M55, MC60, S55/S56, SL55, SX1 и совместимые модели. + Это программа для работы с моделями на EGOLD-платформе: A50, A51, A52, A55, + A56, A57, A60, A62, A65, A70, A75, AX72, AX75, C55, C56, C60, CF62, CF110, + M55, MC60, S55, S56, SL55, SX1 и аналогичными. - Возможности: - - чтение информации о телефоне и работа в режимах BFB и Service mode; - - чтение и запись FullFlash и отдельных flash-сегментов; - - резервное копирование и восстановление EEPROM и секретных блоков; - - вычисление и сохранение SKEY, BKEY, ESN, HASH и мастер-кодов; - - пересчёт ключей после записи FullFlash от другого аппарата; - - подготовка BCORE, устранение Freeze и дефрагментация EEPROM; - - автоматическое определение flash-памяти и контроль CRC при операциях записи. + Данная программа создаётся для восстановления всех софт-неисправностей + телефонов Siemens на EGOLD-платформе с помощью простого кабеля с минимальными + доработками в комплекте с Siemens EEPROM Tool. - Перед записью автор рекомендует обязательно сохранить ESN, HASH и полный - FullFlash рабочего телефона. Программа создавалась как экспериментальный - ремонтный инструмент; часть операций требует TestPoint. -homepage: https://web.archive.org/web/20130825050857/http://papuas.allsiemens.com/Joker.htm + Все методы и т. д. только в режиме теста. Если Вы испортите свой телефон — + это Ваша проблемка! +homepage: https://web.archive.org/web/20071011012321/http://papuas.allsiemens.com/Joker.htm author: Papuas screenshots: [] versions: + - version: "0.3.4.3" + status: current + files: + - path: files/JokerV0343.zip + platform: win32 - version: "0.2.9.5" status: archived released: "2005-11-25" files: - path: files/JokerV0295.zip - description: Исполняемая программа Joker 0.2.9.5 platform: win32 additional_files: - path: files/JokerSorceV0341.zip diff --git a/catalog/service/siemens-eeprom-tool/files/SiemensEEPROMtool315.zip b/catalog/service/siemens-eeprom-tool/files/SiemensEEPROMtool315.zip new file mode 100644 index 0000000..425cdfa --- /dev/null +++ b/catalog/service/siemens-eeprom-tool/files/SiemensEEPROMtool315.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:574799e79a0653eaa28a539371fff4592833eba2f8728967b0c84daf7cfd6dd8 +size 135787 diff --git a/catalog/service/siemens-eeprom-tool/index.yaml b/catalog/service/siemens-eeprom-tool/index.yaml index 31eeff5..dd896f1 100644 --- a/catalog/service/siemens-eeprom-tool/index.yaml +++ b/catalog/service/siemens-eeprom-tool/index.yaml @@ -6,16 +6,19 @@ description: |- Редактор файлов EEPROM телефонов Siemens. Используется совместно с x65PapuaUtils и Joker для восстановления программно неисправных аппаратов, работы с резервными копиями блоков EEPROM и исправления их содержимого. - - Номер `3.01.0005` получен из ресурса версии исполняемого файла; имя исходного - архива — `SiemensEEPROMtool315plus.rar`. homepage: https://web.archive.org/web/20130825050857/http://papuas.allsiemens.com/ author: Skylord screenshots: [] versions: - - version: "3.01.0005" - released: "2004-12-26" + - version: "3.15" + status: current + released: "2004-11-02" + files: + - path: files/SiemensEEPROMtool315.zip + platform: win32 + - version: "3.15+" + status: current + description: Модификация для EGOLD от Papuas. files: - path: files/SiemensEEPROMtool315plus.zip - description: Программа Siemens EEPROM Tool platform: win32 diff --git a/catalog/service/swrite-map-r65/files/SWriteMapR65-1.04.zip b/catalog/service/swrite-map-r65/files/SWriteMapR65-1.04.zip new file mode 100644 index 0000000..081d86f --- /dev/null +++ b/catalog/service/swrite-map-r65/files/SWriteMapR65-1.04.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7959f1b1a0d2ddd76cc7b15793978eacd716e8bc085ef9425fc9ada2ff0fef1a +size 1342392 diff --git a/catalog/service/swrite-map-r65/index.yaml b/catalog/service/swrite-map-r65/index.yaml new file mode 100644 index 0000000..4469c65 --- /dev/null +++ b/catalog/service/swrite-map-r65/index.yaml @@ -0,0 +1,18 @@ +format: 1 +type: program +name: SWriteMapR65 +summary: Сервисная программа Siemens для записи MAP-файлов в телефоны серии x75. +description: |- + Сервисная программа Siemens для записи стандартных и дельта-MAP-файлов в + EEPROM телефонов серии x75. Работает с телефоном через COM-порт в BFB Mode; + предусмотрены Factory Mode и Developer Mode. + + В архив входит среда выполнения NI LabWindows/CVI, необходимая для запуска + программы. +author: Siemens +screenshots: [] +versions: + - version: "1.04" + files: + - path: files/SWriteMapR65-1.04.zip + platform: win32 diff --git a/catalog/service/winswup/index.yaml b/catalog/service/winswup/index.yaml index 9dcd0c9..1a54fd6 100644 --- a/catalog/service/winswup/index.yaml +++ b/catalog/service/winswup/index.yaml @@ -3,10 +3,8 @@ type: program name: WinSwup summary: Официальная программа для прошивки телефонов Siemens с использованием файлов XBZ/XBI. description: |- - Сервисная программа Siemens для обновления программного обеспечения - телефонов. В каталоге представлены исполняемые комплекты и developer-пакеты - с Update DLL, загрузчиками, библиотеками, заголовочными файлами, примерами и - документацией. + Официальная программа для прошивки телефонов Siemens. Пригодится для заливки + прошивок XBI, XBZ и файловой системы XFS в телефон. author: Siemens AG screenshots: [] versions: @@ -15,104 +13,101 @@ versions: released: "2006-05-08" files: - path: files/winswup-4.20.zip - description: Полный developer-пакет WinSwup 4.20 с SDK, документацией и утилитами + description: Developer-пакет с SDK, документацией и утилитами platform: win32 - version: "4.14p3" status: archived files: - path: files/winswup-4.14p3.zip - description: Developer-пакет WinSwup 4.14p3 для SL75 Escada + description: Developer-пакет для SL75 Escada platform: win32 - version: "4.07" status: archived released: "2004-09-08" files: - path: files/winswup-4.07.zip - description: Полный developer-пакет WinSwup 4.07 с SDK и документацией + description: Developer-пакет с SDK и документацией platform: win32 - version: "3.20" status: current files: - path: files/winswup-3.20.zip - description: Прошивальщик для телефонов Siemens EGold и EGoldLite с поддержкой XBI, XBZ и XFS + description: Для EGold и EGoldLite; поддерживаются XBI, XBZ и XFS platform: win32 - version: "3.19" status: archived files: - path: files/winswup-3.19.zip - description: Полный developer-пакет WinSwup 3.19 для AL21 + description: Developer-пакет для AL21 platform: win32 - version: "3.17" status: archived files: - path: files/winswup-3.17.zip - description: Полный developer-пакет WinSwup 3.17 с SDK и документацией + description: Developer-пакет с SDK и документацией platform: win32 - version: "3.05" status: archived files: - path: files/winswup-3.05.zip - description: Полный предварительный пакет WinSwup 3.05 с SDK и документацией + description: Предварительный developer-пакет с SDK и документацией platform: win32 - version: "3.002" status: archived files: - path: files/winswup-3.002.zip - description: Компактный исполняемый комплект WinSwup 3.002 platform: win32 - version: "1.44" status: archived files: - path: files/winswup-1.44.zip - description: Полный developer-пакет WinSwup 1.44 с SDK + description: Developer-пакет с SDK platform: win32 - version: "1.40" status: archived files: - path: files/winswup-1.40.zip - description: Полный developer-пакет WinSwup 1.40 с SDK и документацией + description: Developer-пакет с SDK и документацией platform: win32 - version: "1.35" status: archived files: - path: files/winswup-1.35.zip - description: Исполняемый комплект WinSwup 1.35 с загрузчиком SGOLD + description: В комплекте загрузчик SGOLD platform: win32 - version: "1.34" status: archived files: - path: files/winswup-1.34.zip - description: Исполняемый комплект WinSwup 1.34 platform: win32 - version: "1.30" status: archived files: - path: files/winswup-1.30.zip - description: Полный developer-пакет WinSwup 1.30 с SDK + description: Developer-пакет с SDK platform: win32 - version: "1.28" status: archived files: - path: files/winswup-1.28.zip - description: Полный developer-пакет WinSwup 1.28 с SDK + description: Developer-пакет с SDK platform: win32 - version: "1.27" status: archived files: - path: files/winswup-1.27.zip - description: Полный developer-пакет WinSwup 1.27 с SDK + description: Developer-пакет с SDK platform: win32 - version: "1.23" status: archived files: - path: files/winswup-1.23.zip - description: Исполняемый комплект WinSwup 1.23 platform: win32 - version: "1.04" status: archived files: - path: files/winswup-1.04.zip - description: Комплект WinSwup 1.04 с пакетами WC3I 2001 и 2008 + description: В комплекте пакеты WC3I 2001 и 2008 platform: win32 - version: "0.98" status: archived @@ -128,16 +123,15 @@ versions: status: archived files: - path: files/winswup-0.97.zip - description: Комплект WinSwup 0.97 «Alle Produkte» с исходным ZIP-пакетом + description: Сборка «Alle Produkte» с исходным ZIP-пакетом platform: win32 - version: "0.95" status: archived files: - path: files/winswup-0.95.zip - description: Обычная сборка WinSwup 0.95 platform: win32 - path: files/winswup-0.95-amd32.zip - description: Сборка WinSwup 0.95 с комплектом DLL AMD32 + description: В комплекте DLL AMD32 platform: win32 - version: "0.91" status: archived diff --git a/catalog/service/x65-papua-utils/index.yaml b/catalog/service/x65-papua-utils/index.yaml index 4de0688..9acc2e5 100644 --- a/catalog/service/x65-papua-utils/index.yaml +++ b/catalog/service/x65-papua-utils/index.yaml @@ -3,26 +3,21 @@ type: program name: x65PapuaUtils summary: Сервисная программа для обслуживания телефонов Siemens на платформе SGOLD. description: |- - Сервисная программа для телефонов Siemens на платформе SGOLD: - моделей семейств R65, X65, X75 и X85, включая S65, S68, S75, SL65, SL75, - M65, M75, ME75, CX65, CX70, CX75, C65, C72, C75 и их варианты. + Это программа для работы с моделями на SGOLD-платформе: S7F, S7C, S75, S66, + S6C, S6V, S65, S68, SK6C, SK6R, SK65, SL7F, SL7C, SL75, SL6C, SL6V, SL65, + SP65, M75, ME75, M6C, M6V, M65, CX75, CX7D, CX7C, CX7I, CX70, CF76, CF75, + C72V, C72, C7I, C7C, C7V, C75, C66, C6C, C6V, C65, CX66, CX6C, CX6V, + CX65… - Возможности: - - получение сведений о телефоне, ESN, HASH, SKEY и BootKey; - - перевод телефона в сервисный режим и работа через загрузчики; - - чтение и запись flash-памяти, создание полного бэкапа и восстановление BCORE; - - чтение, сохранение и восстановление EEPROM, генерация и пересчёт секретных - блоков и ключей; - - создание загрузчиков для V_KLay; - - преобразование FullFlash и отдельных сегментов в XBI и UserSwup, а также - извлечение XBZ/XBZI из сервисных WinSwup; - - тестирование RAM и шин ExtRAM/ROM, работа с камерой и проверка звука; - - восстановление программно неисправных аппаратов с помощью обычного кабеля; - для первой записи BCORE в полностью неработающий телефон требуется TestPoint. + Большинство вариантов восстановления всех софт-неисправностей x65…x75 с + помощью простого кабеля с минимальными доработками данная программа в + комплекте с V_Klay и Siemens EEPROM Tool уже содержит. - Автор предупреждает, что методы и поддержка отдельных моделей носили - экспериментальный характер. Перед операциями записи следует сохранить ESN, - HASH и полный FullFlash исправного телефона. + На полностью убитых телефонах первую запись BCORE производят с использованием + ТП (Тест Поинт)! + + Все методы и т. д. в режиме теста. Если Вы испортите свой телефон — это Ваша + проблемка! homepage: https://web.archive.org/web/20130825050857/http://papuas.allsiemens.com/PapuaUtils.htm author: Papuas screenshots: [] @@ -38,210 +33,181 @@ versions: description: Английская версия. files: - path: files/x65PapuaUtilsV111b.zip - description: Программа x65PapuaUtils 1.1.1b platform: win32 - version: "0.7.9d" status: archived released: "2006-04-08" files: - path: files/x65PapuaUtilsV079d.zip - description: Программа x65PapuaUtils 0.7.9d platform: win32 - version: "0.7.8" status: archived released: "2006-03-16" files: - path: files/x65PapuaUtilsV078.zip - description: Программа x65PapuaUtils 0.7.8 platform: win32 - version: "0.7.7" status: archived released: "2006-02-23" files: - path: files/x65PapuaUtilsV077.zip - description: Программа x65PapuaUtils 0.7.7 platform: win32 - version: "0.7.6b" status: archived released: "2006-02-09" files: - path: files/x65PapuaUtilsV076b.zip - description: Программа x65PapuaUtils 0.7.6b platform: win32 - version: "0.7.5c" status: archived released: "2006-01-16" files: - path: files/x65PapuaUtilsV075.zip - description: Программа x65PapuaUtils 0.7.5c platform: win32 - version: "0.7.4" status: archived released: "2005-12-31" files: - path: files/x65PapuaUtilsV074.zip - description: Программа x65PapuaUtils 0.7.4 platform: win32 - version: "0.7.0" status: archived released: "2005-12-17" files: - path: files/x65PapuaUtilsV070.zip - description: Программа x65PapuaUtils 0.7.0 platform: win32 - version: "0.6.9" status: archived released: "2005-11-26" files: - path: files/x65PapuaUtilsV069.zip - description: Программа x65PapuaUtils 0.6.9 platform: win32 - version: "0.6.8" status: archived released: "2005-11-18" files: - path: files/x65PapuaUtilsV068.zip - description: Программа x65PapuaUtils 0.6.8 platform: win32 - version: "0.6.7c" status: archived released: "2005-11-13" files: - path: files/x65PapuaUtilsV067c.zip - description: Программа x65PapuaUtils 0.6.7c platform: win32 - version: "0.6.6b" status: archived released: "2005-10-14" files: - path: files/x65PapuaUtilsV066.zip - description: Программа x65PapuaUtils 0.6.6b platform: win32 - version: "0.6.5" status: archived released: "2005-10-11" files: - path: files/x65PapuaUtilsV065.zip - description: Программа x65PapuaUtils 0.6.5 platform: win32 - version: "0.6.4" status: archived released: "2005-10-04" files: - path: files/x65PapuaUtilsV064.zip - description: Программа x65PapuaUtils 0.6.4 platform: win32 - version: "0.6.2" status: archived released: "2005-10-02" files: - path: files/x65PapuaUtilsV062.zip - description: Программа x65PapuaUtils 0.6.2 platform: win32 - version: "0.6.0" status: archived released: "2005-09-26" files: - path: files/x65PapuaUtilsV060.zip - description: Программа x65PapuaUtils 0.6.0 platform: win32 - version: "0.5.6" status: archived released: "2005-09-22" files: - path: files/x65PapuaUtilsV056.zip - description: Программа x65PapuaUtils 0.5.6 platform: win32 - version: "0.5.5" status: archived released: "2005-09-20" files: - path: files/x65PapuaUtilsV055.zip - description: Программа x65PapuaUtils 0.5.5 platform: win32 - version: "0.5.4" status: archived released: "2005-09-19" files: - path: files/x65PapuaUtilsV054.zip - description: Программа x65PapuaUtils 0.5.4 platform: win32 - version: "0.5.1" status: archived released: "2005-08-26" files: - path: files/x65PapuaUtilsV051.zip - description: Программа x65PapuaUtils 0.5.1 platform: win32 - version: "0.5.0" status: archived released: "2005-08-16" files: - path: files/x65PapuaUtilsV050.zip - description: Программа x65PapuaUtils 0.5.0 platform: win32 - version: "0.4.8a" status: archived released: "2005-07-19" files: - path: files/x65PapuaUtilsV048.zip - description: Программа x65PapuaUtils 0.4.8a platform: win32 - version: "0.4.7r" status: archived released: "2005-07-11" files: - path: files/x65PapuaUtilsV047.zip - description: Программа x65PapuaUtils 0.4.7r platform: win32 - version: "0.4.6" status: archived released: "2005-07-01" files: - path: files/x65PapuaUtilsV046.zip - description: Программа x65PapuaUtils 0.4.6 platform: win32 - version: "0.4.5b" status: archived released: "2005-06-30" files: - path: files/x65PapuaUtilsV045.zip - description: Программа x65PapuaUtils 0.4.5b platform: win32 - version: "0.4.4a" status: archived released: "2005-06-24" files: - path: files/x65PapuaUtilsV044.zip - description: Программа x65PapuaUtils 0.4.4a platform: win32 - version: "0.4.3" status: archived released: "2005-06-19" files: - path: files/x65PapuaUtilsV043.zip - description: Программа x65PapuaUtils 0.4.3 platform: win32 - version: "0.4.1g" status: archived released: "2005-06-07" files: - path: files/x65PapuaUtilsV041.zip - description: Программа x65PapuaUtils 0.4.1g platform: win32 - version: "0.3.8d" status: archived released: "2005-06-01" files: - path: files/x65PapuaUtilsV038.zip - description: Программа x65PapuaUtils 0.3.8d platform: win32 - version: "0.3.6" status: archived released: "2005-05-28" files: - path: files/x65PapuaUtilsV036.zip - description: Программа x65PapuaUtils 0.3.6 и FAQ + description: В комплекте FAQ platform: win32 additional_files: - path: files/SWP3.zip diff --git a/catalog/utilities/fardes/files/fardes-1.63-des-2.67.zip b/catalog/utilities/fardes/files/fardes-1.63-des-2.67.zip new file mode 100644 index 0000000..a12e4e1 --- /dev/null +++ b/catalog/utilities/fardes/files/fardes-1.63-des-2.67.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7517fa47a8890317550f259c46625489febfb0e5a4d59bd1bfee5974131b6151 +size 213941 diff --git a/catalog/utilities/fardes/files/fardes-1.63-des-3.0.0.zip b/catalog/utilities/fardes/files/fardes-1.63-des-3.0.0.zip new file mode 100644 index 0000000..7780788 --- /dev/null +++ b/catalog/utilities/fardes/files/fardes-1.63-des-3.0.0.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9a284e84804226237c5e582c036bcb73bd28360d1038cb5a3b8f11d27c92d4a +size 214248 diff --git a/catalog/utilities/fardes/index.yaml b/catalog/utilities/fardes/index.yaml new file mode 100644 index 0000000..ff6d502 --- /dev/null +++ b/catalog/utilities/fardes/index.yaml @@ -0,0 +1,45 @@ +format: 1 +type: program +name: FarDES +summary: Плагин Far Manager для работы с флекс-памятью телефонов Siemens через DES. +description: |- + Компания Siemens написала замечательную программу Data Exchange Software + (DES), которая позволяет видеть подключенный к компьютеру телефон как + логический диск. Этот диск виден в Windows Explorer. А что же делать тем, кто + так и не привык к Проводнику, кто предпочитает использовать лучший (имхо) + файловый менеджер Far Manager? Ответ прост — использовать данный плагин. + + Плагин использует движок DES. Таким образом, если у вас не работает DES, то и + FarDES работать не будет. В Far содержимое флекс-памяти телефона показывается + как отдельная файловая панель. + + Возможности: + + - Стандартные операции с файлами и каталогами; + - Создание, просмотр и редактирование файлов в телефоне; + - Работа с датами и атрибутами файлов; + - Корректное удаление поддиректориев; + - Вход в JAR-файл как в архив; + - Работа с содержимым SMS-архива; + - Проверка свободного места перед копированием; + - Просмотр дополнительной информации из телефона; + - Форматирование флекс-памяти; + - Создание стандартной структуры каталогов; + - Прогресс файловых операций и возможность прерывания по Esc. + + Поддерживаются те же модели телефонов, что и DES: Siemens S45, ME45, SL45, + M50, MT50, C55, S55, M55 и SL55. Для работы необходимы Far Manager 1.70 beta + 5 или выше, DES 2.67 либо DES 3.0.0 и Windows 98 или выше. +homepage: https://web.archive.org/web/20130401035858/http://avkiev.kiev.ua/Siemens/FarDES/FarDES.htm +author: avkiev +screenshots: [] +versions: + - version: "1.63" + released: "2003-11-12" + files: + - path: files/fardes-1.63-des-2.67.zip + description: Для DES 2.67 и DES 3.0.0 из SDS 1.0.0.40 + platform: win32 + - path: files/fardes-1.63-des-3.0.0.zip + description: Для DES 3.0.0 из SDS 1.0.0.53 и выше + platform: win32 diff --git a/catalog/utilities/midletsigner/index.yaml b/catalog/utilities/midletsigner/index.yaml index 55c18d9..e186a3d 100644 --- a/catalog/utilities/midletsigner/index.yaml +++ b/catalog/utilities/midletsigner/index.yaml @@ -3,18 +3,24 @@ type: program name: MidletSigner summary: Программа для создания сертификатов и подписи Java-мидлетов на телефонах Siemens 65/75-й серии. description: |- - Программа для самостоятельного создания сертификата и подписывания - Java-мидлетов на телефонах Siemens 65-й и 75-й серий. + Итак, для чего нужна эта программа? - Подписанный мидлет может работать без постоянных запросов подтверждения при - чтении и записи файлов, выходе в интернет, отправке SMS и MMS, доступе к - COM-порту, Bluetooth, адресной книге, органайзеру и мультимедийным функциям. - Подпись также позволяет автоматически запускать мидлет по времени или - событию. + Вы наверняка заметили, что любой мидлет, обращающийся к файлам в памяти + телефона или выходящий в интернет, каждый раз выдаёт надоедливые окошки + «разрешить?..». Избавиться от них можно, снабдив мидлет цифровой подписью. + Раньше это мог сделать только разработчик, обратившись в центр сертификации + (который, понятное дело, хочет за это денежек :). Теперь же вы можете сами + подписывать java-мидлеты. - Программа работает из командной строки с JAD- и JAR-файлами. Для работы - требуется JRE версии 1.3 или новее. Для телефонов 65-й серии нужен OpenDisc - 2.0, а для телефонов 75-й серии в телефон должен быть введён SKEY. + Кроме избавления от лишних вопросов, это даёт возможность (для разработчиков) + запускать мидлет автоматически в нужное время или по событию (например, + приход СМСки). + + Что для этого нужно: + + - JRE версии не меньше 1.3 + - Для 65-й серии — OpenDisc 2.0 от SiNgle + - Для 75-й серии — в телефон должен быть введён SKEY homepage: https://web.archive.org/web/20130813164842/http://chaos.allsiemens.com/software.html author: Chaos screenshots: [] @@ -22,7 +28,7 @@ versions: - version: "5" files: - path: files/MidletSigner5.zip - description: MidletSigner 5 с русским и английским руководствами + description: В комплекте русское и английское руководства platform: java additional_files: - path: files/JRE131L.zip diff --git a/catalog/utilities/vmo2wav/index.yaml b/catalog/utilities/vmo2wav/index.yaml index 95760d4..31c9744 100644 --- a/catalog/utilities/vmo2wav/index.yaml +++ b/catalog/utilities/vmo2wav/index.yaml @@ -3,10 +3,11 @@ type: program name: vmo2wav summary: Конвертер диктофонных записей Siemens SL45 из VMO в WAV. description: |- - Консольный конвертер диктофонных записей Siemens SL45 из формата VMO в WAV. + Программа-конвертер файлов диктофонных записей (VMO) в формат WAV. Запускается + из командной строки (MS-DOS prompt, FAR, Windows Commander). - По умолчанию программа нормализует уровень сигнала. Нормализацию можно - отключить параметром `-n`. + По умолчанию программа нормализует (выравнивает) уровень сигнала. Эту функцию + можно отключить, запуская vmo2wav с параметром `-n`. homepage: https://web.archive.org/web/20130813164842/http://chaos.allsiemens.com/software.html author: Chaos screenshots: [] @@ -14,5 +15,5 @@ versions: - version: "1.0" files: - path: files/vmo2wav.zip - description: Конвертер vmo2wav и руководство пользователя + description: В комплекте руководство пользователя platform: win32 diff --git a/package.json b/package.json index 2c90d28..97d8872 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "scripts": { "fill-metadata": "tsx scripts/fillMetadata.ts", "fill-metadata:check": "tsx scripts/fillMetadata.ts --check", + "repack-archive": "tsx scripts/repackArchive.ts", "tree": "tsx scripts/printTree.ts", "typecheck": "tsc --noEmit" }, diff --git a/schema/index.schema.json b/schema/index.schema.json index bee0f94..a04e45d 100644 --- a/schema/index.schema.json +++ b/schema/index.schema.json @@ -168,6 +168,9 @@ "source": { "$ref": "#/$defs/url" }, + "forum": { + "$ref": "#/$defs/url" + }, "author": { "$ref": "#/$defs/name" }, diff --git a/scripts/repackArchive.ts b/scripts/repackArchive.ts new file mode 100644 index 0000000..fb4adfa --- /dev/null +++ b/scripts/repackArchive.ts @@ -0,0 +1,308 @@ +#!/usr/bin/env node + +import { createHash } from "node:crypto"; +import { execFile } from "node:child_process"; +import { createReadStream } from "node:fs"; +import { + constants, + copyFile, + lstat, + mkdir, + mkdtemp, + readdir, + rm, + stat, +} from "node:fs/promises"; +import { tmpdir } from "node:os"; +import path from "node:path"; +import process from "node:process"; +import { promisify } from "node:util"; + +type Options = { + source: string; + output: string; + replace: boolean; +}; + +type TreeEntry = { + type: "directory" | "file"; + mtime100ns: bigint; + size?: bigint; + sha256?: string; +}; + +const execFileAsync = promisify(execFile); +const supportedExtensions = new Set([".7z", ".exe", ".rar", ".zip"]); + +function usage(): void { + console.log(`Usage: pnpm repack-archive [options] + +Creates a Windows XP-compatible ZIP next to the source file. + + -o, --output write to a specific ZIP path + --replace delete the source after successful verification + --help show this help message`); +} + +function parseArguments(args: string[]): Options { + let output: string | undefined; + let replace = false; + const positional: string[] = []; + + for (let index = 0; index < args.length; index += 1) { + const argument = args[index]; + if (argument === "--help" || argument === "-h") { + usage(); + process.exit(0); + } else if (argument === "--replace") { + replace = true; + } else if (argument === "--output" || argument === "-o") { + output = args[index + 1]; + if (output === undefined) { + throw new Error(`${argument} requires a path`); + } + index += 1; + } else if (argument.startsWith("-")) { + throw new Error(`Unknown option: ${argument}`); + } else { + positional.push(argument); + } + } + + if (positional.length !== 1) { + throw new Error("Expected one archive or EXE path"); + } + + const source = path.resolve(positional[0]); + const extension = path.extname(source).toLowerCase(); + if (!supportedExtensions.has(extension)) { + throw new Error(`Unsupported source type: ${extension || "no extension"}`); + } + + const destination = path.resolve( + output ?? path.join(path.dirname(source), `${path.basename(source, extension)}.zip`), + ); + if (path.extname(destination).toLowerCase() !== ".zip") { + throw new Error("Output path must have the .zip extension"); + } + if (source === destination) { + throw new Error("Source and output paths are the same; use --output for ZIP input"); + } + + return { source, output: destination, replace }; +} + +async function run( + command: string, + args: string[], + cwd?: string, +): Promise<{ stdout: string; stderr: string }> { + return execFileAsync(command, args, { + cwd, + encoding: "utf8", + maxBuffer: 16 * 1024 * 1024, + }); +} + +async function sha256(filePath: string): Promise { + const hash = createHash("sha256"); + for await (const chunk of createReadStream(filePath)) { + hash.update(chunk); + } + return hash.digest("hex"); +} + +async function collectTree(root: string): Promise> { + const result = new Map(); + + async function visit(directory: string): Promise { + const entries = await readdir(directory, { withFileTypes: true }); + entries.sort((left, right) => left.name.localeCompare(right.name, "en")); + + for (const entry of entries) { + const absolutePath = path.join(directory, entry.name); + const relativePath = path.relative(root, absolutePath).split(path.sep).join("/"); + const fileStat = await lstat(absolutePath, { bigint: true }); + const mtime100ns = fileStat.mtimeNs / 100n; + + if (fileStat.isDirectory()) { + result.set(relativePath, { type: "directory", mtime100ns }); + await visit(absolutePath); + } else if (fileStat.isFile()) { + result.set(relativePath, { + type: "file", + mtime100ns, + size: fileStat.size, + sha256: await sha256(absolutePath), + }); + } else { + throw new Error(`Unsupported special file: ${relativePath}`); + } + } + } + + await visit(root); + return result; +} + +function compareTrees( + original: Map, + verified: Map, +): void { + if (original.size === 0) { + throw new Error("Source contains no files or directories"); + } + if (original.size !== verified.size) { + throw new Error("ZIP contents differ from the source"); + } + + for (const [entryPath, expected] of original) { + const actual = verified.get(entryPath); + if (actual === undefined) { + throw new Error(`Missing entry after repacking: ${entryPath}`); + } + if ( + actual.type !== expected.type || + actual.mtime100ns !== expected.mtime100ns || + actual.size !== expected.size || + actual.sha256 !== expected.sha256 + ) { + throw new Error(`Entry differs after repacking: ${entryPath}`); + } + } +} + +async function validateCompatibility(zipPath: string): Promise { + const { stdout } = await run("zipinfo", ["-v", zipPath]); + if (/zip64/i.test(stdout)) { + throw new Error("Zip64 is not compatible with Windows XP Explorer"); + } + + const versions = [...stdout.matchAll( + /minimum software version required to extract:\s*([0-9.]+)/g, + )]; + if (versions.some((match) => Number(match[1]) > 2)) { + throw new Error("ZIP requires an extractor newer than version 2.0"); + } + + const methods = [...stdout.matchAll(/compression method:\s*([^\r\n]+)/g)]; + if ( + methods.length === 0 || + methods.some((match) => !/^(deflated|none \(stored\))$/.test(match[1].trim())) + ) { + throw new Error("ZIP uses a method other than Store or Deflate"); + } + + const security = [...stdout.matchAll(/file security status:\s*([^\r\n]+)/g)]; + if ( + security.length === 0 || + security.some((match) => match[1].trim() !== "not encrypted") + ) { + throw new Error("Encrypted ZIP entries are not allowed"); + } +} + +async function ensureOutputDoesNotExist(output: string): Promise { + try { + await lstat(output); + throw new Error(`Output already exists: ${output}`); + } catch (error) { + const code = error instanceof Error && "code" in error ? error.code : undefined; + if (code !== "ENOENT") { + throw error; + } + } +} + +async function main(): Promise { + const options = parseArguments(process.argv.slice(2)); + const sourceStat = await stat(options.source); + if (!sourceStat.isFile()) { + throw new Error(`Source is not a regular file: ${options.source}`); + } + await ensureOutputDoesNotExist(options.output); + + const temporaryRoot = await mkdtemp(path.join(tmpdir(), "repack-archive-")); + const originalDirectory = path.join(temporaryRoot, "original"); + const verifiedDirectory = path.join(temporaryRoot, "verified"); + const temporaryZip = path.join(temporaryRoot, "output.zip"); + await mkdir(originalDirectory); + await mkdir(verifiedDirectory); + + try { + if (path.extname(options.source).toLowerCase() === ".exe") { + await run("cp", ["-p", "--", options.source, originalDirectory]); + } else { + await run("7z", ["t", options.source, "-bso0", "-bsp0"]); + await run("7z", [ + "x", + options.source, + "-y", + `-o${originalDirectory}`, + "-bso0", + "-bsp0", + ]); + } + + const originalTree = await collectTree(originalDirectory); + await run( + "7z", + [ + "a", + "-tzip", + "-mm=Deflate", + "-mx=9", + "-mtc=on", + "-mtm=on", + "-mta=on", + temporaryZip, + ".", + "-bso0", + "-bsp0", + ], + originalDirectory, + ); + await run("touch", ["-r", options.source, temporaryZip]); + await run("7z", ["t", temporaryZip, "-bso0", "-bsp0"]); + await validateCompatibility(temporaryZip); + + await run("7z", [ + "x", + temporaryZip, + "-y", + `-o${verifiedDirectory}`, + "-bso0", + "-bsp0", + ]); + compareTrees(originalTree, await collectTree(verifiedDirectory)); + + await mkdir(path.dirname(options.output), { recursive: true }); + try { + await copyFile(temporaryZip, options.output, constants.COPYFILE_EXCL); + await run("touch", ["-r", options.source, options.output]); + } catch (error) { + await rm(options.output, { force: true }); + throw error; + } + + if (options.replace) { + await rm(options.source); + } + + console.log(`Created ${options.output}`); + console.log("Verified contents, SHA-256, timestamps, and Windows XP compatibility."); + if (options.replace) { + console.log(`Removed ${options.source}`); + } + } finally { + await rm(temporaryRoot, { recursive: true, force: true }); + } +} + +try { + await main(); +} catch (error) { + const message = error instanceof Error ? error.message : String(error); + console.error(`Error: ${message}`); + process.exitCode = 1; +}