вторник, 5 февраля 2013 г.

формат sfpdf

Все нижеизложенное относится только к старым версиям просмотрщика на основе Foxit Reader и StarForce Reader 2.0.x.x (например, 2.0.6.1).
Появились документы, ккоторые можно просмотреть только с помощью StarForce Reader 3.3.x (текущая версия 3.3.96).
С ними такой способ не работает: в памяти процесса расшифрованный документ целиком не хранится.

 Принесли некий диск с "КАРДИОНЕВРОЛОГИЯ
Сборник статей и тезисов II Национального конгресса «Кардионеврология»"
Попросили напечтать несколько статей.

Оказалось, однако, что на диске не pdf, а некое поделие от StarForce (от той самой StarForce, что делала защиту для игрушек путем установки своего драйвера, который в т.ч. проверял ключ на CD, и х.з. чем еще потенциально мог заниматься :(  )

Идея защиты контента такая:
  при [авто]запуске приложения с диска, это самое приложение проверяет ключ на CD и распаковывает sfpdf в pdf (в памяти: на диске временных файлов не нашлось),
После этого, для распакованного файла запускает Foxit PDF Reader, который также находится на CD.
Без диска, естественно, контент не посмотришь.
Из reader-а документ можно только смотреть, нельзя копировать, нельзя печатать.

Но напечатать-то надо...
К счастью, выяснилось, это защита sfpdf  "от добрых людей".

Методика извлечения контента очень простая.
1. запускаем приложение с диска -> получаем запущенный экземпляр Foxit PDF Reader.
2. запускаем process explorer (из пакета sysinternals)
3. из procexp делаем полный дамп процесса foxit pdf reader.
4. в дампе находим %PDF-1.6 .... %EOF\x0d\x0a, и сохраняем этот фрагмент в отдельный файл с расширением .pdf
5. полученный pdf документ можно просматривать и печатать из любого pdf viewer-a.
6. если сам pdf защищен от печати, то, как вариант http://www.freemypdf.com/. Естественно, документы ДСП для снятия ограничений  туда лучше не совать :)