Автор Тема: Идентификатор пользователя внутри PDF  (Прочитано 5496 раз)

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
Доброго дня!
Прошу ликбеза в следующем вопросе: возможна ли запись некоего идентификатора пользователя, скачавшего файл pdf, размещаемая внутри этого файла при нажатии на кнопку скачивания и позволяющая однозначно этого пользователя идентифицировать? Ключевые слова для поисковой системы что-то в голову не приходят, уж простите - в основном натыкаюсь на программы взлома паролей pdf, а не на размещение в нём некоей скрытой информации.
Можно ли избавиться от этой информации, если открыть такой pdf программой просмотра и напечатать на принтер cups-pdf?

Вопрос возник потому, что нашей школе на днях заблокировали аккаунт в системе СТАТГРАД из-за того, что в интернете был размещён файл с диагностической работой, якобы скачанный под нашими школьным аккаунтом. По словам представителей этой организации - ответственный за работу с этой системой не имеет права передавать учителю-предметнику файлы с работой - только  распечатку.
Научить нельзя, научиться можно.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 159
    • Домашняя страница
Андрей Черепанов (cas@)

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 567
Водяные знаки это не всё, что возможно.
Каждый документ pdf содержит идентификатор (в конце файла). Можно посмотреть в текстовом редакторе. Если получаете файл на сервере с авторизацией, возможно формирование файла с вашим уникальным идентификатором. Исправить идентификатор тем-же текстовым редактором не получится, не совпадёт контрольная сумма и файл будет считаться повреждённым. Насчёт печати в pdf файл посмотрю позже.

...Можно ли избавиться от этой информации, если открыть такой pdf программой просмотра и напечатать на принтер cups-pdf?
...
Если не используется видимый водяной знак, то от скрытой информации можно избавится открыв файл в gimp-е (со сглаживанием) и сохранив как картинку. При желании эту картинку можно прогнать через OCR и/или в pdf потом закатать. При преобразованиях уйдут также и steg-и.
« Последнее редактирование: 14.03.2014 20:04:20 от stranger573 »

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
http://tex.stackexchange.com/questions/18943/how-to-add-an-invisible-watermark-to-pdf-documents
Познавательно, спасибо!

Водяные знаки это не всё, что возможно.
Каждый документ pdf содержит идентификатор (в конце файла). Можно посмотреть в текстовом редакторе. Если получаете файл на сервере с авторизацией, возможно формирование файла с вашим уникальным идентификатором. Исправить идентификатор тем-же текстовым редактором не получится, не совпадёт контрольная сумма и файл будет считаться повреждённым. Насчёт печати в pdf файл посмотрю позже.
Буду признателен, если посмотрите печать. И файлы посмотрю, попрошу у коллеги из другой школы такой же на сравнение.
Научить нельзя, научиться можно.

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 567
...Можно ли избавиться от этой информации, если открыть такой pdf программой просмотра и напечатать на принтер cups-pdf?
...
Посмотрел. При печати в файл pdf (использовал evince и встроенную печать и cups-pdf) структура документа перестраивается, теги и ID перезаписываются. Если информация скрыта в этой части, то от неё таким способом избавиться можно. Однако, способов пометить файл есть много и от всех меток гарантированно избавиться вряд-ли получится. Это как щит и меч, усовершенствуете меч — будет усовершенствован и щит. К тому-же, если вы сдаёте эти файлы в электронном виде, то перепечатанные у вас могут и не принять. Лучше, конечно, соблюдать условия на которых вы их получаете.

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 242

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 567
http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
Попробуйте
pdftk есть в репозиториях.
Тоже никакой гарантии, что можно найти все метки.
« Последнее редактирование: 16.03.2014 12:13:33 от stranger573 »

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
К тому-же, если вы сдаёте эти файлы в электронном виде, то перепечатанные у вас могут и не принять. Лучше, конечно, соблюдать условия на которых вы их получаете.
Не - мы их не сдаём,  только получаем. Отчёты мы высылаем в виде .csv, сгенерированном специальной формой в формате электронной таблицы.
Соблюдать условия не хочется и не всегда получается:
1) Они поставили условие, что ответственный должен отдать учителю не файл, а распечатку заданий.
Это налагает обязательное требование наличия принтера и копира для создания копий в одном месте (у ответственного). Представляете - 115 выпускников 9-го класса пишут диагностику ГИА по, например, русскому. Каждый вариант на 8-ми листах А4.  Публикуется материал в 07-30, а начать надо в 08-30, с учётом территориально разнесённых зданий комплекса.
Естественно файл раздаётся учителям и печатается на местах.
2) Прошедшие тренировочные и диагностические работы тоже удобнее хранить в электронном, а не бумажном виде. И давать их прорешивать детям тоже удобнее, собирая варианты из старых работ в электронном виде.
3) Разбор работ на интерактивной доске и подготовка материала к уроку - просто прелесть при использовании этих pdf-файлов: скопировал в буфер кусочек и вставил в ПО доски.
4) Диагностические работы в сети Интернет появляются РАНЬШЕ их публикации в системе СТАТГРАД, то есть утекают они не из школ, а бороться собираются именно с нами. Что и показали - блокируя аккаунты школ, чьи файлы найдены в интернет.

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

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
Попробуйте
Спасибо за совет. Буду пробовать, тем более, что эти файлы и созданы при помощи этого пакета:
$ pdfinfo Zadanie_IN9_06032014.pdf
Creator:        pdftk 1.12 - www.pdftk.com
Producer:       itext-paulo (lowagie.com)[JDK1.1] - build 132
CreationDate:   Mon Mar  3 04:12:21 2014
ModDate:        Mon Mar  3 04:12:21 2014
Tagged:         no
Form:           none
Pages:          15
Encrypted:      no
Page size:      595 x 842 pts (A4)
Page rot:       0
File size:      590414 bytes
Optimized:      no
PDF version:    1.4
Научить нельзя, научиться можно.

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 567
...
1) Они поставили условие, что ответственный должен отдать учителю не файл, а распечатку заданий.
...
   Ну, так как я написал выше, преобразуйте pdf в картинки и закатайте эти картинки обратно в pdf, потом раздавайте учителям. Таким образом вы получаете сканы и формально ничего не нарушаете. Тем более, что это можно сделать конвейером, запуском одного скрипта, который из каталога IN сконвертит файлы в каталог OUT (за время определяемое мощностью компьютера, что всяко быстрее чем любые манипуляции руками).

Это налагает обязательное требование наличия принтера и копира для создания копий в одном месте (у ответственного).
   Способ описанный выше показывает, что не только не обязательно, а вообще не требуется ни принтер, ни копир (у ответственного).

...Представляете - 115... Каждый вариант на 8-ми листах А4.  Публикуется материал в 07-30, а начать надо в 08-30, с учётом территориально разнесённых зданий комплекса.
...
Вот поэтому я и хочу разобраться, как пришибить идентификатор пользователя...
   Представляю. Т.е., другими словами, вам не оставляют времени на какие либо манипуляции с файлами.
   Вы хотите сказать, что напечатать за час вы не успеваете, а поиск и нейтрализацию клопов во всех файлах успеете? Для того, чтобы найти всех клопов нужен специалист по защите и криптографии (у вас такой есть?), потом это действо занимает не только не один час, но и даже не один день. Есть ещё одна вещь — сегодня вы найдёте способ деавторизовать файл, но в следующий раз он не сработает, и те кто эти файлы создаёт всегда будут на шаг впереди вас.

   Попробовали бы сначала просто с печатью в файл pdf (с помощью того-же cups). Есть программы для сравнения файлов diff, kompare, meld. Для их использования надо два файла полученных с разных мест. Сравниваете файлы до и после преобразования, если файлы на выходе совпадут — можно сказать, что вы их деавторизовали.
   Но и тут не со 100% вероятностью. Когда-то, у меня была привычка наборы программ (для win, когда этой ОС пользовался) паковать в архивы для удобства перетаскивания. Так некоторые антивирусы заявляли, что файл прошедший архивирование-разархивирование повреждён, хотя сравнение показывало, что исходный файл и файл из архива бинарно идентичны.

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
Ну, так как я написал выше, преобразуйте pdf в картинки и закатайте эти картинки обратно в pdf, потом раздавайте учителям.
Шрифтов не хватает :-(
[tsel@cab303t pdf]$ gs -sDEVICE=jpeg -o out-%d.jpg Zadanie_IN9_06032014.pdf
GPL Ghostscript 9.07 (2013-02-14)
Copyright (C) 2012 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
   **** Warning: considering '0000000000 XXXXX n' as a free entry.
   . . . (здесь повторяются эти ворнинги 14 раз)
Processing pages 1 through 15.
Page 1
Can't find (or can't open) font file /usr/share/ghostscript/9.07/Resource/Font/NimbusRomNo9L-Medi.
Can't find (or can't open) font file NimbusRomNo9L-Medi.
Can't find (or can't open) font file /usr/share/ghostscript/9.07/Resource/Font/NimbusRomNo9L-Medi.
Can't find (or can't open) font file NimbusRomNo9L-Medi.
Querying operating system for font files...
Can't find (or can't open) font file /usr/share/ghostscript/9.07/Resource/Font/NimbusRomNo9L-Medi.
Can't find (or can't open) font file NimbusRomNo9L-Medi.
Didn't find this font on the system!
Substituting font Courier for NimbusRomNo9L-Medi.
Can't find (or can't open) font file /usr/share/ghostscript/9.07/Resource/Font/NimbusMonL-Regu.
Can't find (or can't open) font file NimbusMonL-Regu.
Can't find (or can't open) font file /usr/share/ghostscript/9.07/Resource/Font/NimbusMonL-Regu.
Can't find (or can't open) font file NimbusMonL-Regu.
Didn't find this font on the system!
Unable to substitute for font.
   **** Error reading a content stream. The page may be incomplete.
   **** File did not complete the page properly and may be damaged.
. . . (тоже самое для всех остальных страниц)
В итоге картинки пустые - просто белый фон.

Нормально печатает только из Adobe Reader, все остальные линуксовые просмотрщики об эти файлы спотыкаются.
При этом, если напечатать из Adobe Reader на cups-pdf, то полученный pdf файл вполне нормально преобразуется в картинки даже утилитой convert.

Вы хотите сказать, что напечатать за час вы не успеваете, а поиск и нейтрализацию клопов во всех файлах успеете?
Так я и хочу написать скрипт, чтобы засунуть туда файл, обработать и отдать результат учителю. Просто смести на фиг все возможные варианты клопования:
PDF (замена шрифтов) - картинка - обработка картинки (убрать цвета, заменить фон на свой, резкость отрегулировать) - обратно собрать PDF. Не знаю пока как, но попробовать распознать и добавить текст.
На пути написания стоит только то, что надо сначала напечатать из acroread, только потом обрабатывать, хотя это времени тоже недолго займёт, можно и руками. Поищу шрифты, на которые ругается ghostscript - может найду.

Для их использования надо два файла полученных с разных мест. Сравниваете файлы до и после преобразования, если файлы на выходе совпадут — можно сказать, что вы их деавторизовали.
Осталось уговорить коллег дать мне копию своих файлов - все опасаются подобных утечек  ;-)
Научить нельзя, научиться можно.

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
Шрифтов не хватает
Скачал с интернета http://downloads.ghostscript.com/public/ghostscript-9.07.tar.gz - там эти шрифты есть. Распаковал в /usr/share/ghostscript/9.07/Resource/Fonts - все заработало без Adobe Reader.
Интересно, отсутствие этих файлов - фича пакета в ALT или бага?

Решил пока остановиться на таком варианте:
[tsel@cab303t pdf]$ cat crack_statgrad_pdf.sh
#!/bin/bash
#Преобразовать в картинки
convert -density 300 -quality 100 $1 out-%02d.jpg 2>/dev/null
#Обработать картинки
for i in *.jpg
do
        # Привести к оттенкам серого и убрать фон
        convert -colorspace gray -transparent white ${i} ${i%.*}.png
        # Вернуть простой белый фон
        convert -background white -layers merge ${i%.*}.png w_${i%.*}.png
done
#Собрать pdf
convert w_*.png w_$1
#Почистить за собой
find . -name '*.jpg' -print0 | xargs -0 rm -f
find . -name '*.png' -print0 | xargs -0 rm -f

[tsel@cab303t pdf]$ time bash crack_statgrad_pdf.sh Zadanie_IN9_06032014.pdf
83.74user 5.64system 1:29.54elapsed 99%CPU (0avgtext+0avgdata 1362156maxresident)k
0inputs+68968outputs (0major+5212546minor)pagefaults 0swaps
Достаточно быстро, имхо. Правда файл потяжелел ощутимо, из-за картинок.

Как думаете, осталось что-то после такой обработки?
Научить нельзя, научиться можно.

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 567
Распаковал в /usr/share/ghostscript/9.07/Resource/Fonts - все заработало без Adobe Reader.
Интересно, отсутствие этих файлов - фича пакета в ALT или бага?
Бага или нет — не знаю.
У меня каталога со шрифтами в ghostscript нет, NimbusRoman№9 установлены системно. Подобных проблем не замечал.

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

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
Спасибо за советы!
Научить нельзя, научиться можно.

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
Кроме явно видимых не должно остаться ничего. Видимые останутся, например можно разбросанными в определённых местах точками информацию закодировать (тут уже надо знать что и где искать).
Я уж "дожму" тему. Нашёл я вариант той же работы из другой школы.
Разобрал оба файла на картинки. Отсеял дубликаты при помощи fdupes. Беру два отличающихся файла и смотрю их разницу:
compare -compose src out-01_1.jpg out-01.jpg diff_01.pngПолучаю такую картинку, как во вложении.
Это и есть те самые стеги - просто смещения текста относительно друг друга по горизонтали и вертикали?
Графическим редактором это не исправить, только OCR?
Научить нельзя, научиться можно.