В качестве побочного эффекта разработки ZXTune родилась данная утилита.
Что она делает. Да просто анализирует файлы на входе и для каждого из них строит карту внутреннего содержимого.
Например, простой запуск:
даст на выходе папку с дефолтным именем XTractor со следующим содержимым:Код:xtractor ../Bugs/v14/K/KRLOVE.TRD
Как видно, для входного файла создалась одноименная папка, внутри которой по полочкам разложены все блоки данных обнаруженных форматов.Код:KRLOVE.TRD KRLOVE.TRD/+0 KRLOVE.TRD/+0/TR-Dos disks image KRLOVE.TRD/+0/TR-Dos disks image/$Track0 KRLOVE.TRD/+0/TR-Dos disks image/$Track0/+0 KRLOVE.TRD/+0/TR-Dos disks image/SYSTEM.C.C KRLOVE.TRD/+0/TR-Dos disks image/SYSTEM.C.C/+0 KRLOVE.TRD/+0/TR-Dos disks image/Cr_Love.B KRLOVE.TRD/+0/TR-Dos disks image/Cr_Love.B/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C/+499 KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C/+499/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C/+499/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C/+4663 KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C/+4663/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C/+4663/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C/+13478 KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C/+13478/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C/+13478/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C/+0/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C/+0/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#10.C/+15865 KRLOVE.TRD/+0/TR-Dos disks image/MAIN.C.C KRLOVE.TRD/+0/TR-Dos disks image/MAIN.C.C/+0 KRLOVE.TRD/+0/TR-Dos disks image/boot.B KRLOVE.TRD/+0/TR-Dos disks image/boot.B/+11008 KRLOVE.TRD/+0/TR-Dos disks image/boot.B/+11008/Powerfull Code Decreaser v6.2 KRLOVE.TRD/+0/TR-Dos disks image/boot.B/+11008/Powerfull Code Decreaser v6.2/+0 KRLOVE.TRD/+0/TR-Dos disks image/boot.B/+0 KRLOVE.TRD/+0/TR-Dos disks image/boot.B/+6803 KRLOVE.TRD/+0/TR-Dos disks image/boot.B/+256 KRLOVE.TRD/+0/TR-Dos disks image/boot.B/+256/Powerfull Code Decreaser 6.2 KRLOVE.TRD/+0/TR-Dos disks image/boot.B/+256/Powerfull Code Decreaser v6.2/+0 KRLOVE.TRD/+0/TR-Dos disks image/boot.B/+10951 KRLOVE.TRD/+0/TR-Dos disks image/boot.B/+6912 KRLOVE.TRD/+0/TR-Dos disks image/boot.B/+6912/Hrum v3.x KRLOVE.TRD/+0/TR-Dos disks image/boot.B/+6912/Hrum v3.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/boot.B/+14963 KRLOVE.TRD/+0/TR-Dos disks image/DEHRUST.C KRLOVE.TRD/+0/TR-Dos disks image/DEHRUST.C/+0 KRLOVE.TRD/+0/TR-Dos disks image/Cr_Love.W KRLOVE.TRD/+0/TR-Dos disks image/Cr_Love.W/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#14.C KRLOVE.TRD/+0/TR-Dos disks image/BANK#14.C/+13827 KRLOVE.TRD/+0/TR-Dos disks image/BANK#14.C/+13827/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#14.C/+13827/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#14.C/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#14.C/+0/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#14.C/+0/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#14.C/+0/Hrust v1.x/+51 KRLOVE.TRD/+0/TR-Dos disks image/BANK#14.C/+0/Hrust v1.x/+51/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#14.C/+0/Hrust v1.x/+51/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#14.C/+14750 KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C/+0/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C/+0/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C/+8915 KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C/+8915/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C/+8915/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C/+10582 KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C/+10582/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C/+10582/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C/+12076 KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C/+12076/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C/+12076/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#13.C/+16255 KRLOVE.TRD/+0/TR-Dos disks image/$Unallocated KRLOVE.TRD/+0/TR-Dos disks image/$Unallocated/+0 KRLOVE.TRD/+0/TR-Dos disks image/!screen! KRLOVE.TRD/+0/TR-Dos disks image/!screen!/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C/+15636 KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C/+4085 KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C/+4085/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C/+4085/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C/+0/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C/+0/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C/+11865 KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C/+11865/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C/+11865/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C/+15025 KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C/+15025/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#11.C/+15025/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#16.C KRLOVE.TRD/+0/TR-Dos disks image/BANK#16.C/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#16.C/+0/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#16.C/+0/Hrust v1.x/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#16.C/+4527 KRLOVE.TRD/+0/TR-Dos disks image/!music! KRLOVE.TRD/+0/TR-Dos disks image/!music!/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#12.C KRLOVE.TRD/+0/TR-Dos disks image/BANK#12.C/+10058 KRLOVE.TRD/+0/TR-Dos disks image/BANK#12.C/+0 KRLOVE.TRD/+0/TR-Dos disks image/BANK#12.C/+0/Hrust v1.x KRLOVE.TRD/+0/TR-Dos disks image/BANK#12.C/+0/Hrust v1.x/+0
Если на входе не исключены файлы с одинаковыми именами, то, с помощью специального ключа, имя папки может принимать значение полного пути к исходному файлу:
что даст на выходе вновьсозданную папку FullPath с содержимым:Код:xtractor --target_dir FullPath --full_source_path ../Bugs/v14/K/KRLOVE.TRD
Если же на выходе нужен просто список файлов, а не полная иерархия, надо запустить следующим образом:Код:.._Bugs_v14_K_KRLOVE.TRD/ ... дальнейшее содержимое аналогично папке KRLOVE.TRD из предыдущего примера
что даст на выходе новую папку FlatSubpath с содержимым:Код:xtractor --target_dir FlatSubpath --flat_subpath ../Bugs/v14/K/KRLOVE.TRD
Поскольку результат может содержать в себе много мусора, предусмотрена пара опций для фильтровки:Код:KRLOVE.TRD_+0_TR-Dos disks image_BANK#10.C_+0_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#10.C_+13478_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#10.C_+15865 KRLOVE.TRD_+0_TR-Dos disks image_BANK#10.C_+4663_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#10.C_+499_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#11.C_+0_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#11.C_+11865_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#11.C_+15025_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#11.C_+15636 KRLOVE.TRD_+0_TR-Dos disks image_BANK#11.C_+4085_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#12.C_+0_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#12.C_+10058 KRLOVE.TRD_+0_TR-Dos disks image_BANK#13.C_+0_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#13.C_+10582_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#13.C_+12076_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#13.C_+16255 KRLOVE.TRD_+0_TR-Dos disks image_BANK#13.C_+8915_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#14.C_+0_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#14.C_+0_Hrust v1.x_+51_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#14.C_+13827_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#14.C_+14750 KRLOVE.TRD_+0_TR-Dos disks image_BANK#16.C_+0_Hrust v1.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_BANK#16.C_+4527 KRLOVE.TRD_+0_TR-Dos disks image_boot.B_+0 KRLOVE.TRD_+0_TR-Dos disks image_boot.B_+10951 KRLOVE.TRD_+0_TR-Dos disks image_boot.B_+11008_Powerfull Code Decreaser v6.2_+0 KRLOVE.TRD_+0_TR-Dos disks image_boot.B_+14963 KRLOVE.TRD_+0_TR-Dos disks image_boot.B_+256_Powerfull Code Decreaser v6.2_+0 KRLOVE.TRD_+0_TR-Dos disks image_boot.B_+6803 KRLOVE.TRD_+0_TR-Dos disks image_boot.B_+6912_Hrum v3.x_+0 KRLOVE.TRD_+0_TR-Dos disks image_Cr_Love.B_+0 KRLOVE.TRD_+0_TR-Dos disks image_Cr_Love.W_+0 KRLOVE.TRD_+0_TR-Dos disks image_DEHRUST.C_+0 KRLOVE.TRD_+0_TR-Dos disks image_MAIN.C.C_+0 KRLOVE.TRD_+0_TR-Dos disks image_!music!_+0 KRLOVE.TRD_+0_TR-Dos disks image_!screen!_+0 KRLOVE.TRD_+0_TR-Dos disks image_SYSTEM.C.C_+0 KRLOVE.TRD_+0_TR-Dos disks image_$Track0_+0 KRLOVE.TRD_+0_TR-Dos disks image_$Unallocated_+0
--ignore_empty - блоки данных, состоящие из одинаковых байт, сохраняться не будут
--minimal_size N - не сохранять блоки данных с размером, меньшим N (в байтах)
Немного общих слов о возможностях и ограничениях:
- справку по опциям можно получить, запустив "xtractor --help"
- возможен многопоточный анализ
- возможен рекурсивный поиск файлов в папках
- программа еще не до конца оттестирована, так что возможны разного рода глюки
- прогресс не реализован
- анализ терминальных типов блоков (например чиптюнов) пока вырезан
Скачать версию для win64
Скачать версию для win32




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 

)