Вы находитесь на странице: 1из 80

РС-3000 UDMA 

 ACELab Data Extractor


01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101

Просмотрщик структур
011
11
1

Содержание
1. Просмотрщик структур ..................................................................................................................................................3
1.1. Общие сведения ......................................................................................................................................................3
1.2. Просмотр структур в программе Data Extractor ...................................................................................................3
1.2.1. Использование вкладки “Структура” ..............................................................................................................3
1.2.1.1. Просмотр структур для объектов проводника Data Extractor ................................................................3
1.2.1.2. Просмотр структур в режиме карты объекта ..........................................................................................4
1.2.1.3. Просмотр структур в режиме чернового восстановления......................................................................4
1.2.1.4. Просмотр структур в режиме поиска GREP ............................................................................................5
1.2.1.5. Просмотр структур в режиме создания RAID .........................................................................................5
1.2.1.6. Просмотр структур в режиме редактирования диска, созданного на основе карты ............................6
1.2.2. Использование комбинированного режима просмотра структур и справочника шаблонов структур .....6
1.3. Режим просмотра структур ....................................................................................................................................7
1.3.1. Интерфейс программы в режиме просмотра .................................................................................................7
1.3.1.1. Основные элементы окна с разобранной структурой.............................................................................8
1.3.1.2. Основные элементы окна HEX-редактора ..............................................................................................9
1.3.2. Навигация в HEX-редакторе ..........................................................................................................................11
1.3.2.1. Базовые возможности..............................................................................................................................11
1.3.2.2. Закладки ...................................................................................................................................................12
1.3.3. Взаимодействие окон просмотра структур и HEX-редактора ....................................................................15
1.3.4. Редактирование данных .................................................................................................................................16
1.3.5. Подсчет контрольных сумм ...........................................................................................................................16
1.3.6. Дополнительные возможности, доступные в режиме просмотра ..............................................................18
1.3.6.1. Построение карты ....................................................................................................................................18
1.3.6.2. Выполнение переходов ...........................................................................................................................18
1.3.6.3. Исполнение произвольных скриптов .....................................................................................................19
1.4. Комбинированный режим просмотра структур и справочника шаблонов структур ......................................19
1.4.1. Внешний вид ...................................................................................................................................................19
1.4.2. Просмотр структур .........................................................................................................................................21
1.4.3. Использование справочника при просмотре ................................................................................................21
1.4.4. Редактирование справочника ........................................................................................................................22
1.5. Навигация по структурам.....................................................................................................................................22
1.6. Справочник структур ...........................................................................................................................................25
1.6.1. Общие сведения ..............................................................................................................................................25
1.6.2. Работа со справочником ................................................................................................................................29
1.6.2.1. Основные действия ..................................................................................................................................29
1.6.2.2. Каталог .....................................................................................................................................................30
1.6.2.3. Структура .................................................................................................................................................30
1.6.2.4. Поле ..........................................................................................................................................................32
1.6.2.4.1. Создание поля простого типа ..........................................................................................................32
1.6.2.4.2. Создание поля произвольного типа ................................................................................................33
1.6.2.5. Скрипт ......................................................................................................................................................34
1.6.2.6. Параметр ..................................................................................................................................................35
1.6.2.7. Группа параметров ..................................................................................................................................36
1.6.2.8. Группировка полей и структур ...............................................................................................................37
1.6.3. Скриптовая модель .........................................................................................................................................37
1.6.3.1. Общие сведения .......................................................................................................................................37
1.6.3.2. Типы скриптов .........................................................................................................................................38
1.6.3.3. Объекты и методы, доступные из скрипта ............................................................................................39
1.6.3.3.1. Перечисления ....................................................................................................................................39
1.6.3.3.2. Класс TFieldNode ..............................................................................................................................40

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 1
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1.6.3.3.3. Класс TContext .................................................................................................................................. 46
1011010101100110011010101011010101111010111
1.6.3.3.4. Класс DataSource .............................................................................................................................. 47
11010101101101010100111110
1101110110110011
0111011110
111101
1.6.3.3.5. Класс TMap ....................................................................................................................................... 47
011 1.6.3.3.6. Класс TParamGroup .......................................................................................................................... 48
11
1 1.6.3.4. Создание и использование скриптов ..................................................................................................... 50
1.6.3.4.1. Скрипт OnParse ................................................................................................................................. 51
1.6.3.4.2. Скрипт OnAfterCreate ....................................................................................................................... 52
1.6.3.4.3. Скрипты OnGetValue и OnSetValue ................................................................................................ 52
1.6.3.4.4. Скрипт OnGetCaption ....................................................................................................................... 54
1.6.3.4.5. Скрипт Jump ...................................................................................................................................... 55
1.6.3.4.6. Скрипт FillMap.................................................................................................................................. 57
1.6.3.4.7. Скрипт Actions .................................................................................................................................. 59
1.7. Использование просмотрщика структур для определения параметров RAID ..................................... 60
1.7.1. Способ 1. Определение конфигурации RAID по записям MFT ................................................................. 60
1.7.2. Способ 2. Определение конфигурации RAID с помощью файлов ............................................................. 63
1.7.2.1. Немного теории ....................................................................................................................................... 64
1.7.2.2. Уточнение конфигурации с помощью файла ........................................................................................ 65
1.7.2.3. Как начинать с пустой таблицей и файлом, найденным на одном из участников ............. 68
1.7.2.4. Еще один способ начинать с пустой таблицы ..................................................................................... 71
2. Параллельный просмотр источников данных ............................................................................................................ 72
2.1. Назначение ............................................................................................................................................................ 72
2.2. Варианты вызова .................................................................................................................................................. 72
2.2.1. Data Extractor .................................................................................................................................................. 72
2.2.2. Data Extractor RAID Edition ........................................................................................................................... 73
2.2.3. PC-3000 Flash .................................................................................................................................................. 74
2.3. Главное окно ......................................................................................................................................................... 75
2.4. HEX-редактор ....................................................................................................................................................... 79
2.5. Определение блоков избыточности .................................................................................................................... 80
2.6. PC-3000 Flash: отображение служебной информации ...................................................................................... 80

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
2 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011

1. Просмотрщик структур
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110

1.1. Общие сведения


111101
011
11
1
Просмотрщик структур — дополнительный инструмент Data Extractor, предоставляющий возможность
просматривать и редактировать дисковые структуры, структуры файловых систем и структуры данных внутри файлов.
В рамках данного раздела документации под структурой будем подразумевать данные, организованные с
помощью заранее известных правил. А сами правила отдельно от данных будем называть шаблоном.
В простых случаях шаблоном может быть просто список идущих друг за другом именованных полей
различных типов. Такие структуры часто называют статическими. Например, Boot NTFS (загрузочный сектор
файловой системы NTFS) может быть описан таким шаблоном.

Рис. 1.1. Шаблон, описывающий Boot NTFS


В более сложных случаях шаблон может содержать дополнительно код разбора. Это необходимо для
динамических структур, где состав и количество полей определяются конкретными данными. Например,
каталог FAT содержит описатели находящихся в нем файлов и подкаталогов. Их количество, безусловно,
нельзя узнать заранее.
Шаблон структуры может содержать скрипты для стандартных (переход к связанной структуре; построение
карты объекта) и произвольных (определяемых назначением конкретной структуры) действий.
Просмотрщик структур позволяет работать в двух режимах — просмотра структур (см. 1.3) и
редактирования шаблонов (см. 1.4.4, 1.6).

1.2. Просмотр структур в программе Data Extractor


1.2.1. Использование вкладки “Структура”
Существует несколько режимов программы Data Extractor, в которых возможно использование режима
просмотра структур, описанного в разделе 1.3:
♦ проводник Data Extractor;
♦ карта объекта;
♦ режим чернового восстановления;
♦ режим поиска GREP;
♦ режим создания RAID;
♦ режим редактирования диска, созданного на основе карты.
Все эти режимы используют вкладку «Структура», расположенную на нижней панели Data Extractor.

1.2.1.1. Просмотр структур для объектов проводника Data Extractor


В ходе навигации в проводнике Data Extractor во вкладке «Структура» отображается результат разбора
структуры, соответствующей текущему узлу проводника (диску, разделу, каталогу, файлу). Если

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 3
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
автоопределение шаблона на основе данных разрешено, разбор структуры осуществляется с использованием
1011010101100110011010101011010101111010111
наиболее подходящего шаблона.
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.2. Просмотр структур из проводника Data Extractor

1.2.1.2. Просмотр структур в режиме карты объекта


При перемещении по цепочкам и секторам карты во вкладке «Структура» отображается результат разбора
данных по текущему смещению. Если автоопределение шаблона на основе данных разрешено, этот механизм
будет использован для выбора шаблона структуры.

Рис. 1.3. Просмотр структур в режиме карты объекта

1.2.1.3. Просмотр структур в режиме чернового восстановления


Просмотр данных в виде структуры доступен в режиме “Черновое восстановление” для результатов поиска.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
4 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.4. Просмотр структур в режиме чернового восстановления

1.2.1.4. Просмотр структур в режиме поиска GREP


Еще одним режимом, в котором можно воспользоваться просмотром структур, является «Поиск GREP».

Рис. 1.5. Просмотр структур в режиме поиска GREP

1.2.1.5. Просмотр структур в режиме создания RAID


Просмотр данных в виде структур доступен также в режиме создания RAID и может быть применен в
данном режиме, помимо прочего, для определения параметров RAID (см. раздел 1.7).

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 5
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.6. Просмотр структур в режиме создания RAID

1.2.1.6. Просмотр структур в режиме редактирования диска, созданного на


основе карты
Просмотр данных в виде структур доступен также в режиме редактирования диска, созданного на основе карты.

Рис. 1.7. Просмотр структур в режиме редактирования диска, созданного на основе карты

1.2.2. Использование комбинированного режима просмотра структур и


справочника шаблонов структур
Комбинированный режим просмотра структур и справочника шаблонов структур, описанный в разделе 1.4, доступен:
1) из проводника Data Extractor;

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
6 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
2) из режима карты объекта. 1011010101100110011010101011010101111010111
11010101101101010100111110
Для того, чтобы перейти в комбинированный режим из проводника Data Extractor, необходимо выбрать 1101110110110011
0111011110
подходящий объект и, нажав ПКМ, в контекстном меню выбрать пункт «Структура». 111101
011
11
1

Рис. 1.8. Переход в комбинированный режим из проводника Data Extractor

Для перехода в комбинированный режим из режима карты нужно нажать на кнопку и в открывшемся
выпадающем меню выбрать пункт «Структура».

Рис. 1.9. Переход в комбинированный режим из карты объекта

1.3. Режим просмотра структур


1.3.1. Интерфейс программы в режиме просмотра
Окно режима просмотра структур состоит из двух основных частей: слева – окна разобранной структуры, справа
– окна просмотра данных в шестнадцатеричном представлении (HEX-редактора).

Рис. 1.10. Режим просмотра структур

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 7
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101

1.3.1.1. Основные элементы окна с разобранной структурой


1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
Разобранная структура представляется в виде древовидного списка, строки которого соответствуют полям
0111011110
111101
структуры. Список имеет колонки, в ячейки которых выводится информация: имя поля, смещение его данных
011

относительно начала структуры, размер, текстовое представление (или описание) содержимого поля и кнопки
11
1
исполнения скриптов.
Над древовидным списком находится панель элементов управления окном структуры:

Назначение

кнопка отключения автоопределения шаблона структуры по данным

, кнопки перехода назад и вперед в списке просмотренных структур

опциональная кнопка перехода на следующую структуру выбранного типа

кнопка прерывания процесса (в частности, разбора структуры)

кнопка обновления структуры

смещение, по которому расположена структура

поле со списком выбора порядка байтов (LE/BE)

По умолчанию просмотрщик структур пытается найти шаблон структуры, наиболее подходящий для
представления текущих данных. Кнопка позволяет отключить это поведение – в этом случае для
интерпретации любых данных будет использоваться шаблон структуры, активный на момент отключения.

Кнопки перехода , осуществляют переходы по списку просмотренных структур, позволяя быстро


вернуться к ранее просмотренным данным.

Кнопка позволяет перейти на следующую структуру выбранного типа, т.е. отобразить данные,
следующие за текущей структурой, с использованием текущего шаблона – такая возможность полезна для
навигации по списку однотипных структур. Данная кнопка становится доступной, если для соответствующего
шаблона установлен признак Next (см. 1.6.2.3).

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

♦ если в процессе отладки скрипта произошло зацикливание;


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

Кнопка обновления структуры вызывает повторный разбор структуры. Использовать эту кнопку нужно,
если данные, на основании которых построена структура, изменились (например, были вычитаны данные,
которые ранее прочитать не удалось, или была уточнена конфигурация RAID, служащего источником данных).

Поле позволяет увидеть, по какому смещению расположена просматриваемая структура.


Значение в нем указывается в байтах. Кнопка рядом со смещением позволяет выбрать, в какой системе
счисления будет выводиться значение смещения: десятичной (DEC) или шестнадцатеричной (HEX).

Поле позволяет задать порядок байтов, используемый для интерпретации целых чисел и строк
Unicode. Доступны опции LE (Intel), BE (Motorola) и опция по умолчанию – использовать порядок байтов,
заданный в определении шаблона.
На вкладке «Структура» нижней панели Data Extractor дополнительно имеются следующие кнопки:

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
8 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101

Назначение 1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
выбор шаблона структуры из справочника (см. 1.6. «Справочник структур») 0111011110
111101
011
редактирование значений групп параметров (см. 1.5. «Навигация по структурам») 11
1

1.3.1.2. Основные элементы окна HEX-редактора


HEX-редактор предназначен для отображения и редактирования данных текущей просматриваемой
структуры в шестнадцатеричном виде.

Рис. 1.11. HEX-редактор


Панель инструментов HEX-редактора содержит следующие элементы:

Назначение

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


перехода к этому шаблону в справочнике.

кнопка сохранения изменений, внесенных в данные

кнопка изменения типа смещения данных (секторное или байтовое)

, кнопки перехода к первому и последнему сектору (или байту)

, кнопки перехода к предыдущему и следующему сектору (или строке)

кнопка перехода на указанное смещение

поле, в котором указывается смещение, по которому расположены данные

кнопка выбора представления смещения данных

поле ввода количества строк, отображаемых перед текущей

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


шаблона структуры (режим просмотра, см. Рис. 1.12) или к описателю найденного шаблона (режим
редактирования, см. Рис. 1.13). Если для данных по текущему смещению был найден шаблон, подходящий для
отображения данных, то данная кнопка становится активной и во всплывающей подсказке будет показано имя
найденного шаблона. Отключение автоматического определения шаблона не влияет на действие данной кнопки.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 9
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.12. Отображение данных с помощью подходящего шаблона в режиме просмотра

Рис. 1.13. Отображение подходящего шаблона в режиме редактирования

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

Кнопка дает возможность выбрать представление, в котором отображается и вводится значение


текущего смещения: байтовое (кнопка нажата) или секторное (кнопка не нажата).

Кнопки и позволяют осуществить переход к первому или последнему значению смещения


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

Кнопки и позволяют переходить к предыдущим или следующим сектору (при выбранном


секторном представлении смещения) или строке (при байтовом представлении смещения).

Кнопка позволяет выбрать, будет смещение отображаться в шестнадцатеричной системе счисления


(HEX), либо же в десятичной (DEC).
В левой части HEX-редактора напротив каждой строки отображается информация о смещении данных
относительно начала источника данных и относительно начала сектора. Значение смещения указано в
шестнадцатеричной системе счисления.

Рис. 1.14. Смещение относительно начала источника данных и относительно начала сектора

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
10 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Например, смещение 2048x0000 на рисунке – это смещение в 2048 секторов относительно начала источника1011010101100110011010101011010101111010111
данных, а х0010 – смещение в 16 (10h) байтов от начала сектора. 11010101101101010100111110
1101110110110011
0111011110
Над каждым столбцом показана информация о смещении данных относительно начала строки. Значение 111101

смещения указано в шестнадцатеричной системе счисления.


011
11
1

Рис. 1.15. Смещение данных относительно начала строки


В правой части HEX-редактора можно видеть символьное представление данных.

Рис. 1.16. Символьное представление данных


Над этой частью, так же, как и над данными, можно видеть номер байта (представленного в символьном
виде) относительно начала строки.
Отдельные детали представления данных в HEX-редакторе могут быть настроены с помощью контекстного меню:

Рис. 1.17. Контекстное меню HEX-редактора

1.3.2. Навигация в HEX-редакторе

1.3.2.1. Базовые возможности


Навигацию в HEX-редакторе можно осуществлять следующим образом:

♦ с помощью колесика мышки;

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 11
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
♦ используя клавиши ↓ и ↑, перемещаться по строкам (такое перемещение с зажатым Ctrl не приведет к
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011перемещению курсора – вместо этого будет изменено смещение отображаемых данных);
0111011110
111101
011
♦ используя клавиши → и ←, перемещаться по данным внутри строки;
♦ используя клавиши Page Up и Page Down, перемещаться на один сектор (при работе с секторным
11
1
смещением) или страницу редактора (при работе с байтовым смещением) вверх или вниз;
♦ используя сочетания клавиш Ctrl+Home и Ctrl+End, перемещаться к первому и последнему сектору
или байту;

♦ указав требуемое смещение в соответствующем поле ввода ( ) в секторах или байтах


(в зависимости от выбранного представления) и нажав клавишу Enter или кнопку перехода ;

♦ используя кнопки и , перемещаться к первому и последнему сектору или байту;

♦ Используя кнопки и , перемещаться к предыдущему и следующему сектору или к


предыдущей и следующей строке.

1.3.2.2. Закладки
Под закладкой понимается отмеченное смещение в источнике данных.
Закладки локальны для задачи Data Extractor: каждая задача имеет свои списки закладок для источников
данных, сохраняемые между запусками Data Extractor и доступные во всех представлениях просмотрщика
структур, а также в режиме параллельного просмотра источников данных (см. 2. «Параллельный просмотр
источников данных»).
Работа с закладками доступна из контекстного меню HEX-редактора и по «горячим клавишам».

Рис. 1.18. Работа с закладками в HEX-редакторе

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
12 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.19. Создание закладки

В HEX-редакторе закладка выделяется маркером: .


Ранее созданная закладка может быть отредактирована или удалена.

Рис. 1.20. Редактирование закладки: контекстное меню

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 13
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.21. Редактирование закладки


Переходы к предыдущей и следующей закладкам доступны в контекстном меню HEX-редактора и по
«горячим клавишам».
Переход к произвольной закладке (также доступный в контекстном меню и по «горячей клавише») требует
либо ввода индекса (номера) закладки, либо выбора закладки из списка, доступного по кнопке .

Рис. 1.22. Переход к закладке

Рис. 1.23. Выбор закладки

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
14 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Последний список позволяет, для удобства выбора, фильтровать закладки по категориям, а также создавать,
1011010101100110011010101011010101111010111
редактировать и удалять закладки для текущего источника данных. 11010101101101010100111110
1101110110110011
0111011110

1.3.3. Взаимодействие окон просмотра структур и HEX-редактора


111101
011
11
Левое и правое окна просмотрщика структур связаны между собой тем, что показывают одни и те же 1

данные, но делают это в разном виде – в левом окне отображаются данные в виде структуры, а в правом – в
шестнадцатеричном представлении.
При выполнении навигации по одному из окон выполняется синхронизация с другим окном. Например,
если, находясь в режиме просмотра структур, мы выберем поле структуры, то в редакторе выделятся те данные,
которые относятся к этому полю (см. Рис. 1.24). Верно и обратное: если переместить курсор в редакторе, то в
структуре выделится поле, связанное с этим диапазоном данных.

Рис. 1.24. Навигация по HEX-редактору и структуре в режиме просмотра


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

Рис. 1.25. Панель HEX-редактора с дополнительной информацией


На данной панели выводится следующая информация:

♦ первое поле
− 1048925($0010015D) – текущее смещение курсора;
− B: 142 – значение байтовой переменной для данных, начиная с текущего смещения;
− W: 49806 – значение переменной типа Word (беззнаковое 16-битное целое);
− DW: 251642510 – значение переменной типа DWord (беззнаковое 32-битное целое);
♦ второе поле
− Имя шаблона структуры, предназначенного для просмотра данных, расположенных по
выбранному смещению. Имя появляется только в том случае, если подходящий шаблон найден.
В случае, если был выделен блок данных, в первое поле выводится информация о смещении и размере
выделенных данных:

Рис. 1.26. Дополнительная информация о выделенных данных

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 15
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
− 1048576($00100000) — смещение, по которому начинается выделение;
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011 − 72 — количество выделенных байт.
0111011110

1.3.4. Редактирование данных


111101
011
11
1
Просмотрщик структур позволяет редактировать данные как в структурном, так и в шестнадцатеричном
представлении. Внесенные изменения могут быть сохранены кнопкой панели инструментов HEX-редактора. В
случае, если просмотрщик переключается на отображение других данных или закрывается, а сделанные в нем
изменения не были сохранены, будет предложено сохранить их.

Рис. 1.27. Предложение сохранить изменения


Редактирование данных в HEX-редакторе осуществляется простым вводом новых значений с клавиатуры:
шестнадцатеричных числовых в области HEX и символьных в области текстового представления. Измененные
данные при этом выделяются цветом.

Рис. 1.28. Редактирование данных в HEX-редакторе


В окне с разобранной структурой редактирование доступно для целочисленных полей и инициируется
нажатием ЛКМ на активной ячейке VALUE поля.

Рис. 1.29. Редактирование данных в окне с разобранной структурой


Измененные таким образом данные (и содержащие их структуры) помечаются маркером.

Рис. 1.30. Измененные данные в окне с разобранной структурой

1.3.5. Подсчет контрольных сумм


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

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
16 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.31. Подсчет контрольных сумм: контекстное меню

Рис. 1.32. Подсчет контрольных сумм

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 17
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
Рис. 1.33. Подсчет контрольных сумм: протокол
1

1.3.6. Дополнительные возможности, доступные в режиме просмотра

1.3.6.1. Построение карты


Если напротив поля или структуры есть кнопка , то с ее помощью для данного поля (структуры) может
быть построена карта.

Рис. 1.34. MBR


Например, нажатие на данную кнопку для элемента Entries[n] структуры MBR приведет к построению и
отображению карты соответствующего раздела:

Рис. 1.35. Построенная карта раздела

1.3.6.2. Выполнение переходов


Наличие у поля или структуры кнопки говорит о том, что для него создан скрипт перехода к
связанной структуре.
Например, по нажатию на данную кнопку для элемента Entries[n] структуры MBR в случае раздела NTFS
произойдет переход к структуре Boot NTFS.
Смещение структуры, к которой осуществляется переход, задается в скрипте (как правило, оно вычисляется на
основе данных текущей структуры). Тип структуры может быть задан в скрипте или определен на основе данных по
требуемому смещению. Если определить тип структуры на основе данных не удается, используется структура
ViewAs, которая содержит список полей различного типа и позволяет анализировать произвольные данные.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
18 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.36. Просмотр данных с помощью структуры ViewAs

1.3.6.3. Исполнение произвольных скриптов


Кнопка позволяет выполнять произвольные скрипты, определенные для данного поля или структуры.
Например, для Boot NTFS по данной кнопке доступен скрипт создания виртуального раздела для дальнейшей
работы с ним из проводника Data Extractor.

Рис. 1.37. Исполнение произвольных скриптов

1.4. Комбинированный режим просмотра структур и справочника


шаблонов структур
Комбинированный режим – это специальный режим, совмещающий просмотр данных и работу со
справочником шаблонов структур.
Режим позволяет:

♦ просматривать данные с помощью любого из имеющихся в справочнике структур шаблонов.


♦ редактировать справочник шаблонов.
1.4.1. Внешний вид
Комбинированный режим состоит из двух окон, одно из которых предназначено для просмотра данных в
виде структур или отображения справочника шаблонов структур, а второе – для отображения данных в
шестнадцатеричном представлении.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 19
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.38. Интерфейс комбинированного режима - просмотр структур

Для переключения между просмотром структур и редактированием шаблонов используется кнопка


«Просмотр» на панели инструментов.

Рис. 1.39. Интерфейс комбинированного режима - справочник шаблонов

Справочник шаблонов имеет древовидную организацию. Для того, чтобы раскрыть или свернуть узел
справочника (каталог или структуру), можно воспользоваться ЛКМ или следующими клавишами:
«+» – раскрыть текущий каталог или структуру. Все вложенные подструктуры и подкаталоги останутся свернутыми
«-» – свернуть текущий каталог или структуру
«*» – раскрыть текущий каталог или структуру. Все вложенные подструктуры и подкаталоги также будут развернуты
«/» – свернуть текущий каталог или структуру вместе со всеми подкаталогами и подструктурами.
Навигация по редактору осуществляется аналогично методам, описанным в главе «Навигация в HEX-редакторе».

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
20 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101

1.4.2. Просмотр структур 1011010101100110011010101011010101111010111


11010101101101010100111110
1101110110110011
Если при переходе в комбинированный режим удалось определить тип данных и найти подходящий 0111011110
111101
шаблон, то происходит разбор данных с помощью найденного шаблона. 011
11
1

Рис. 1.40. Просмотр структуры в комбинированном режиме


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

Рис. 1.41. Комбинированный режим в случае, если не найден подходящий шаблон

1.4.3. Использование справочника при просмотре


Для просмотра текущих данных с помощью произвольного шаблона нужно выбрать желаемый шаблон в
справочнике и переключиться в режим просмотра кнопкой . Если в справочнике нет подходящего шаблона,
он может быть создан (см. 1.4.4 «Редактирование справочника»).

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 21
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.42. Выбор структуры, с помощью которой необходимо интерпретировать данные

Рис. 1.43. Просмотр данных с помощью выбранной структуры в комбинированном режиме


На приведенном выше примере была предпринята попытка интерпретировать данные с помощью структуры
Zip file, но в ходе ее разбора была обнаружена неизвестная сигнатура 0x4E9052EB. В результате этого процесс
разбора структуры завершился с ошибкой, что можно видеть по значку напротив заголовка основной
структуры и поля, при создании которого эта ошибка произошла.

1.4.4. Редактирование справочника


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

Рис. 1.44. Панель инструментов справочника


Создание и редактирование различных элементов справочника подробно рассмотрено в разделе 1.6.2
«Работа со справочником».

1.5. Навигация по структурам


Навигация по структурам позволяет, используя информацию одной структуры, получить доступ к
данным другой.
Эта возможность может быть использована с совершенно разными целями. Целью может быть
восстановление данных, в том случае, когда структура, к которой мы получаем доступ, позволяет построить
карту размещения. Целью может быть проверка корректности файла или структуры. Целью может быть доступ к
дополнительной информации файловой системы или файла. Цель может быть прикладная – проверка
определенного предположения, что активно используется в предложенной в RAID Edition методике определения
параметров дискового массива.
Иногда для выполнения такого перехода и разбора структуры, к которой был осуществлен переход,
достаточно данных исходной структуры – например, при переходе от записи MBR к метаданным
соответствующего раздела. В других случаях требуется дополнительная информация, накопленная в ходе

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
22 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
предшествующей навигации или введенная пользователем. Средством хранения и передачи такой информации 1011010101100110011010101011010101111010111
являются группы параметров. 11010101101101010100111110
1101110110110011
0111011110
Шаблон группы параметров представляет собой сущность, связанную с одним или несколькими шаблонами 111101

структур и содержащую набор именованных параметров различных типов.


011
11
1

Рис. 1.45. Шаблон группы параметров


Создание шаблонов групп параметров и их связей с шаблонами структур рассмотрено в разделе 1.6.2.7.
В процессе разбора структуры, имеющей связь с некоторой группой параметров, создается экземпляр
этой группы.

Рис. 1.46. Группа параметров


Имя группы и значения параметров могут быть заданы по отдельности непосредственно в представлении структуры

Рис. 1.47. Редактирование параметра

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 23
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
или инициализированы одним из ранее использовавшихся наборов значений, представленных в выпадающем
1011010101100110011010101011010101111010111
11010101101101010100111110
меню кнопки .
1101110110110011
0111011110
111101
011
11
1

Рис. 1.48. Выбор группы параметров


Значения параметров группы могут быть инициализированы также

♦ при переходе со структуры, у которой данная группа параметров была инициализированной –


значения параметров исходной структуры становятся значениями параметров текущей;
♦ при повторном открытии структуры с ранее инициализированной группой параметров – для значений
параметров групп реализовано постоянное хранение;
♦ в скрипте – скрипты OnParse (см. 1.6.3.4.1) и OnAfterCreate (см. 1.6.3.4.2) являются подходящими
местами для инициализации параметров на основе значений полей структуры – именно так
инициализируется группа параметров NTFS структуры Boot_Ntfs.
Группы параметров используются не только для навигации, но и для других задач: например, для
построения карт в NTFS.
В случае, если в некотором скрипте требуются значения параметров, которые еще не были
инициализированы, пользователю будет предложено задать эти значения. На рисунке ниже скрипту построения
карты потребовались значения двух параметров, и пользователь может ввести их непосредственно:

Рис. 1.49. Запрос значений параметров: ввод


или выбрать подходящую группу:

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
24 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.50. Запрос значений параметров: выбор группы


Редактирование любой группы параметров текущего диска, а также создание новой группы параметров
доступны по кнопке вкладки «Структура».

Рис. 1.51. Выбор группы параметров для редактирования

Рис. 1.52. Редактирование группы параметров

1.6. Справочник структур


1.6.1. Общие сведения
Справочная система предназначена для создания, редактирования, хранения и использования описателей
структур данных.
Работа со справочной системой выполняется в комбинированном режиме (см. раздел 1.4), который
позволяет переключаться между режимами справочника и просмотра структур. Сделано это с двумя целями:

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 25
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
первая – это возможность просмотра данных с использованием любой выбранной структуры справочника,
1011010101100110011010101011010101111010111
вторая – создание структуры с отладкой на примере выбранных данных.
11010101101101010100111110
1101110110110011
0111011110
Справочная система представляет собой древовидную структуру, состоящую из каталогов, простых типов,
111101

структур, полей, скриптов, параметров и их групп.


011
11
1

Рис. 1.53. Подробный вид справочной системы


Интерфейс справочника представлен на рисунке 53. Цифрами на нем обозначены следующие элементы:
1) Заголовки таблицы.
♦ Structures – имена каталогов, структур, полей и т.д.
♦ Type – информация о типе данных поля структуры.
♦ Offset – смещение поля структуры.
♦ Size – размер поля или структуры.
2) Корневой каталог Root. Напротив него стоит значок .

3) Каталоги – объекты, предназначенные для группировки различных элементов справочника. Например,


каталог FileSystems группирует данные, связанные с разбором структур файловых систем. Он содержит
в себе каталоги конкретных файловых систем. Напротив каталога стоит значок .
Некоторые каталоги – например, “Root” и “Simple types”, –являются служебными и присутствуют
всегда. Их нельзя ни редактировать, ни удалять.
Подробнее о каталогах см. 1.6.2.2.
4) Шаблоны структур (см. 1.6.2.3) – .
5) Поля структур того или иного типа: стандартного (Integer, Double, String и т.д.) или пользовательского
(например, “JPEG” – структуры могут выступать в роли полей в других структурах). Напротив поля
можно увидеть значок .

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
26 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Подробнее о полях см. 1.6.2.4. 1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
6) Кнопки списка скриптов ( ). Наличие такой кнопки показывает, что у поля или структуры есть скрипт 0111011110
(или скрипты). Кликнув по значку, можно увидеть список всех скриптов, имеющихся у данного поля 111101
011
или структуры. Выбрав из этого списка скрипт, можно перейти к его редактированию. Подробнее о 11

скриптах см. 1.6.2.5, 1.6.3.1.


1

7) Параметры, используемые в скриптах. Параметр похож на обычное поле, но отличается от него тем, что
показывает не данные, которые расположены на носителе, а значения, которые может вводить
пользователь и которые используются для расчетов. Значение, указанное в параметре, влияет только на
вычисления, используемые для переходов на другие структуры, построения карт и т.д., и никак не влияет
на данные, хранящиеся на накопителе. Напротив параметра изображен значок .
Подробнее о параметрах см. 1.6.2.6.
8) Группа взаимосвязанных параметров, значения которых сохраняются при переходах между структурами,
имеющими связи с данной группой – .
Подробнее о группах параметров см. 1.5, 1.6.2.7.

9) Наличие значка в данном поле показывает, что со структурой связаны одна или несколько групп
параметров. Кликнув по значку, можно увидеть список всех групп параметров, связанных с данной
структурой, и перейти к редактированию любой связи из списка.
Служебный каталог “Simple types” содержит список базовых, простых типов данных, с помощью которых
описываются все остальные, производные типы.

Рис. 1.54. Базовые типы данных

♦ Типы Short, Smallint, Longint, Int64, Byte, Word, DWord, QWord описывают целочисленные знаковые
и беззнаковые данные разной разрядности:
− Byte – целое число без знака размерности 1 байт;
− Short – целое число со знаком размерности 1 байт;
− Word – целое число без знака размерности 2 байта;
− Smallint – целое число со знаком размерности 2 байта;
− DWord – целое число без знака размерности 4 байта;
− Longint – целое число со знаком размерности 4 байта;
− QWord – целое число без знака размерности 8 байтов;
− Int64 – целое число со знаком размерности 8 байтов;

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 27
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
♦ Типы Single и Double представляют вещественные числа одинарной и двойной точности
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011соответственно;
0111011110
111101
011
♦ Тип DateTime описывает данные в формате дата:время;
♦ Char, WideChar, String, WideString задают данные в символьном виде:
11
1

− Char – символ в кодировке ANSI


− WideChar – символ в кодировке UTF-16
− String – строка символов в кодировке ANSI
− WideString – строка символов в кодировке UTF-16
♦ Тип Bin предназначен для описания бинарных данных.
Каталог “Library” объединяет типы данных (структуры и поля), которые могут использоваться многократно
для описания разных структур.

Рис. 1.55. Структура каталога Library


Каталог “UserTypes” содержит типы данных, часто используемые для определения других структур.
Например, поле TGUID позволяет отображать 16 байт данных как GUID – такое отображение реализовано с
помощью скрипта OnGetCaption (см. 1.6.3.4.4). Поэтому вместо того, чтобы каждый раз при необходимости
описывать тип для GUID внутри структуры и писать для него скрипт, рекомендуется использовать данный тип.

Рис. 1.56. Структура UserTypes


Помимо “UserTypes” каталог “Library” содержит вложенный каталог “Psevdonims”. Он содержит в себе
базовые типы с именами, привычными для программистов Delphi, С/С++ и Windows API. Это, в частности,
делает более удобным добавление полей в структуру, создаваемую по описанию в соответствующем синтаксисе.

Рис. 1.57. Структура Psevdonims

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
28 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101

1.6.2. Работа со справочником 1011010101100110011010101011010101111010111


11010101101101010100111110
1101110110110011

1.6.2.1. Основные действия


0111011110
111101
011
11
Основные операции над содержимым справочника представлены кнопками на панели инструментов: 1

Рис. 1.58. Панель инструментов справочника структур

Добавление нового объекта

Редактирование выбранного объекта

Удаление выбранного объекта

Идентификация структуры

Кнопка позволяет добавить новые разделы в дерево структур. По нажатию на эту кнопку откроется
список действий, доступных для текущего узла справочника.

Рис. 1.59. Меню добавления объекта в справочную систему

Кнопка позволяет открыть редактор объекта. В зависимости от того, что выбрано (структура, поле,
параметр, …), открывается соответствующий редактор.

Для редактирования скрипта необходимо нажать на значок в крайнем правом столбце справочника и в
появившемся списке выбрать необходимый скрипт.

Рис. 1.60. Скрипты, доступные для структуры TPartitionEntry


Для редактирования связи структуры с группой параметров (т.е., по сути, для замены или удаления этой
связи) необходимо нажать на значок в крайнем правом столбце справочника, и в появившемся списке
выбрать интересующую группу.

Кнопка позволяет удалить выбранный объект.

Кнопка «Идентифицировать структуру» позволяет связать выбранный шаблон структуры с типом


данных, который определил Data Extractor, обеспечив тем самым автоопределение данной структуры в будущем.
К примеру, содержимое JPEG-файла определяется Data Extractor’ом как JPEG Image. Для того, чтобы
связать данный тип данных со структурой JPEG (Files → Media Files → Pictures), нужно при отображении JPEG-
файла в просмотрщике структур выбрать структуру JPEG в справочнике и нажать кнопку «Идентифицировать

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 29
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
структуру». С этого момента, каждый раз, когда мы будем открывать JPEG-файл в просмотрщике структур,
1011010101100110011010101011010101111010111
программа будет находить шаблон структуры, ассоциированный с типом данных JPEG Image (в данном случае
11010101101101010100111110
1101110110110011
таким шаблоном будет JPEG) и отображать данные с использованием этого шаблона.
0111011110
111101

Увидеть тип данных, к которому привязана структура, можно в редакторе структур. Для этого необходимо
011
11
1
выбрать нужную структуру, нажать ПКМ и выбрать пункт «Редактировать». В открывшемся окне в поле RAW
будет содержаться информация об идентифицированном типе данных. Если с редактируемой структурой не
связан никакой тип данных, поле RAW будет содержать значение “Unknown”.

Рис. 1.61. Тип данных, к которому привязана структура


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

1.6.2.2. Каталог
Каталоги предназначены для того, чтобы в одном разделе, имеющем осмысленное имя, собрать все
необходимые структуры и каталоги. Например, в каталоге FileSystems содержатся такие каталоги, как FAT,
NTFS, HFS и другие. Каждый из каталогов в свою очередь содержит в себе ряд структур, предназначенных для
описания конкретной файловой системы.
Для того, чтобы создать новый каталог, необходимо выбрать каталог, который будет родительским по
отношению к вновь создаваемому. В качестве родительского может выступать как корневой каталог Root, так и
любой другой. Выбрав действие «Добавить каталог» на панели инструментов или в контекстном меню
выбранного каталога, мы увидим окно, представленное на рисунке ниже.

Рис. 1.62. Окно создания/редактирования каталога


Окно создания/редактирования каталога содержит поля:
ID – идентификатор каталога в базе данных.
Name – имя каталога, которое отображается в справочной системе.
About – дополнительная информация о каталоге.
Order – порядок отображения. Если в родительском каталоге содержится несколько подкаталогов, то в
справочной системе они будут отображены в порядке возрастания значений этого поля.
Category – дополнительное поле, предназначенное для группировки каталогов.

1.6.2.3. Структура
Структура – это набор данных, организованных по предварительно заданным правилам. Структуры бывают
2 типов – статические и динамические.
Статическая структура представляет собой список идущих друг за другом именованных полей различных
типов. В качестве примера статической структуры может рассматриваться структура Boot_Ntfs.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
30 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Динамическая структура – структура, состав полей которой определяется скриптом разбора (см. 1.6.3.4.1
1011010101100110011010101011010101111010111
«Скрипт OnParse»). Другими словами, наличие у структуры скрипта OnParse является признаком динамической 11010101101101010100111110
1101110110110011
структуры. Примерами динамической структуры являются ZIP file, TIFF, JPEG, PNG. 0111011110
111101

Создаваемую структуру желательно поместить в каталог с таким именем, которое позволило бы легко ее
011
11
найти. Для того, чтобы создать новую структуру, необходимо выбрать каталог, который будет содержать 1

создаваемую структуру, нажать на кнопку или ПКМ и выбрать пункт «Добавить структуру». После этого
откроется окно редактирования структуры.

Рис. 1.63. Окно создания/редактирования структуры


Окно создания/редактирования структуры содержит следующие поля:
ID – идентификатор структуры – нередактируемое значение, которое присваивается структуре
автоматически при ее создании.
Name – имя структуры. Рекомендуется давать структурам осмысленные имена, говорящие об их
функциональном предназначении.
About – дополнительная информация о структуре.
Order – порядок отображения структуры в каталоге.
Size – размер структуры. Если он не известен на этапе разработки, то можно оставить значение 0 в этом
поле – в этом случае размер структуры нужно установить в ее скрипте OnParse или OnAterCreate.
Category – дополнительное поле, предназначенное для группировки структур.
RAW – имя типа данных, к которому привязан данный шаблон, или “Unknown”, если шаблон не привязан ни к
одному типу данных. Данное значение может быть установлено кнопкой («Идентифицировать структуру»)
панели инструментов справочника и очищено кнопкой справа от поля. Подробнее см. в разделе 1.6.2.1.
Также имеется возможность указать дополнительные опции для каждой структуры:
Expand – раскрывать структуру при просмотре (станут видны все ее поля).
Not visible – не отображать структуру при просмотре.
Virtual – на данный момент не используется.
Source – на данный момент не используется.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 31
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Next – делает активной кнопку в режиме просмотра. Данная кнопка позволяет перейти на следующую
1011010101100110011010101011010101111010111
11010101101101010100111110
структуру, т.е. отобразить данные, следующие за текущей структурой, с использованием текущего шаблона.
1101110110110011
Такая возможность полезна для навигации по списку однотипных структур.
0111011110
111101
011
11 Library – делает шаблон структуры доступным по имени для всех скриптов.
1
Просмотрщик структур во время исполнения скрипта позволяет обратиться к шаблонам структур или полей,
созданным ранее, по идентификатору и по имени. По имени можно обратиться простым типам и к шаблонам,
находящимся в том же каталоге, что и данная структура, или являющимся для неё дочерними. Нельзя обратиться
к структуре или полю, находящемуся, например, в другом каталоге того же уровня, что и текущий. Обойти
ограничение доступа к полям и структурам можно с помощью метки Library.
На практике поля и структуры, для которых вероятно их повторное использование в различных контекстах,
следует помечать как Library и помещать в специальный каталог Library (Root → Library) и его подкаталоги.
Direct Access – запрещает выделение памяти для полей данного типа – их значения считываются напрямую
из источника данных и записываются в него при модификации. Данная метка может быть полезна при работе с
большими структурами и полями.

1.6.2.4. Поле
Поля позволяют просматривать данные в определенном формате, который определяется типом поля. Тип
поля может быть простым (Byte, Integer, Double, Char, String, …) или задаваться шаблоном некоторой ранее
определенной структуры. Например, если в справочной системе описана структура JPEG, то при создании
структуры TIFF мы можем добавить в нее поле типа JPEG. Во время просмотра поле JPEG будет выглядеть как
подструктура TIFF, содержащая собственные поля.

1.6.2.4.1. Создание поля простого типа


Чтобы создать поле простого типа, необходимо выбрать структуру, которая будет содержать это поле, и,
кликнув по ней ПКМ, в открывшемся контекстном меню выбрать пункт «Добавить поле». Также можно
воспользоваться кнопкой «Добавить» .

Рис. 1.64. Окно создания/редактирования структуры


Назначение многих полей и опций редактора поля аналогично назначению соответствующих элементов редактора
структуры (см. 1.6.2.3), поэтому ограничимся описанием полей и опций, отсутствующих в редакторе структуры.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
32 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Type – позволяет выбрать тип данных поля из списка “Simple types” справочника (см. 1.6.1). 1011010101100110011010101011010101111010111
11010101101101010100111110
Notion – способ представления данных. Набор допустимых значений зависит от типа данных поля: 1101110110110011
0111011110
− HEX и DEC для целочисленных данных. HEX позволяет отобразить значение в
111101
011
шестнадцатеричной системе счисления, DEC – в десятичной. 11
1
− Bin для бинарных данных.
− Real для вещественных чисел.
− String для строковых значений типа Char и String.
− WideString для строковых значений типа WideChar и WideString.
− Пустой набор значений для остальных типов.
Byte order – порядок байтов. Допустимые значения:
− LE (little-endian, Intel byte order) – порядок, при котором байты в памяти располагаются от
младшего к старшему;
− BE (big-endian, Motorola byte order) – порядок, при котором байты в памяти располагаются от
старшего к младшему.
Offset – смещение поля от начала структуры (если выбрана опция absolute) или от конца предыдущего поля
(если выбрана опция relative). Для первого поля структуры опции absolute и relative не различаются – смещение
считается от начала структуры.
Count – в случае, если создается массив однотипных данных, следует указать в поле Count размерность
массива; в противном случае значение этого поля должно быть равно 1.
ReadOnly – поле с данным свойством предназначено только для чтения, т.е. его значение не доступно для
редактирования в режиме просмотра.

1.6.2.4.2. Создание поля произвольного типа


Для создания поля произвольного типа нужно в справочнике:
1) Выбрать шаблон структуры или простой тип, который должен стать типом создаваемого поля;
2) Зажав Ctrl, перетащить мышкой выбранный объект в структуру, поле которой должно быть создано;
3) В открывшемся окне для редактирования поля заполнить все необходимые поля, такие как имя поля,
количество (в случае создания массива) и т.д.
При этом стоит обратить особое внимание на то, что, если вместо Ctrl нажать Shift, произойдет
перемещение выбранного объекта, а не его копирование.

Рис. 1.65. Создание поля типа TGUID

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 33
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
На рисунке выше изображен пример создания поля типа TGUID в структуре Structure4. В открывшемся окне
1011010101100110011010101011010101111010111
11010101101101010100111110
редактирования в качестве типа поля будет указан TGUID (
1101110110110011
0111011110
), чего
нельзя добиться, используя способ, описанный в 1.6.2.4.1.
111101
011

1.6.2.5. Скрипт
11
1

Скрипты предназначены для выполнения различных действий, таких как динамическое добавление новых
полей любого типа, считывание данных, расположенных за пределами структуры по некоторому известному
смещению, изменение размера полей и структур, осуществление переходов, построение карт объектов и многое
другое. Скрипты подробно описаны в разделе 1.6.3.

Для того чтобы создать скрипт, нужно, выбрав структуру/поле, нажать ПКМ или кнопку «Создать» ив
появившемся меню выбрать «Добавить скрипт».

Рис. 1.66. Окно создания/редактирования скрипта


Рассмотрим основные элементы окна создания/редактирования скрипта.
ID – идентификатор скрипта, присваиваемый ему при создании и недоступный для редактирования.

Кнопка появляется только при редактировании ранее созданного скрипта и служит для его удаления.
Список выбора типа активен только для вновь создаваемого скрипта. Он позволяет задать назначение этого
скрипта (см. 1.6.3.4).
Name – имя скрипта, позволяющее пользователю различать однотипные скрипты типов Actions и Library.
Для остальных типов скриптов в данный момент не используется.
About – дополнительная информация о скрипте.

Кнопка запускает компиляцию скрипта, результат которой отображается в отдельном поле:

Рис. 1.67. Результат компиляции скрипта


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

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
34 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.68. Сообщение об ошибке компиляции


Перед сохранением скрипт также компилируется, и, если компиляция завершится неудачей, пользователю
будет показано соответствующее сообщение об ошибке. После этого данный скрипт будет сохранен, но
выполнить его будет невозможно.
Скрипты типа Library представлены отдельными узлами справочника. Скрипты прочих типов связаны с
некоторой структурой или полем и доступны для редактирования по кнопке в крайней правой ячейке строки
данной структуры/поля в справочнике.

1.6.2.6. Параметр
Параметр — это поле, данные которого задаются пользователем или вычисляются в скрипте, а не
считываются с накопителя. Значения параметров используются в скриптах: например, для того, чтобы
рассчитать смещение, по которому расположена некоторая структура, или построить карту объекта.
Параметры хранят свои значения в специальном хранилище, что позволяет при повторном открытии
структуры использовать значения, заданные ранее.
Редактор параметра имеет следующий вид:

Рис. 1.69. Окно создания/редактирования параметра

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 35
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Доступные для определения поля аналогичны полям редакторов структуры (см. 1.6.2.3) и поля (см. 1.6.2.4):
1011010101100110011010101011010101111010111
11010101101101010100111110
ID – идентификатор параметра, с которым он хранится в базе данных.
1101110110110011
0111011110

Name – имя параметра.


111101
011
11
1 Type – тип данных.
Size – размер в байтах.
Notion – способ представления данных.
Order – порядок отображения параметра в списке или группе (см. 1.6.2.7) параметров.
About – дополнительная информация о параметре.
Опция Not visible запрещает просмотрщику отображать этот параметр в представлении структуры.

1.6.2.7. Группа параметров


Параметры могут быть частью именованной группы, функционирующей как единое целое (см. 1.5
«Навигация по структурам»). Для представления групп параметров используется значок .

Создать группу параметров можно в любом каталоге, нажав на кнопку или ПКМ и выбрав пункт
«Добавить группу параметров» в открывшемся меню.

Рис. 1.70. Окно создания/редактирования группы параметров


Поля данного окна аналогичны соответствующим полям окна редактирования структур:
ID – идентификатор группы параметров, назначаемый программой.
Name – имя группы.
About – дополнительная информация о группе.
Category – дополнительное поле, предназначенное для группировки.
Опция Expand предписывает просмотрщику раскрывать группу при отображении, делая видимыми все
входящие в нее параметры.
Опция Library позволяет связывать с данной группой любые структуры. В отсутствие этого признака с
данной группой могут быть связаны только структуры, определенные в том же каталоге, в котором определена
группа, или в его подкаталогах.
Чтобы связать структуру с группой параметров, нужно выделить данную структуру в справочнике, нажать
на кнопку или ПКМ и выбрать пункт «Привязать группу параметров» в открывшемся меню.

Рис. 1.71. Окно привязки группы параметров: создание новой связи

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
36 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
После такой привязки напротив структуры появится значок , свидетельствующий о том, что с данной 1011010101100110011010101011010101111010111
11010101101101010100111110
структурой связана одна или несколько групп параметров. Каждую из таких связей можно заменить связью с 1101110110110011
0111011110
другой группой или удалить, нажав на значок и выбрав нужную связь в открывшемся списке. 111101
011
11
1

Рис. 1.72. Окно привязки группы параметров: редактирование существующей связи

Кнопка позволяет удалить существующую связь.

1.6.2.8. Группировка полей и структур

При необходимости изменить расположение объекта, такого как поле, параметр или структура, можно
воспользоваться механизмом перетаскивания, реализованным в инструменте просмотра структур. Для этого,
находясь в режиме редактирования, необходимо:
1)Выбрать объект, который необходимо переместить в другую структуру или папку;
2)Нажав Shift, с помощью мышки переместить выбранный объект в нужное место.

Рис. 1.73. Перенесение структуры View в структуру UserTypes


При использовании данного механизма нужно учитывать, что, если вместо Shift нажать Ctrl, произойдет
копирование выбранного объекта.

1.6.3. Скриптовая модель

1.6.3.1. Общие сведения


Скрипты позволяют расширить возможности отображения данных с помощью создания динамических
структур, а также реализовать такой функционал, как навигация по структурам, построение карт объектов и т.д.
В скриптах используется паскале-подобный синтаксис и в них доступно большинство паскалевских
функций, таких как IntToStr, StrToInt, DateTimeToStr, ShowMessage и т.д.
Существуют различные типы скриптов. Библиотечные скрипты – скрипты типа Library – не предназначены
для непосредственного исполнения, они обеспечивают возможность вынесения определений часто

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 37
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
используемых типов, констант, процедур и функций в отдельный модуль, подключаемый в других скриптах.
1011010101100110011010101011010101111010111
Остальные типы скриптов можно разделить на 2 группы: событийные и несобытийные.
11010101101101010100111110
1101110110110011
0111011110
Событийные скрипты — это те скрипты, выполнение которых происходит при наступлении
111101

определенных событий. Например, скрипт типа OnGetCaption выполняется в тот момент, когда просмотрщик
011
11
1
запрашивает у структуры/поля её заголовок для отображения. К событийным относятся следующие типы
скриптов: OnParse, OnAfterCreate, OnGetCaption, OnGetValue, OnSetValue.
Несобытийные скрипты необходимо запускать «вручную». Напротив полей и структур, имеющих скрипты
данной группы, отображаются специальные значки ( , , ), по клику на которые скрипт соответствующего
типа запустится на выполнение. К этой группе скриптов относятся Jump, FillMap, Actions.
Скрипты можно добавлять только полям и структурам, при этом структура или поле могут иметь не более одного
скрипта каждого типа. Исключение составляет тип Actions – количество скриптов этого типа не ограничено.
Исполнение скрипта заключается в исполнении его процедуры Main(field: Integer).

1.6.3.2. Типы скриптов


Library – библиотечный скрипт. Это означает, что можно включить тело данного скрипта в любой другой
скрипт при помощи директивы $I и использовать типы, константы, процедуры и функции, описанные во
включенном скрипте.
OnParse – скрипт инициализации структуры. Если он определен, поля шаблона структуры игнорируются –
за наполнение структуры отвечает данный скрипт. Проинициализированная таким образом структура называется
динамической, т.к. её размер, состав и порядок полей определяются в процессе её инициализации на основании,
например, неких флагов, прочитанных в процессе разбора структуры и определяющих способ дальнейшего
разбора. Пример скрипта OnParse приведен в разделе 1.6.3.4.1.
OnAfterCreate – скрипт, выполняемый непосредственно после создания структуры или поля. Позволяет
произвести дополнительные вычисления и действия, в том числе добавление новых полей. Может быть полезен
для создания структур с частично динамическим содержимым. Пример скрипта OnAfterCreate приведен в
разделе 1.6.3.4.2.
OnGetCaption – позволяет изменить заголовок поля или структуры, а также вывести в него дополнительную
информацию. Заголовок имеет строковый тип, поэтому при выводе в него числа, даты/времени, а также прочих
типов, отличных от строкового, внутри скрипта должны использоваться функции преобразования, такие как
IntToStr, FloatToStr, DateTimeToStr и т.д., или функции форматирования, такие как Format, FormatFloat и т.д.
Пример скрипта OnGetCaption приведен в разделе 1.6.3.4.4.
OnGetValue – позволяет подменить значение, прочитанное из источника данных, некоторым другим в памяти,
после чего это новое значение будет отображаться в просмотрщике и использоваться в вычислениях. Пример
использования данного скрипта можно увидеть в структуре DOS_DateTime и других структурах, расположенных в
данном каталоге (Library → UserTypes → UserTypes). В скрипте OnGetValue структуры DOS_DateTime происходит
преобразование данных из DOS-формата времени в формат, используемый просмотрщиком, и запись полученного
значения в поле. Пример скрипта OnGetValue приведен в разделе 1.6.3.4.3.
OnSetValue – позволяет подменить значение поля в памяти значением, предназначенным для сохранения в
источник данных. Пример скрипта OnSetValue приведен в разделе 1.6.3.4.3.
Jump – скрипт перехода (см. 1.3.6.2). После создания данного скрипта напротив поля или структуры
появляется значок , нажав на который, можно осуществить переход по определенному в скрипте смещению и
просмотр данных с помощью подходящего шаблона, если таковой задан в скрипте или может быть определен на
основе данных, к которым осуществляется переход. Пример скрипта Jump приведен в разделе 1.6.3.4.5.
FillMap – скрипт построения карты (см. 1.3.6.1). После его создания напротив поля или структуры
появляется значок , нажатие на который запускает данный скрипт на исполнение. Типичный скрипт такого
типа открывает стандартное окно Data Extractor, предназначенное для отображения построенной карты. Пример
скрипта FillMap приведен в разделе 1.6.3.4.6.
Actions – тип скрипта, предназначенный для выполнения некоторых действий по инициативе пользователя
(т.е. скрипт является несобытийным). Например, такой скрипт может использоваться для добавления
виртуального раздела. Для переходов и построения карт предназначены специальные типы скриптов, но эти
действия при необходимости могут быть реализованы и скриптами данного типа (например, переходы по
дополнительным смещениям или построение дополнительных карт). Напротив поля или структуры, имеющих

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
38 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
скрипты такого типа, отображается значок , нажав на который, можно увидеть список всех доступных 1011010101100110011010101011010101111010111
11010101101101010100111110
скриптов этого типа у выбранного объекта и запустить любой из них на исполнение. Пример скрипта Actions 1101110110110011
0111011110
приведен в разделе 1.6.3.4.7. 111101
011

1.6.3.3. Объекты и методы, доступные из скрипта


11
1

К типам данных, доступным для использования в скриптах, относятся простые типы данных Pascal, такие
как Integer, Double, String и т.д., служебные перечисления, а также специальные типы TDataSource
(представляет источник данных), TMap (представляет карту и предоставляет методы для ее построения; является
частным случаем TDataSource), TContext (позволяет выводить сообщения в протокол и проверять, запрошено ли
прерывание исполнения текущего скрипта), TFieldNode (все структуры, поля и параметры являются объектами
этого класса), TParamGroup (представляет группу параметров; определяет методы чтения и записи значений
параметров группы).

1.6.3.3.1. Перечисления
Свойства и методы встроенных типов данных используют следующие перечисления:
TScriptType – тип скрипта (типы скриптов рассмотрены в разделе 1.6.3.2)
♦ stLibrary
♦ stOnParse
♦ stOnGetCaption
♦ stOnAfterCreate
♦ stOnGetValue
♦ stOnSetValue
♦ stJump
♦ stFillMap
♦ stActions
TOffsetType – тип смещения
♦ ot_Prev – от предыдущего элемента (для первого элемента от Parent)
♦ ot_Abs_Parent – от начала Parent
♦ ot_Abs_Start – от начала Owner
(свойства Parent и Owner рассмотрены в разделе 1.6.3.3.2. «Класс TFieldNode»)
TFld_Type – тип данных
♦ st_Unknown – неизвестный тип данных
♦ st_Binary – произвольные двоичные данные
♦ st_Byte – целое число без знака размерности 1 байт
♦ st_Short – целое число со знаком размерности 1 байт
♦ st_Word – целое число без знака размерности 2 байта
♦ st_SmallInt – целое число со знаком размерности 2 байта
♦ st_DWord – целое число без знака размерности 4 байта
♦ st_LongInt – целое число со знаком размерности 4 байта
♦ st_QWord – целое число без знака размерности 8 байтов
♦ st_Int64 – целое число со знаком размерности 8 байтов
♦ st_Single – вещественное число с плавающей точкой одинарной точности
♦ st_Double – вещественное число с плавающей точкой двойной точности
♦ st_DateTime – дата/время

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 39
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
♦ st_Char – символ в кодировке ANSI
1011010101100110011010101011010101111010111
11010101101101010100111110

♦ st_WideChar – символ в кодировке UTF-16


1101110110110011
0111011110
111101
011
11
♦ st_String – строка символов в кодировке ANSI
1
♦ st_WideString – строка символов в кодировке UTF-16
♦ st_Map – карта объекта
TFld_Notion – представление
♦ nt_None – представление не задано
♦ nt_Dec – десятичное представление целого числа
♦ nt_Hex – шестнадцатеричное представление целого числа
♦ nt_Real – вещественное число
♦ nt_DateTime – дата/время
♦ nt_String – строка символов в кодировке ANSI
♦ nt_WideString – строка символов в кодировке UTF-16
♦ nt_Bin – двоичные данные
TFld_DataOrder – порядок байтов
♦ ord_SE – little-endian (Intel)
♦ ord_BE – big-endian (Motorola)
TFld_ValidState – корректность значения поля
♦ vs_Undefined – корректность не проверена
♦ vs_Valid – значение корректно
♦ vs_Dubious – значение сомнительно
♦ vs_Invalid – значение некорректно
1.6.3.3.2. Класс TFieldNode
TFieldNode – это основной класс, с которым работают скрипты. Поля, параметры и структуры являются
объектами этого класса.
Главным методом в работе скрипта является метод Main(field: Integer). Его параметр field представляет
структуру или поле, для которых запущен скрипт, в виде параметра типа Integer; к типу TFieldNode он
приводится с помощью конструкции TFieldNode(field).
TFieldNode предоставляет ряд свойств, доступных либо для чтения (R), либо для чтения и записи (RW). Эти
свойства представлены в таблице «Свойства TFieldNode».
Структуры и поля инициализируются просмотрщиком с использованием данных из некоторого источника –
как правило, из карты – и организованы в древовидную иерархию. Отдельные поля – узлы или листья этого
дерева – могут быть созданы с использованием другого источника – например, объединения несмежных
диапазонов исходного источника или результата разархивирования некоторого диапазона. В таблице ниже для
некоторого поля Owner – это структура, непосредственно проинициализированная просмотрщиком – корень
дерева, к которому принадлежит данное поле, а Container – корень поддерева, созданного на том же источнике
данных, что и данное поле. Если при инициализации текущего дерева структур дополнительные источники
данных не использовались, то Container любого поля будет совпадать с его Owner.

Свойства TFieldNode
Тип
Свойство Тип данных Значение
доступа
ID R Integer Идентификатор объекта (поля, структуры), под которым он
хранится в базе данных

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
40 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101

Имя объекта
1011010101100110011010101011010101111010111
Name RW WideString 11010101101101010100111110
1101110110110011
0111011110
Tag RW Int64 Произвольное целое 64-битное число, связанное с объектом 111101
011
11
AsInteger RW Int64 Целочисленное значение поля 1

Count R Integer Количество дочерних полей

Size RW Int64 Размер поля в байтах

DataSource R TDataSource Для поля-контейнера – источник данных, для прочих полей


не инициализировано

OffsetInDataSource R Int64 Для поля-контейнера – смещение в источнике данных, для


прочих полей не инициализировано

Parent R TFieldNode Родительское поле

Owner R TFieldNode Поле-владелец, т.е. корень дерева структур, к которому


принадлежит данное поле

OffsetInOwner R Int64 Смещение относительно поля-владельца

OffsetInOwnerSource R Int64 Смещение в источнике данных поля-владельца

Container R TFieldNode Поле-контейнер, т.е. корень поддерева, созданного на том


же источнике данных, что и данное поле

OffsetInContainer R Int64 Смещение относительно поля-контейнера

OffsetInContainerSou R Int64 Смещение в источнике данных поля-контейнера. Т.е., по


rce сути, это смещение поля в своем источнике данных

Notion RW TFld_Notion Представление данных (см. 1.6.3.3.1)

ValidState RW TFld_ValidState Статус корректности значения поля (см. 1.6.3.3.1)

Context RW TContext Контекст (см. 1.6.3.3.3)

Caption RW WideString Заголовок поля

NeedExpand RW Boolean Признак, заставляющий просмотрщик раскрывать структуру


при показе

Modified R Boolean Позволяет узнать, изменял ли пользователь значение поля

HasModifiedChildren R Boolean Позволяет узнать, изменял ли пользователь значения каких-


либо дочерних полей

Рассмотрим методы класса TFieldNode.


К методам получения и установки значения поля относятся следующие:

♦ function GetData_AsInt64: Int64


♦ procedure SetData_AsInt64 (value : Int64)
♦ function GetData_AsDouble: Double
♦ procedure SetData_AsDouble (value: Double)

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 41
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
♦ function GetData_AsString: String
1011010101100110011010101011010101111010111
11010101101101010100111110

♦ procedure SetData_AsString (value: String)


1101110110110011
0111011110
111101
011
11
♦ function GetData_AsWideString: WideString
1
♦ procedure SetData_AsWideString (value: WideString)
♦ function GetData_AsDateTime: TDateTime
♦ procedure SetData_AsDateTime (value: TDateTime)
♦ function GetData_AsVarArray: Variant
♦ procedure SetData_AsVarArray (value: Variant)
♦ function GetData_AsGuid: TGuid
♦ procedure SetData_AsGuid (value: TGuid)
procedure WriteData — сохранение изменений в источник данных. Нужно иметь в виду, что карта, выступая
в качестве источника данных, накапливает сохраненные таким образом изменения для последующей физической
записи их на носитель. Перед осуществлением такой записи пользователю будет выдан запрос на подтверждение
этой операции (при переходе к другой структуре или закрытии формы, содержащей просмотрщик структур).
Запись изменений на носитель может также быть выполнена явно кнопкой панели инструментов HEX-редактора.
procedure SetModified — пометка поля как измененного пользователем – такие поля выделяются в
просмотрщике визуально.
function GetNodeByIdx (idx: Integer): TFieldNode — получение дочернего поля по его индексу в списке
дочерних полей.
function GetNodeByName (name: String): TFieldNode — получение дочернего поля по имени.
function AppendField (typeID: Integer; name, about: WideString; offset: Int64; offsetType: TOffsetType; size:
Int64): TFieldNode;
function AppendFieldByName (typeName: String; name, about: WideString; offset: Int64; offsetType:
TOffsetType; size: Int64): TFieldNode;
function AppendFieldEx (typeID: Integer; typeName: String; name, about: WideString; offset: Int64;
offsetType: TOffsetType; size: Int64; options: TAppendFieldOptions; source: TDataSource; offsetInSource: Int64):
TFieldNode — создание дочернего поля. В качестве параметров указываются:

Тип
Параметр Значение
данных
typeID Integer Идентификатор шаблона создаваемого поля в базе данных. Для
определения шаблона на основе данных, а также для поиска шаблона по
имени при вызове AppendFieldEx может быть использована константа
ID_AUTODETECT.

typeName String Имя шаблона создаваемого поля в базе данных. Поиск по имени
осуществляется среди
− шаблонов, дочерних для данной структуры,
− шаблонов, находящихся в том же каталоге, что и данная структура,
− простых типов,
− библиотечных шаблонов (т.е. шаблонов, для которых установлен
признак Library).
При поиске шаблона по идентификатору с помощью AppendFieldEx в
этом параметре должна быть передана пустая строка.

name WideString Имя поля, которое будет отображаться в режиме просмотра структур.

about WideString Комментарий к создаваемому полю.

offset Int64 Смещение, по которому будет располагаться создаваемое поле.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
42 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101

Тип смещения (см. раздел Перечисления).


1011010101100110011010101011010101111010111
offsetType TOffsetType 11010101101101010100111110
1101110110110011
0111011110
size Integer Размер поля. Для создания поля с размером по умолчанию 111101
(определяемым шаблоном создаваемого поля или его скриптами) может 011
11
быть использована константа SIZE_AUTODETECT. 1

options TAppendFie В настоящий момент не используется. В этом параметре должно быть


ldOptions передано пустое множество: []

source TDataSource Источник данных для создаваемого поля. В наиболее типичном


сценарии, когда поле создается на том же источнике данных, на котором
создано текущее поле, в этом параметре должен быть передан nil.

offsetInSource Int64 Смещение в source для данных, с которыми будет проинициализировано


новое поле. Если в параметре source передан nil, значение данного
параметра игнорируется.

procedure SelfDelete — удаление поля.


procedure ExcludeScript (type: TScriptType) — удаление скрипта заданного типа у текущего поля.
procedure ExcludeScriptByID (id: Integer) — удаление скрипта с заданным идентификатором у текущего поля.
function HasScriptOfType (type: TScriptType): Boolean — проверка того, определен ли для текущего поля
скрипт заданного типа.
function HasScriptWithID (id: Integer): Boolean — проверка того, определен ли для текущего поля скрипт с
заданным идентификатором.
procedure ExecuteScriptOfType (type: TScriptType) — исполнение скрипта заданного типа.
procedure ExecuteScriptWithID (id: Integer) — исполнение скрипта с заданным идентификатором.
procedure ReinitTree — обновление дерева в просмотрщике.
function GotoStruct (typeID: Integer; source: TDataSource; offset: Int64; options: TGotoStructOptions; params:
TParamList): TFieldNode — переход к структуре по указанному смещению. Функция имеет следующие параметры:

Тип
Параметр Значение
данных
typeID Integer Идентификатор шаблона структуры в базе данных. Для определения
шаблона на основе данных может быть использована константа
ID_AUTODETECT.

source TDataSource Источник данных для создаваемой структуры. Если осуществляется


переход на некоторое смещение в том же источнике данных, на котором
создано текущее поле, в этом параметре должен быть передан nil.

offset Int64 Смещение в источнике данных, к которому осуществляется переход.

options TGotoStruct Множество Pascal, содержащее 0 или более параметров, влияющих на


Options способ осуществления перехода:

gs_ResultNeeded Функция должна вернуть созданную


структуру в вызывающий скрипт (а значит,
дождаться создания целевой структуры). Если
данный параметр не указан, функция вернет
nil, не дожидаясь создания структуры.

gs_LogicalAddress Параметр offset является адресом на диске, а


не смещением в источнике данных.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 43
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101

Источником данных для создаваемой


1011010101100110011010101011010101111010111
11010101101101010100111110 gs_CreateWithinDrive
1101110110110011
0111011110
структуры будет карта всего диска. Данный
111101 параметр может использоваться в том случае,
если параметр source (или, если он не задан,
011
11
1
источник данных текущего поля) является
подмножеством карты некоторого диска.

params TParamList Список имен и значений целочисленных параметров для их


инициализации в создаваемой структуре до разбора структуры – таким
образом, значения параметров, инициализированные данным способом,
могут влиять на разбор структуры. Пример использования:
params := TParamList.Create;
try
params.AddInt64Param('SomeParam', 42);
fld.GotoStruct(SOME_ID, nil, someOffset, [], params);
finally
params.Free;
end;

Если параметр options в вызове функции содержит значение gs_ResultNeeded, то возвращаемым значением
функции будет созданная структура, в противном случае функция вернет nil.
В типичных случаях могут быть использованы «облегченные» версии функции:
procedure GotoField (typeId: Integer; offset: Int64);
function GotoField_Ext (typeId: Integer; offset: Int64): TFieldNode.
Первая из них не дожидается создания структуры и не возвращает значения, вторая возвращает управление
только после создания структуры, ссылка на которую становится результатом вызова функции. В обоих случаях
offset – смещение создаваемой структуры в источнике данных.
function GetBufferStructID (offset: Int64; size: Integer): Integer — определение идентификатора структуры
на основе size байтов данных по смещению offset на диске текущего источника данных.
function ReadInteger (dataType: TFld_Type; offset: Int64; offsetType: TOffsetType; dataOrder:
TFld_DataOrder): Int64 — чтение целого числа из источника данных по указанному смещению. Способ
интерпретации параметра offset зависит от значения параметра offsetType:
− ot_Prev — относительно конца текущего поля
− ot_Abs_Parent — относительно начала Parent
− ot_Abs_Start — относительно начала Owner
Допустимыми значениями параметра dataType являются st_Byte, st_Short, st_Word, st_SmallInt, st_DWord,
st_LongInt, st_QWord, st_Int64 (см. 1.6.3.3.1 «Перечисления»).
function CreateMap: TMap — создание объекта карты.
procedure ShowMap (map: TMap) — показ карты в стандартном окне Data Extractor.
procedure LockData — переход в режим работы с данными структуры/поля как с областью памяти.
Изменения, сделанные в данном режиме, не будут зафиксированы в источнике данных до тех пор, пока не будет
вызвана procedure UnLockData (которая вызывается автоматически при выгрузке поля из просмотрщика, но
может быть вызвана и раньше). Данный режим может быть полезен при необходимости внесения временных
изменений в данные перед разбором структуры – в этом случае следует вызывать LockData в скрипте
OnGetValue, после чего вносить требуемые временные изменения. Обратные изменения следует вносить в
скрипте OnSetValue.
function DriveID: Integer — получение идентификатора диска, с которого прочитано данное поле (если оно
прочитано с диска; если оно прочитано из источника данных, созданного каким-либо специальным способом,
функция сгенерирует исключение).
function VirtualToLogicalByteOffset (v: Int64): Int64,
function LogicalToVirtualByteOffset (v: Int64): Int64,

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
44 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
function VirtualToLogicalSector (v: Int64): Int64, 1011010101100110011010101011010101111010111
11010101101101010100111110
function LogicalToVirtualSector (v: Int64): Int64 — функции преобразования адресов. Под виртуальным 1101110110110011
0111011110
адресом понимается смещение в источнике данных, под логическим – адрес на диске. 111101
011

function GetParamByName (name: WideString): TFieldNode — получение параметра данной структуры по имени.
11
1

function GetParamGroupByID (id: Integer): TParamGroup — получение группы параметров (не обязательно
связанной с текущей структурой) по ID. Получение группы, не связанной с текущей структурой, может иметь
смысл в том случае, когда нужно проинициализировать какие-то параметры этой группы и сохранить ее по
смещению, на которое будет осуществлен переход – параметры группы, созданной для структуры, к которой
осуществляется переход, будут иметь эти сохраненные значения.
function GetOwnParamGroupByName (name: String): TParamGroup — получение группы параметров
(связанной с текущей структурой) по имени её шаблона.
function GetParamGroupByIDEx (id: Integer; const requiredParamIDs: array of Integer; const
requiredParamNames: array of String; out ok: Boolean): TParamGroup — получение группы параметров (не
обязательно связанной с текущей структурой) по ID, с проверкой, что необходимые параметры определены, и
отображением формы их определения, если нет. Значение выходного параметра ok может быть установлено в
false в одном из двух случаев:
1) искомая группа параметров не найдена;
2) один или несколько требуемых параметров не были инициализированы, и пользователь отказался
от их инициализации.
Таким образом, значение true параметра ok не гарантирует, что все требуемые параметры группы имеют значения.
function GetOwnParamGroupByNameEx (name: String; const requiredParamIDs: array of Integer; const
requiredParamNames: array of String; out ok: Boolean): TParamGroup — получение группы параметров
(связанной с текущей структурой) по имени её шаблона, с проверкой, что необходимые параметры определены,
и отображением формы их определения, если нет. Значение выходного параметра ok может быть установлено в
false в одном из двух случаев:
1) искомая группа параметров не найдена;
2) один или несколько требуемых параметров не были инициализированы, и пользователь отказался
от их инициализации.
Таким образом значение true параметра ok не гарантирует, что все требуемые параметры группы имеют значения.
function EnsureParamGroupParams (group: TParamGroup; const requiredParamIDs: array of Integer; const
requiredParamNames: array of String): Boolean — проверка, что необходимые параметры группы определены, и
отображение формы их определения, если нет. Результатом функции будет false, если один или несколько
требуемых параметров не были определены, и пользователь отказался от их определения. Таким образом,
результат функции true не гарантирует, что все требуемые параметры группы определены.
procedure StoreParamGroup (group: TParamGroup) — сохранение всех значений параметров группы для
текущей структуры. При отображении данной структуры (по данному смещению) в будущем эти параметры
будут проинициализированы сохраненными значениями.
procedure StoreParamGroupForVirtualOffset (group: TParamGroup; offset: Int64) — сохранение всех
значений параметров группы с привязкой этого набора значений к смещению в источнике данных.
procedure StoreParamGroupForLogicalOffset (group: TParamGroup; offset: Int64) — сохранение всех
значений параметров группы с привязкой этого набора значений к смещению на диске.
procedure AddVirtualPartition (offset: Int64) — добавление виртуального раздела с началом по указанному
смещению в источнике данных.
procedure CalcSelfCRC32 (var res: LongWord; maxSize: Int64) — подсчет контрольной суммы CRC32 для
данных текущей структуры/поля с опциональным ограничением размера. Для подсчета контрольной суммы всей
структуры/поля в параметре maxSize нужно передать константу SIZE_AUTODETECT.
procedure CalcDataCRC32 (var res: LongWord; offset: Int64; offsetType: TOffsetType; size: Int64) — подсчет
контрольной суммы CRC32 для данных размера size по смещению offset. Способ интерпретации параметра offset
зависит от значения параметра offsetType:

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 45
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
− ot_Prev — относительно конца текущего поля
1011010101100110011010101011010101111010111
11010101101101010100111110
− ot_Abs_Parent — относительно начала Parent
1101110110110011
0111011110
111101 − ot_Abs_Start — относительно начала Owner
011
1.6.3.3.3. Класс TContext
11
1

Класс TContext предназначен для

♦ вывода сообщений в протокол Data Extractor. Такие сообщения могут информировать пользователя о
наступлении определенных событий (например, о завершении работы скрипта) или о различных
проблемах разбора данных;
♦ проверки, запрошено ли прерывание текущего скрипта (например, по кнопке Stop в Data Extractor);
♦ управления индикатором прогресса операции.
Объект данного класса доступен через свойство Context класса TFieldNode.
Класс TContext предоставляет следующие методы и свойства:
procedure Debug (const text: WideString; log: Boolean; level: Integer; toLast: Boolean; kind: Integer) — вывод
сообщения в протокол. Назначение его параметров приведено в следующей таблице:

Тип
Параметр Значение
данных
text WideString Текст сообщения.

log Boolean В настоящий момент не используется – в данном параметре следует


передавать false.

level Integer Уровень важности сообщения. Протокол Data Extractor позволяет


фильтровать выводимые сообщения по их важности:

dl_None Сообщения с таким уровнем никогда не


выводятся в протокол Data Extractor

dl_Highest Наименее важные сообщения

dl_Higher Относительно неважные сообщения

dl_Normal Такие (и более важные) сообщения


отображаются в протоколе Data Extractor с
настройками по умолчанию

dl_Lower Сообщения повышенной важности

dl_Always Сообщения с таким уровнем всегда выводятся


в протокол Data Extractor

toLast Boolean Сообщение должно быть выведено без предварительного перевода строки,
т.е. образовать с предыдущим сообщением одну строку протокола.
Характер сообщения:
kind Integer
dk_Normal Информационное сообщение

dk_Error Ошибка

dk_Success Успех

procedure InitProgress (min: Int64; max: Int64) — инициализация индикатора прогресса некоторой
операции с заданными минимальным и максимальным значениями.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
46 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
procedure SetProgressPos (pos: Int64) — установка текущей позиции индикатора прогресса в диапазоне, 1011010101100110011010101011010101111010111
заданном параметрами вызова InitProgress. 11010101101101010100111110
1101110110110011
0111011110
procedure ClearProgress — очистка индикатора прогресса (по завершении операции). 111101
011

procedure Lock — сообщает среде исполнения скриптов о начале потенциально длительной операции,
11
1
которая может быть прервана методом Terminate (см. нижe). Не требуется для событийных скриптов, т.к. они
всегда выполняются в рамках такой операции.
procedure Unlock — сообщает среде исполнения скриптов об окончании потенциально длительной
операции. Каждому вызову Lock должен соответствовать парный вызов Unlock. Стандартный подход к
обеспечению такого соответствия выглядит следующим образом:
context.Lock;
try
...
finally
context.Unlock;
end;
property Locked: Boolean — позволяет определить, выполняется ли код в рамках потенциально длительной
операции, которая может быть прервана методом Terminate.
property Terminated: Boolean — позволяет определить, запрошено ли прерывание текущей операции.
Скрипту следует проверять значение этого свойства перед выполнением потенциально длительных действий, а
также в циклах, и прекращать исполнение, если данное свойство выставлено в true.
procedure Terminate — позволяет скрипту инициировать прерывание текущей операции. Таким способом
вызванный скрипт может проинформировать вызвавший скрипт о том, что текущая операция не может быть
выполнена и выполнение всей цепочки скриптов должно быть завершено.

1.6.3.3.4. Класс DataSource


Класс TDataSource является базовым классом источников данных и предоставляет следующие свойства:
Тип
Свойство Тип данных Значение
доступа
ByteCount RW Int64 Размер данных в байтах

1.6.3.3.5. Класс TMap


TMap представляет карту и является частным случаем TDataSource. Объекты данного класса могут быть
созданы с помощью функции CreateMap объекта TFieldNode. Для отображения карты в стандартном окне Data
Extractor предназначена процедура ShowMap, также предоставляемая классом TFieldNode. Для работы с
объектами карты предназначены следующие методы:
function Add (start: Int64; length: Int64; const about: WideString): Boolean;
function AddWithType (start: Int64; length: Int64; const about: WideString; chainType: Integer): Boolean —
добавление цепочки секторов в карту. Данный метод имеет следующие параметры:
Тип
Параметр Значение
данных
start Int64 Начальный сектор цепочки
length Int64 Количество секторов в цепочке
about WideString Дополнительная информация о цепочке
Тип цепочки:
chainType Integer
chn_Normal Обычная цепочка

chn_Absent Отсутствующая цепочка в разреженных


данных (таких как sparse files)

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 47
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
procedure Clear — очистка карты.
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
function VirtualToLogicalByteOffset (v: Int64): Int64,
0111011110
111101
011 function LogicalToVirtualByteOffset (v: Int64): Int64,
11
1
function VirtualToLogicalSector (v: Int64): Int64,
function LogicalToVirtualSector (v: Int64): Int64 — функции преобразования адресов. Под виртуальным
адресом понимается смещение в данной карте (в порядке добавления цепочек секторов), под логическим – адрес,
вычисленный на основании адресов, переданных в Add или AddWithType (в частном случае – адрес на диске).
Помимо перечисленных методов у объекта Map имеются следующие свойства:
Тип
Свойство Тип данных Значение
доступа
Name RW WideString Имя объекта карты

Count R Int64 Количество секторов в карте

1.6.3.3.6. Класс TParamGroup


Класс TParamGroup представляет группу параметров (см. 1.5. «Навигация по структурам», 1.6.2.7. «Группа
параметров»).
Для получения объектов этого класса и сохранения наборов значений параметров группы предназначены
методы класса TFieldNode, в классе же TParamGroup реализованы методы получения и установки значений
отдельных параметров группы, причем установка значения с помощью данных методов не приводит к
сохранению установленного значения в базе данных.
К методам получения и установки значений параметров относятся:
function Get<TYPE>_ByID(id: Integer): <TYPE>,
function Get<TYPE>_ByName(name: String): <TYPE>,
function TryGet<TYPE>_ByID(id: Integer; out v: <TYPE>): Boolean,
function TryGet<TYPE>_ByName(name: String; out v: <TYPE>): Boolean,
function Set<TYPE>_ByID(id: Integer; v: <TYPE>; ifNotDefined: Boolean): Boolean,
function Set<TYPE>_ByName(name: String; v: <TYPE>; ifNotDefined: Boolean): Boolean,
где <TYPE> соответствует каждому из типов

♦ Byte — целое число без знака размерности 1 байт;


♦ ShortInt — целое число со знаком размерности 1 байт;
♦ Word — целое число без знака размерности 2 байта;
♦ SmallInt — целое число со знаком размерности 2 байта;
♦ DWord — целое число без знака размерности 4 байта;
♦ LongInt — целое число со знаком размерности 4 байта;
♦ QWord — целое число без знака размерности 8 байтов;
♦ Int64 — целое число со знаком размерности 8 байтов;
♦ Single — вещественное число с плавающей точкой одинарной точности;
♦ Double — вещественное число с плавающей точкой двойной точности;
♦ DateTime — дата/время;
♦ Char — символ в кодировке ANSI;
♦ WideChar — символ в кодировке UTF-16;
♦ String — строка символов в кодировке ANSI;

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
48 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
♦ WideString — строка символов в кодировке UTF-16; 1011010101100110011010101011010101111010111
11010101101101010100111110

♦ Map — карта объекта, 1101110110110011


0111011110
111101
т.е. для типа Byte, например, данные методы будут выглядеть следующим образом: 011
11
1
function GetByte_ByID (id: Integer): Byte;
function GetByte_ByName (name: String): Byte;
function TryGetByte_ByID (id: Integer; out v: Byte): Boolean;
function TryGetByte_ByName (name: String; out v: Byte): Boolean;
function SetByte_ByID (id: Integer; v: Byte; ifNotDefined: Boolean): Boolean;
function SetByte_ByName (name: String; v: Byte; ifNotDefined: Boolean): Boolean;
Данные методы имеют следующие параметры:
Тип
Параметр Значение
данных
id Integer Идентификатор параметра
name String Имя параметра
ifNotDefined Boolean Установка значения только в том случае, если оно еще не установлено;
никаких действий в противном случае
Конкретному набору значений параметров группы может быть присвоено имя – это имя будет отображаться
в просмотрщике структур

Рис. 1.74. Имя группы параметров в просмотрщике структур


и списке инициализированных экземпляров групп параметров

Рис. 1.75. Список групп параметров


Для получения и установки имени экземпляра группы предназначено свойство
property Name: WideString.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 49
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101

1.6.3.4. Создание и использование скриптов


1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
Интерфейс создания и редактирования скриптов описан в разделе 1.6.2.5.
0111011110
111101
011
11 Существуют определенные правила и ограничения при работе со скриптовой моделью.
1
Как упоминалось ранее, во всех скриптах есть обязательный метод Main, который запускается на
выполнение автоматически и который нельзя удалять (в противном случае скрипт не будет скомпилирован и не
сможет запускаться на исполнение). Все методы, которые должны выполниться в ходе работы скрипта, должны
быть описаны за пределами метода Main, а вызываться должны внутри данного метода.
Особое внимание следует обратить на то, что вызываемые методы должны быть описаны раньше, чем тот
метод, из которого они будут вызываться.
Скриптовая модель не позволяет писать вложенные функции, поэтому они должны быть описаны за
пределами любых других процедур и функций и иметь собственные заголовки (function или procedure) и
собственные уникальные имена.
Также внутри процедур или функций нельзя объявлять именованные константы. Все они должны быть
описаны за пределами методов и находиться ниже заголовка «Program Event» и выше методов, в которых они
будут использованы.
Тело скрипта состоит из заголовка программы «Program Event» и тела программы (операторные
скобки begin..end). Между заголовком и телом программы Event описан метод Main. Данный метод
выполняется автоматически при работе скрипта и его не нужно помещать в операторные скобки begin..end
данной программы.

Рис. 1.76. Создание скрипта


Методу Main передается параметр aField типа Integer. В секции переменных данного метода объявлена
переменная fld типа TFieldNode. В строке 7 на Рис. 1.76 данной переменной присваивается значение поля, для
которого создан данный скрипт.
При использовании методов, в которых указывается имя поля или структуры, например GetNodeByName
или AppendFieldByName, необходимо помнить о том, что параметр имени чувствителен к регистру, т.е. имя
должно быть введено в том виде, в котором оно было сохранено в справочнике.
Иногда при запуске просмотрщика непосредственно после создания скрипта он может не отработать или
напротив структуры (или поля) не появится соответствующая иконка. Это происходит потому, что для
увеличения эффективности в процессе работы данная программа использует механизм кэширования и данные в
ней не обновляются. Для того, чтобы программа начала использовать новые данные, необходимо сбросить кэш:
кликнуть ПКМ по корневому каталогу Root дерева структур и выбрать «Clear cache».

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
50 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.77. Очистка кэша

1.6.3.4.1. Скрипт OnParse


Скрипт OnParse служит для создания динамической структуры – структуры, размер и состав полей которой
неизвестны на момент создания шаблона и определяются в процессе разбора. Если такой скрипт определен, поля
шаблона структуры игнорируются – за наполнение структуры отвечает данный скрипт.
Рассмотрим создание и работу скрипта типа OnParse на примере. Для этого в каталоге Samples создадим
структуру OnParseSample и добавим в нее поле TextField типа WideString.

Рис. 1.78. Шаблон структуры OnParseSample


Далее для структуры создадим скрипт типа OnParse.

Рис. 1.79. Пример создания скрипта типа OnParse

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 51
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
В данном скрипте считывается первый байт относительно начала структуры (методом ReadInteger) и на
1011010101100110011010101011010101111010111
основании его значения создается (методом AppendFieldByName) поле одного из трех типов:
11010101101101010100111110
1101110110110011
0111011110
111101
011
♦ Byte,
♦ TGUID из Library → UserTypes → UserTypes,
11
1

♦ TextField.
Создание поля каждого из этих типов по имени возможно потому, что типы являются соответственно
простым, библиотечным и дочерним для структуры (см. описание параметра typeName метода
AppendFieldByName).
В строке 23 размер создаваемой структуры устанавливается как сумма смещения и размера созданного поля.
В строках 25 – 30 демонстрируется использование типа EmptyBin из Library → UserTypes → UserTypes,
удобного в тех случаях, когда нужно отобразить некоторую дополнительную информацию, не считывая
дополнительных данных из источника. Поля данного типа по умолчанию имеют нулевой размер, и потому не
влияют на размер содержащей их структуры. В приведенном примере поле типа EmptyBin используется для
отображения контрольной суммы поля newField.
Результат разбора структуры для данных, начинающихся с байта со значением 2, представлен на рисунке
ниже.

Рис. 1.80. Структура OnParseSample

1.6.3.4.2. Скрипт OnAfterCreate


Скрипт типа OnAfterCreate относится к событийным и запускается автоматически после создания структуры
и добавления в нее всех необходимых полей. Данный скрипт используется для того, чтобы осуществить
дополнительные действия над структурой или полем, в том числе добавление новых полей в структуру.
Пример использования можно найти в структуре Boot_Ntfs. Ее скрипт OnAfterCreate служит для обновления
группы параметров NTFS, созданной просмотрщиком для данной структуры, с использованием полей
структуры. О группах параметров см. 1.5, 1.6.2.7.

Рис. 1.81. Пример использования скрипта OnAfterCreate


Реализация процедуры NTFS_UpdateParamGroupFromBoot находится в библиотечном скрипте
NTFS_Common и для данного примера несущественна.
Проверка в строке 10 гарантирует, что обновления группы параметров не произойдет, если структура
Boot_Ntfs, для которой вызван скрипт, является полем некоторой другой структуры. Эта проверка несколько
избыточна в данном случае – создания структур с полями типа Boot_Ntfs не предвидится – но является «хорошей
привычкой» при работе с группами параметров.

1.6.3.4.3. Скрипты OnGetValue и OnSetValue

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
52 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Скрипт OnGetValue позволяет подменить значение, прочитанное из источника данных, некоторым другим в 1011010101100110011010101011010101111010111
памяти, после чего это новое значение будет отображаться в просмотрщике и использоваться в вычислениях. 11010101101101010100111110
1101110110110011
0111011110
Скрипт OnSetValue выполняет операцию, обратную OnGetValue – он позволяет подменить значение поля в 111101

памяти значением, предназначенным для сохранения в источник данных.


011
11
1
В качестве примера использования данных скриптов рассмотрим структуру DOS_DateTime из каталога
Library → UserTypes → UserTypes.
В скрипте OnGetValue структуры DOS_DateTime происходит преобразование данных из DOS-формата
времени в формат, используемый просмотрщиком, и запись полученного значения в поле.

Рис. 1.82. Пример использования скрипта OnGetValue


В скрипте OnSetValue происходит обратное преобразование.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 53
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.83. Пример использования скрипта OnSetValue

1.6.3.4.4. Скрипт OnGetCaption


Скрипт типа OnGetCaption используется для того, чтобы изменить заголовок поля или структуры. Сделать
это можно и по-другому, присваиванием некоторой строки свойству Caption поля или структуры в скрипте
OnParse, OnAfterCreate или OnGetValue, но если изменение заголовка – единственное, что нужно сделать, то
скрипт OnGetCaption представляет собой более легковесный способ.
Потребность в изменении заголовка структуры может возникнуть, например, в ситуации, когда некоторое
глубоко вложенное поле имеет важное значение, которое желательно всегда иметь перед глазами.
В качестве примера рассмотрим структуру MFTRecord из FileSystems → NTFS.

Рис. 1.84. Структура MFTRecord

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
54 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Идентификатор структуры – поле MFTRecordId подструктуры Header. Чтобы избежать необходимости 1011010101100110011010101011010101111010111
раскрытия подструктуры для выяснения идентификатора, он отображается в заголовке структуры с помощью 11010101101101010100111110
1101110110110011
скрипта OnGetCaption. 0111011110
111101
011
11
1

Рис. 1.85. Пример использования скрипта OnGetCaption

1.6.3.4.5. Скрипт Jump


Скрипт Jump предназначен для перехода от структуры или поля к некоторой связанной структуре. Наиболее
типично определение данного скрипта для полей, описывающих смещение связанной структуры.

О том, что для структуры или поля определен скрипт Jump, говорит наличие кнопки напротив заголовка
структуры/поля.
В качестве примера рассмотрим переход от структуры Boot_Ntfs к таблице MFT.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 55
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.86. Структура Boot_Ntfs: переход к таблице MFT


Для этой цели определен скрипт Jump поля MFT_Cluster.

Рис. 1.87. Пример скрипта Jump


Логика перехода реализована в процедуре NTFS_GotoFieldAtCluster (см. Рис. 1.88), определенной в
библиотечном скрипте NTFS_Common. Данная процедура использует в своих вычислениях информацию,
хранящуюся в группе параметров (см. 1.5 «Навигация по структурам») NTFS и осуществляет вызовы методов,
описанных в разделах 1.6.3.3.2 «Класс TFieldNode» и 1.6.3.3.6 «Класс TParamGroup».
Реализация логики перехода в виде отдельной процедуры продиктована соображениями повторного
использования – та же логика используется в скрипте Jump поля MFT_Mirr_Cluster данной структуры.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
56 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.88. Реализация перехода

1.6.3.4.6. Скрипт FillMap


Скрипт FillMap предназначен для построения и отображения карты объекта, расположение которого
определено теми или иными полями структуры. Данный скрипт может быть определен как для структуры, так
и для поля.
О том, что для структуры или поля определен скрипт FillMap, говорит наличие кнопки напротив
заголовка структуры/поля.
В качестве примера рассмотрим построение карты раздела NTFS.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 57
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.89. Структура Boot_Ntfs: построение карты раздела


Для этой цели определен скрипт FillMap структуры Boot_Ntfs.

Рис. 1.90. Пример скрипта FillMap


Данный скрипт использует методы, описанные в разделах 1.6.3.3.2 «Класс TFieldNode» и 1.6.3.3.5 «Класс TMap».
Вызов метода ShowMap объекта TFieldNode приводит к отображению стандартного окна карты Data
Extractor (см. Рис. 1.91).

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
58 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.91. Отображение карты

1.6.3.4.7. Скрипт Actions


Скрипты типа Actions предназначены для выполнения различных действий по инициативе пользователя. Для
переходов и построения карт предназначены типы скриптов Jump и FillMap соответственно, но эти действия при
необходимости могут быть реализованы и скриптами данного типа (например, переходы по дополнительным
смещениям или построение дополнительных карт). Напротив поля или структуры, имеющих скрипты такого
типа, отображается значок , нажав на который, можно увидеть список всех доступных скриптов этого типа у
выбранного объекта и
♦ в режиме просмотра – запустить любой из них на исполнение,
♦ в режиме редактирования – перейти к редактированию любого из них.
В качестве примера рассмотрим скрипт Add virtual partition структуры Boot_Ntfs.

Рис. 1.92. Пример скрипта Actions


Данный скрипт создает новый виртуальный раздел со смещением, равным смещению данной структуры
Boot_Ntfs, для чего использует соответствующий метод объекта TFieldNode.
На рисунке ниже представлен результат работы скрипта – новый виртуальный раздел – в проводнике Data Extractor.

Рис. 1.93. Новый виртуальный раздел

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 59
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101

1.7. Использование просмотрщика структур для определения


1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
параметров RAID
0111011110
111101
011
11 Просмотрщик структур может быть полезен при работе с RAID для определения параметров массива, таких
как порядок участников и алгоритм ротации блоков. Далее будут рассмотрены методы определения
1

конфигурации массива по записям MFT и с помощью пользовательских файлов.

1.7.1. Способ 1. Определение конфигурации RAID по записям MFT


Определение конфигурации часто является самым сложным этапом при восстановлении данных с RAID.
Иногда эта задача дополнительно усложняется попытками «вылечить» массив деструктивными способами вроде
инициализации новой конфигурации, создания новых файловых систем и т.п.
Рассмотрим пример: RAID5 из 5 дисков, на котором была файловая система NTFS. Начало каждого
участника затерто из-за деструктивных попыток «лечения». Допустим, что уже известны размер блока (128
секторов) и начало страйпирования (0й LBA). Осталось определить порядок дисков и алгоритм ротации блоков у
RAID 5. Для этого очень хорошо подходят записи MFT. Попробуем найти их черновым восстановлением.

Рис. 1.94. Записи MFT на участнике RAID


Записи нашлись, их номера указаны в поле «comment» в формате:
[№ первой записи .. № последней записи] (длина последовательности в записях).
В правильной конфигурации они должны следовать друг за другом непрерывно. Попробуем собрать именно
такую конфигурацию.
Для начала надо понять, где (примерно) на RAID будут лежать записи MFT. Для оценки можно
воспользоваться расчетом 1 907 968 * 4 = 7 631 872, где 1 907 968 – начало записей на одном из участников, а 4
– коэффициент пересчета для RAID5 из 5 дисков. Можно оценивать и с большими допущениями, главное
«попасть» в таблицу.
Для упрощения расчетов можно воспользоваться RAID-калькулятором. В нем нужно указать все известные
параметры. Алгоритм и индекс участника можно оставить по умолчанию.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
60 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.95. RAID-калькулятор


Теперь открываем форму создания нового RAID, устанавливаем все известные параметры, очищаем
таблицу. Настраиваем форму так, чтобы были открыты вкладки «Проводник», «Таблица», «Структура» (из
нижней панели). Должно получиться как на следующем рисунке.

Рис. 1.96. Форма определения конфигурации массива

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 61
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Перемещаясь по ячейкам таблицы, мы можем увидеть, как меняется содержимое вкладки «структура». Там
1011010101100110011010101011010101111010111
отображаются поля записи MFT – оценка оказалась правильной, а разборщик структур определил, как надо
11010101101101010100111110
1101110110110011
отобразить данные. Нас прежде всего интересует связь между ячейкой и номером записи (поле MFTRecordId или
0111011110
111101
просто ID).
011
11
1

Рис. 1.97. Ячейка таблицы и номер записи MFT


В данном примере в строке 1 найдены записи с номерами 192, 256, 320, 384 и одна ячейка, не содержащая
запись. У такого RAID5 в строке 1 должны быть блоки данных 4, 5, 6, 7 и один блок XOR. Легко догадаться, что
блоки данных надо выстроить в порядке возрастания номера записи (192 – 4, 256 – 5, 320 – 6, 384 — 7), а ячейка
без записи – это XOR, и мы получаем следующую матрицу:

Рис. 1.98. Строка 1 заполнена


Перемещаясь дальше по ячейкам, легко заполнить всю таблицу до конца. Если включена опция сравнения
со стандартными конфигурациями, то комплекс «угадает» конфигурацию уже через пару блоков.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
62 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.99. Конфигурация определена


RAID массив собран. Если запустить черновое восстановление на нем, то можно убедиться в правильности
собранной конфигурации — записи MFT должны выстроиться друг за другом. В нашем примере получилась
область из более чем 70 000 записей, что больше чем 50 полных периодов — т. е. матрица RAID полностью
подтвердилась более чем 50 раз.

Рис. 1.100. Черновое восстановление на RAID


Итак, работа по определению конфигурации выполнена – дальше нужно искать разделы и применять
методы логического анализа файловых систем – например, поиск структур NTFS.
Примечание 1. Распространена ситуация, когда на RAID хранятся виртуальные машины с NTFS. В этом
случае методика полностью повторяется — предполагаем, что найдется большой непрерывный участок таблицы
MFT, собрав который, можно определить конфигурацию.
Примечание 2. Методика определения параметров RAID по записям MFT не нова и может быть известна
опытным специалистам. Все то же самое можно сделать с помощью HEX-редактора и тетрадки с ручкой. Но
описанные выше инструменты позволяют существенно упростить решение этой задачи.
Такая же методика применима, например, к файловой системе VMFS. В ней большинство служебных
структур содержат поле Position – байтовое смещение от начала раздела. Или к потоковым видеофайлам,
которые содержат метку времени. Эти поля можно использовать так же, как номер записи в таблице MFT.

1.7.2. Способ 2. Определение конфигурации RAID с помощью файлов


Иногда определение конфигурации RAID является настоящей головоломкой. Один из подходов к ее
решению – это использование файлов пользователя. Идея достаточно простая: если перед нами два варианта
конфигурации, в первом из которых файл открывается полностью, а во втором открывается с ошибкой, то
очевидно, что первый вариант конфигурации может быть правильным, а второй – нет. Выбирая варианты по
данному признаку, во многих случаях можно определить конфигурацию RAID однозначно.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 63
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101

1.7.2.1. Немного теории


1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
Возьмем для примера zip-архивы. Содержимое файла zip можно разделить на 2 категории:
0111011110
111101
011
11
1

Рис. 1.101. Структура zip-архива с 2мя файлами внутри


♦ метаданные zip – различные структуры, которые описывают содержимое архива: имена сжатых
файлов, способ сжатия, размеры до и после сжатия и тому подобное;
♦ сжатые данные файлов, хранящихся внутри архива.
Для наших целей метаданные zip очень удобны:

♦ их легко проверить – у каждой структуры есть сигнатура (например, 0x504B0304 у LocalFileHeader);


♦ их легко найти – структуры идут либо сразу друг за другом, либо между ними находятся сжатые
данные, размер которых известен.
Метаданные zip являются чем-то вроде «контрольных точек», с помощью которых можно судить о
целостности файла. Подобные точки можно выделить и у многих других типов файлов – например, в файлах doc.
Архивы zip были выбраны как удобный пример, но далеко не единственный.

Рис. 1.102. Zip-архив в просмотрщике структур


Вернемся к RAID-массивам. Данные массива разбиваются на равные блоки и распределяются по
дискам-участникам в соответствии с некоторым законом. Для всех «классических» RAID, кроме JBOD,
такой закон периодичен и легко описывается с помощью таблицы (мы еще часто называем ее «матрицей
функционирования массива»):

Рис. 1.103. Матрица функционирования для RAID5 LS


Одна ячейка – это один блок. Каждому участнику соответствует столбец. Белые ячейки с числами – блоки
данных, из которых формируется пространство RAID. Числа указывают порядок блоков. Блоки с информацией
для восстановления выделены цветом и содержат название алгоритма создания этих блоков (и восстановления
данных с их помощью). В случае RAID5 это XOR.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
64 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
В большинстве случаев задача определения конфигурации сводится к задаче заполнения пустой таблицы (т. е.
1011010101100110011010101011010101111010111
определения закона следования блоков), ячейка за ячейкой. Для этого хорошо подходят большие непрерывные файлы, 11010101101101010100111110
1101110110110011
у которых контрольные точки с большой вероятностью будут попадать в разные ячейки таблицы. Надо лишь 0111011110
111101
расставить блоки данных массива так, чтобы все контрольные точки файла попали на свое место. Просмотрщик 011
структур в Data Extractor позволяет делать это в полуавтоматическом режиме для многих типов файлов. 11
1

Далее описаны сценарии использования файлов для определения конфигурации RAID.

1.7.2.2. Уточнение конфигурации с помощью файла


Очень часто на практике возникает ситуация, когда мы уже начали определять конфигурацию RAID,
поставили несколько блоков данных с помощью, например, метаданных диска и файловых систем, но
однозначно определить конфигурацию RAID этими методами не удалось.
Рассмотрим такой случай с RAID5 из 5 дисков и размером блока 128 секторов.

Рис. 1.104. Частично заполненная таблица


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

Рис. 1.105. Результаты чернового восстановления на RAID


В нашем случае нашлось несколько архивов и изображений. Все они повреждены (красная отметка возле
LBA). Как раз такие нам и нужны — целый («зеленый») файл ничего нового о RAID не скажет. Делаем экспорт
результатов в виртуальную файловую систему и возвращаемся к форме создания RAID. (Примечание: экспорт
работает с учетом фильтра, а фильтром можно исключить целые файлы, чтобы в дальнейшем было проще).

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 65
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.106. Просмотр файлов из виртуальной ФС


Для дальнейшей работы нам нужны вкладки «Проводник», «Таблица» и «Структура» (на нижней панели). В
созданной виртуальной файловой системе выберем файл, который будем использовать для уточнения
конфигурации RAID – на Рис. 1.106 выбран zip-архив. На нижней вкладке «Структура» виден перечеркнутый
восклицательный знак ( ), означающий, что при разборе произошла ошибка. У этой ошибки могут быть
различные причины: файл поврежден, фрагментирован или очередная структура файла находится в еще не
поставленном блоке данных. Для наших целей подходит последний случай – поврежденные и
фрагментированные файлы не позволят нам уточнить конфигурацию массива, и мы будем вынуждены найти
другой файл, не поврежденный и не фрагментированный.
Вместо вкладки «Проводник» откроем вкладку структура на левой верхней панели, чтобы подробней
разобраться с этим файлом.

Рис. 1.107. Верхняя вкладка «Структура» для просмотра содержимого файла на RAID, нижняя вкладка для
просмотра структур на дисках по текущему смещению

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
66 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Мы видим, что в архиве были найдены 3 структуры LocalFileHeader, после чего разбор файла остановился с
1011010101100110011010101011010101111010111
ошибкой. Строка ErrorSignature имеет смещение, по которому ожидалась, но не была найдена, корректная для 11010101101101010100111110
1101110110110011
zip-файла сигнатура. Если выделить ее, то будет выполнен пересчет этого смещения для поиска на участниках. 0111011110
111101

В нашем примере следующая структура должна находиться в 4м блоке, которого еще нет в таблице. Этот блок
011
11
должен находиться в одной из ячеек в строке 1. Выделяя блок за блоком в этой строке, мы будем видеть в нижней 1

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

Рис. 1.108. Данные из ячейки D1 не подходят


Данные для ячейки E1 удалось успешно интерпретировать как еще один LocalFileHeader. Такая ячейка
оказалось единственной, поэтому можно смело обозначать ее как 4й блок данных.

Рис. 1.109. Данные из ячейки E1 успешно интерпретируются как очередной LocalFileHeader


Мы поставили новый блок данных, т. е. текущая конфигурация RAID была изменена. Надо обновить
структуру. Более того, комплекс обнаружил, что такая расстановка блоков может быть только у RAID 5 LS и
автоматически расставил еще несколько блоков.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 67
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.110. Обновление структуры


Теперь мы видим, что появилась еще одна запись LocalFileHeader – это результат установки 4го блока
данных. Однако, файл все равно не раскрывается до конца, и мы можем использовать его дальше.

Рис. 1.111. Конфигурация после установки 4го блока данных


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

1.7.2.3. Как начинать с пустой таблицей и файлом, найденным на одном


из участников
В предыдущем примере мы начинали с уже частично заполненной таблицы. Но иногда на восстановление
попадают массивы, которые пытались «лечить» деструктивными методами, например, запуская ребилд с новыми
параметрами или форматируя в новую файловую систему. У таких массивов переписано начало каждого
участника и бывает трудно начать заполнение таблицы по дисковым метаданным и метаданным файловых
систем.
Как раз в таких случаях очень эффективным оказывается метод сборки по пользовательским файлам. Пусть
нам надо собрать тот же RAID, но мы будем начинать с пустой таблицы. Метод почти такой же, как и в
предыдущем случае, но есть отличия, которые следует обговорить.
В результатах чернового восстановления выберем файл, относительно которого мы знаем, что он из
«старой» конфигурации, а не из той, что возникла в попытках «лечения».

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
68 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.112. Результаты чернового восстановления на участнике RAID


Пусть это «красный» zip-архив на LBA 496 944 на участнике E (его номер в оригинальном RAID нам еще не
известен). С помощью несложных расчетов легко понять, что этот архив попадает в строку №2 таблицы:
(FileOnDiskLBA div BlockSize) mod RowCount = (496 944 div 128) mod 5 = 2
А его LBA на RAID будет где-то рядом с 1 987 776:
FileOnDiskLBA * (DriveCount – 1) = 1 987 776
Посчитать точно мы не можем, поскольку нам неизвестны все параметры.

Рис. 1.113. Ячейки в строке №2 у RAID5 из 5 дисков


Независимо от алгоритма у RAID5 из 5 дисков в строке №2 находятся следующие блоки данных: 8, 9, 10 и
11. На один из них и попадает найденный нами zip-архив, но мы не знаем точно, на какой именно. Выберем
любой, например, 8 и поставим его в таблице. Скорей всего мы не угадали, но в дальнейшем мы это учтем. Наша
цель сейчас – просто получить этот файл в пространстве данных RAID.

Рис. 1.114. Блок 8


Запустим черновое восстановление на RAID от LBA 1 900 000, чтобы найти тот же архив, но уже на
текущем RAID.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 69
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.115. Результаты чернового восстановления на временном RAID, где установлен только блок 8
В нашем случае архив нашелся на LBA = 1 987 632. Выполним экспорт результатов в виртуальную
файловую систему, и вернемся к сборке массива.
Перед тем как расставлять блоки с помощью этого файла, необходимо включить опцию учета конфигураций
со сдвигом. При сравнении текущей конфигурации со стандартными комплекс будет учитывать, что выбранный
нами блок 8 на самом деле может быть блоком 9, 10 или 11.

Рис. 1.116. Включение опции учета конфигураций со сдвигом


Дальше процесс расстановки блоков по контрольным точкам файла будет почти такой же, как в
предыдущем случае. Однако будут некоторые отличия от «нормальной» сборки, когда не учитывается
возможность сдвига:

♦ некоторые блоки будут попадать не в свою строку. Например, в нашем случае блок 3 оказался в
строке 1, когда должен находиться в строке 0;
♦ в списке подходящих конфигураций появятся конфигурации со сдвигом, например, L5LS>1 –
конфигурация со сдвигом в один блок (блок 8 на самом деле является блоком 9);
♦ кандидаты, подходящие для текущего блока с учетом сравнения со стандартными конфигурациями
(ячейки обведенные серым), могут располагаться в нескольких строках и их может быть больше.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
70 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.117. Некоторые особенности при определении конфигурации со сдвигом


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

1.7.2.4. Е ще один способ начинать с пустой таблицы


Предыдущий способ хорош, если мы уже нашли большой непрерывный файл с множеством контрольных
точек на одном из участников. Но не всегда это удается, и тогда приходится перебирать множество разных
файлов и выполнять расчеты для каждого, что утомительно. В таких случаях можно упростить и оптимизировать
процесс, однако надо быть аккуратным, чтобы не запутать самого себя.
Итак, пусть нам надо собрать все тот же RAID, и мы снова решили воспользоваться пользовательскими
файлами, но не хотим искать подходящий файл отдельно на каждом участнике.
Мы собираем RAID5 из 5 дисков с размером блока 128 секторов. Порядок дисков и алгоритм нам
неизвестны, т. е. неизвестно заполнение таблицы. Выберем эти параметры произвольным образом. Если мы при
этом угадаем правильную конфигурацию, то в последующих шагах не будет необходимости, так что будем
считать, что выбрали неправильную конфигурацию.
Запустим на таком RAID черновое восстановление и подождем, пока не наберется побольше потенциально
подходящих файлов. Главное отличие от предыдущего метода в том, что мы будем искать данные сразу на всех
дисках и нам не надо будет делать пересчет в пространство секторов RAID.

Рис. 1.118. Черновое восстановление на RAID с произвольно выбранной конфигурацией

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 71
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Экспортируем результаты в виртуальную файловую систему и вернемся к форме определения
1011010101100110011010101011010101111010111
конфигурации. Очистим таблицу и включим опцию учета конфигураций со сдвигом.
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 1.119. Виртуальная ФС


Рассмотрим отдельно от остальных один из файлов виртуальной ФС. У такого файла уже есть положение в
RAID, он попал в свою строку (с точностью до возможного сдвига), и теперь требуется определить нужный блок
– в этом может помочь просмотрщик структур (внизу), в котором для нужного блока отобразится структура
правильного типа. Дальнейшая расстановка блоков с использованием данного файла проводится точно так же,
как в предыдущем примере.
Однако важно понимать, что если мы продолжим собирать конфигурацию с другим файлом из этой
виртуальной ФС, то скорей всего совершим ошибку. Мы получили эту ФС после анализа неправильной
конфигурации, поэтому у каждого файла будет свой сдвиг относительно правильной конфигурации; например, у
первого архива 1 блок, а у второго – 2 блока. Если расставить все заголовки файлов из виртуальной ФС, то
получим ту самую заведомо неправильную конфигурацию, с которой начали.
Чтобы не попасть в такую ловушку, необходимо придерживаться следующих правил:
♦ если таблица пустая, то мы можем начинать с любым файлом (учет конфигураций со сдвигом должен
быть включен); чем больше будет выбранный файл, тем выше вероятность построить конфигурацию
RAID без использования дополнительных файлов;
♦ если таблица частично заполнена, то можно использовать только те файлы, заголовки которых уже
попали в свой блок;
♦ если возможности файлов исчерпаны, а конфигурация не собрана, можно заново запустить черновое (уже для
текущей конфигурации), выполнить экспорт и работать со всеми файлами уже из новой виртуальной ФС.

2. Параллельный просмотр источников данных


2.1. Назначение
Режим параллельного просмотра источников данных предназначен для одновременного просмотра и
редактирования данных из нескольких источников в шестнадцатеричном представлении и в виде структур (см.
раздел 1 «Просмотрщик структур»). Данный режим поддерживает синхронную прокрутку данных, сравнение с
возможностью перехода к предыдущему/следующему отличию, поиск данных.

2.2. Варианты вызова


2.2.1. Data Extractor
В Data Extractor параллельный просмотр доступен для цепочек карты объекта (не более восьми):

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
72 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 2.1. Параллельный просмотр цепочек карты

2.2.2. Data Extractor RAID Edition


В Data Extractor RAID Edition параллельный просмотр участников доступен в проводнике для узлов типа RAID:

Рис. 2.2. Параллельный просмотр цепочек карты

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 73
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Также возможен параллельный просмотр участников массива в форме создания RAID:
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 2.3 Параллельный просмотр участников RAID

2.2.3. PC-3000 Flash


В PC-3000 Flash параллельный просмотр доступен для цепочек карты объекта (см. 2.2.1), а также для всех (Рис.
2.4) и для выбранных (Рис. 2.5) ячеек строки графа преобразований.

Рис. 2.4 Параллельный просмотр ячеек строки графа преобразований

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
74 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 2.5 Параллельный просмотр выбранных ячеек графа преобразований

2.3. Главное окно


Внешний вид главного окна режима представлен на Рис. 2.6.

Рис. 2.6 Интерфейс режима параллельного просмотра источников данных

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 75
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
В правой части окна можно видеть HEX-редакторы, по одному для каждого из просматриваемых
1011010101100110011010101011010101111010111
источников данных. Один из редакторов активен, в нашем примере – первый. Клик ЛКМ в области другого
11010101101101010100111110
1101110110110011
редактора сделает активным его.
0111011110
111101

В левой части окна расположен просмотрщик структур, отображающий данные активного источника в виде
011
11
1
структуры. Внешний вид просмотрщика структур и его связь с активным HEX-редактором не отличаются от
таковых в режиме просмотра структур, описанном в разделе 1.
Между просмотрщиком структур и областью HEX-редакторов находится панель управления источниками
данных, позволяющая отключать отображение части источников и менять взаимное расположение
соответствующих HEX-редакторов (с помощью Drag and Drop).

Рис. 2.7 Интерфейс режима параллельного просмотра источников данных: управление источниками
Вверху расположена панель инструментов режима, элементы которой будут рассмотрены далее.

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

Кнопки и управляют видимостью просмотрщика структур и панели управления источниками


данных соответственно.

Рис. 2.8 Интерфейс режима параллельного просмотра источников данных со скрытыми просмотрщиком
структур и панелью управления источниками

Кнопка включает режим размещения HEX-редакторов по горизонтали. В данном режиме ширина


каждого редактора выставляется в оптимальное значение, но может быть изменена: для этого нужно
переместить границу HEX-редактора с помощью ЛКМ.

Рис. 2.9 Изменение размера HEX-редактора


Если HEX-редакторы не помещаются в отведенной для них области, под ними появляется полоса
прокрутки.

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
76 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
Кнопка включает режим размещения HEX-редакторов «плиткой». В данном режиме размеры 1101110110110011

редакторов не могут быть изменены.


0111011110
111101
011
11
1

Рис. 2.10 Размещение HEX-редакторов «плиткой»

Кнопка включает синхронную прокрутку данных: при изменении текущего смещения в любом HEX-
редакторе смещения в остальных HEX-редакторах изменяются на ту же величину. Нужно подчеркнуть, что
смещения в разных редакторах могут различаться – можно сравнивать, например, начало одного источника данных
с некоторым участком другого источника, не находящимся в начале, и «прокручивать» оба участка синхронно.
Для установки смещений во всех HEX-редакторах в одно и то же значение – значение смещения в активном

редакторе – служит кнопка .

Кнопка включает режим сравнения данных. В данном режиме различия выделяются цветом, причем

♦ в активном редакторе более темным цветом выделяются различия со всеми источниками данных;
если же в каком-то из источников по соответствующему смещению находятся те же данные, что и в
активном источнике, цвет выделения будет светлее;
♦ в неактивном редакторе выделяются только отличия от данных в активном редакторе.

Рис. 2.11. Выделение различий

Переходы к предыдущему и следующему различию доступны по кнопкам и , а также из


контекстного меню HEX-редактора и по «горячим клавишам».

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 77
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 2.12. Контекстное меню HEX-редактора: переходы к различиям

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

Рис. 2.13. Данные в шестнадцатеричном и текстовом представлениях

Кнопка служит для настройки внешнего вида HEX-редакторов.

Рис. 2.14. Настройка внешнего вида HEX-редакторов

Поиск данных доступен по кнопке на панели инструментов режима, а также из контекстного меню
HEX-редактора и по «горячим клавишам».

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
78 www.acelab.ru
РС-3000 UDMA 
 ACELab Data Extractor
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
1011010101100110011010101011010101111010111
11010101101101010100111110
1101110110110011
0111011110
111101
011
11
1

Рис. 2.15. Контекстное меню HEX-редактора: поиск

Искомые данные могут быть введены в шестнадцатеричном или текстовом представлении, а в качестве
диапазона поиска может быть задан как активный источник данных, так и все отображаемые. По скрытым (с
помощью панели управления источниками) источникам данных поиск производиться не может.

Рис. 2.16. Поиск

Запущенный поиск может быть прерван кнопкой . Данная кнопка может служить также для
прерывания поиска различий и разбора структур.

2.4. HEX-редактор
Основные возможности HEX-редактора рассмотрены в разделе 1 «Просмотрщик структур», поэтому
остановимся только на особенностях HEX-редактора данного режима.

Рис. 2.17. Интерфейс HEX-редактора

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
www.acelab.ru 79
РС-3000 UDMA 
Data Extractor ACELab
01010101100110101010110011010101011001101010101100110101010110011010101011001101010101100110
100110101010110011010101011001101010101100110101010110011010101011001101010101100110101010110011010101011011010101011
10101010110011010101011011010101001101010100110101101101101010100101
Кнопки и служат для сохранения и отмены внесенных изменений. Они активны только тогда, когда
1011010101100110011010101011010101111010111
11010101101101010100111110
источник данных содержит несохраненные изменения (см. Рис. 2.17 выше).
1101110110110011
0111011110
111101
011 По кнопке доступны дополнительные настройки редактора:
11
1
♦ переключение между секторной и байтовой адресацией (аналогично кнопке , описанной в разделе 1.3.1.2);
♦ задание величины перехода, выполняемого кнопками и .

Рис. 2.18. Задание величины перехода

2.5. Определение блоков избыточности


В случае, когда содержимое текущего сектора одного из источников является результатом функции XOR
над данными в текущих секторах остальных источников, информация об этом выводится в панели инструментов
главного окна (см. Рис. 2.19). Т.к.
A = XOR (B, C, D) ⇔ B = XOR (A, C, D) ⇔ C = XOR (A, B, D) ⇔ D = XOR (A, B, C),
то используется запись
XOR: A, B, C, D

Рис. 2.19. Определение XOR

2.6. PC-3000 Flash: отображение служебной информации


В PC-3000 Flash HEX-редакторы помимо данных отображают служебную информацию текущего сектора.

Рис. 2.20. Служебная информация

Техническая поддержка: ts.acelab.ru, pc-3000support@acelab.ru


(863) 278-50-30, 278-50-40
80 www.acelab.ru

Вам также может понравиться