Зачем PDF вообще сценарии
PDF поддерживает JavaScript со времён Acrobat 3. Именно он заставляет форму складывать столбец, отклонять неверно введённую дату или блокировать поле, пока не поставлена галочка. Он же делает вредоносный PDF достойным отправки.
Большинство инструментов, обещающих обнаружить JavaScript в PDF, смотрят только в /Names /JavaScript. Это хранилище уровня документа, и в настоящей деловой форме оно обычно пусто. Интересный код привязан к конкретным полям.
Все места, где идёт поиск
/Names /JavaScript— дерево имён уровня документа. Это дерево, а не список: тот, кто читает только корневой массив, ничего не найдёт в файле с большим числом сценариев./OpenAction— срабатывает в момент открытия документа, ещё до первого прочитанного слова.- Дополнительные действия документа — перед закрытием, до и после сохранения, до и после печати.
- Действия страницы — при открытии и закрытии страницы.
- Действия аннотаций — действие
/Aссылки или кнопки, а также вход и выход мыши, нажатие, отпускание, получение и потеря фокуса. - Действия полей формы — нажатие клавиши, форматирование, проверка и расчёт. Именно здесь находится код любой формы, которая что-то делает.
/AcroForm /CO— порядок расчёта, определяющий, какая из двух зависимых сумм побеждает.
Цепочки действий через /Next прослеживаются: остановившийся на первом звене прочтёт безобидную часть и пропустит передачу управления.
Наблюдения, а не приговоры
Вызовы вроде app.launchURL, this.submitForm, this.exportDataObject, Net.HTTP, eval и длинные цепочки escape-последовательностей \uNNNN отмечаются как повод прочитать сценарий. Ни один из них ничего не доказывает: законный авансовый отчёт вызывает submitForm, а законный шаблон — util.printf. Отметка лишь указывает, куда смотреть.
Ничего не выполняется
Сценарии читаются из графа объектов как текст и отображаются. Они никогда не вычисляются, не внедряются в страницу и не загружаются по сети. Скопируйте один, сохраните как .js или заберите все в ZIP вместе с отчётом JSON.
Конфиденциальность
Файл полностью разбирается в вашем браузере и никуда не загружается — что особенно важно, когда изучаемый файл как раз и есть тот, которому вы не доверяете.
Tiny Online Tools







