Как перехватить информацию пересылаемую на принтер
От: Hekko Россия  
Дата: 18.08.03 18:14
Оценка:
Нужно перехватить информацию посылаемую на принтер и сохранить в виде bmp(jpg) на диске при этом не мешая работе принтера.
Re: Как перехватить информацию пересылаемую на принтер
От: Andrew S Россия http://alchemy-lab.com
Дата: 18.08.03 19:46
Оценка:
Mirror драйвер принтера Шутка, конечно.

На самом деле, все печально. Дело в том, что драйвера принтеров бывают как kernel mode, так и user mode. Если с kernel mode перехватом все понятно (и хорошо описано у Фень Юаня), то вот с перехватом user mode драйвера принтера я как то не сталкивался. Хотя, наверное, ничего невозможного нет.
Впрочем, может можно как то со спулером поизвращаться? Возможно, поможет Print Processor. Хотя это только предположение.

H>Нужно перехватить информацию посылаемую на принтер и сохранить в виде bmp(jpg) на диске при этом не мешая работе принтера.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[2]: Как перехватить информацию пересылаемую на принтер
От: Hekko Россия  
Дата: 18.08.03 20:11
Оценка:
Andrew S
и хорошо описано у Фень Юаня
А конкретнее можно?


2All
Люди помогите очень надо
Re[2]: Как перехватить информацию пересылаемую на принтер
От: Valerio Россия linkedin.com/in/boronin
Дата: 19.08.03 04:13
Оценка:
Здравствуйте, Andrew S, Вы писали:

AS>Mirror драйвер принтера Шутка, конечно.


AS>На самом деле, все печально. Дело в том, что драйвера принтеров бывают как kernel mode, так и user mode. Если с kernel mode перехватом все понятно (и хорошо описано у Фень Юаня), то вот с перехватом user mode драйвера принтера я как то не сталкивался. Хотя, наверное, ничего невозможного нет.

user mode printer driver общается напрямую с портом через WritePrinter (e.g. RAW, EMF, TEXT, postscript )
соотв. можно попробовать встроиться на уровень пониже типа монитора порта (see Writing a Print Monitor), правда со всеми вытекающими неудобствами

AS>Впрочем, может можно как то со спулером поизвращаться? Возможно, поможет Print Processor. Хотя это только предположение.

действительно PP это тоже user mode DLL который переводит что нужно как раз в формат понятный для монитора порта

H>>Нужно перехватить информацию посылаемую на принтер и сохранить в виде bmp(jpg) на диске при этом не мешая работе принтера.

хотя можно попытаться выдернуть инфу о том, что печатают через EMF ф-ии PP и поработать с EMF поплотнее напрямую?
... << RSDN@Home 1.1 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[3]: Как перехватить информацию пересылаемую на принтер
От: Andrew S Россия http://alchemy-lab.com
Дата: 19.08.03 06:04
Оценка:
Можно. Модифицируется внутренняя таблица функций DDI, указатель на которую (ppdev) содержится в контексте (dc)устройства. Как все это делается + рабочий пример — проще посмотреть в указанном источнике.
Но — это на мой взгляд крайняя мера. Возможно, вам помогут предложенные user-mode методы.

H>Andrew S

H>и хорошо описано у Фень Юаня
H>А конкретнее можно?


H>2All

H>Люди помогите очень надо
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[4]: Как перехватить информацию пересылаемую на принтер
От: Hekko Россия  
Дата: 19.08.03 07:28
Оценка:
Я посмотрел и нашел, что при печати создается фаил .spl в каталоге Windows\System32\spool\Printers\
Так вот кажется там есть вся информация посылаемая на принтер.
Только вот формат файла неизвестен.
Может кто знает формат .SPL файла
Re[5]: Как перехватить информацию пересылаемую на принтер
От: Valerio Россия linkedin.com/in/boronin
Дата: 19.08.03 07:41
Оценка:
Здравствуйте, Hekko, Вы писали:

H>Я посмотрел и нашел, что при печати создается фаил .spl в каталоге Windows\System32\spool\Printers\

H>Так вот кажется там есть вся информация посылаемая на принтер.
H>Только вот формат файла неизвестен.
H>Может кто знает формат .SPL файла
в НТ спулер создает 2 файла для спулинга:
.shв содержит параметры а .spl — графкоманды

формат .spl ФеньЯнь характеризует как мета-EMF:

файл состоит из посл метазаписей которые начинаются с 32-bit type ID and 32-bit size полей после которых следуют данные переменного размера...

for details use EmfScope utility from his book (programmin GDI)
... << RSDN@Home 1.1 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[6]: Как перехватить информацию пересылаемую на принтер
От: Andrew S Россия http://alchemy-lab.com
Дата: 19.08.03 07:51
Оценка:
Немного не так. Этот файл может быть как EMF, так и TEXT или RAW. В случае RAW содержание зависит от модели принтера. Например, все PostScript (eq нормальные сетевые принтеры) пользуются raw форматом. Так же сказано, что форматы файлов спулера недокументированы. Для работы с форматом EMF есть функции GdixxxEMF.

V>формат .spl ФеньЯнь характеризует как мета-EMF:

V>

V>файл состоит из посл метазаписей которые начинаются с 32-bit type ID and 32-bit size полей после которых следуют данные переменного размера...

V>for details use EmfScope utility from his book (programmin GDI)
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[7]: Как перехватить информацию пересылаемую на принтер
От: Hekko Россия  
Дата: 19.08.03 11:30
Оценка:
Ладно. А возможно ли перехватить эти 2 файла и сохранить их, а потом если потребуется снова послать их на печать?
Re[8]: Как перехватить информацию пересылаемую на принтер
От: Andrew S Россия http://alchemy-lab.com
Дата: 19.08.03 11:37
Оценка:
Не знаю, но, имхо, это нехорошие методы.

H>Ладно. А возможно ли перехватить эти 2 файла и сохранить их, а потом если потребуется снова послать их на печать?
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re: Как перехватить информацию пересылаемую на принтер
От: shatokhin Украина www.uneta.org
Дата: 22.08.03 13:44
Оценка:
Здравствуйте, Hekko, Вы писали:

H>Нужно перехватить информацию посылаемую на принтер и сохранить в виде bmp(jpg) на диске при этом не мешая работе принтера.


Скорее всего это не очень сложно сделать. У меня тоже подобная задача, но я пока не нашел решение. Вот посмотрел http://www.doc-q-manager.com этот продукт. Он как раз работает с очередями. Те можно копировать, переносить, просматривать документы в очереди.
Re: Как перехватить информацию пересылаемую на принтер
От: Ужасть бухгалтера  
Дата: 22.08.03 23:38
Оценка:
Поправьте меня, если я ошибаюсь.
Есть мысля использовать перехват вызова функций API (вроде APISpy),
внедряя через хуки свою dll в требуемый процесс. Тогда можно отследить
получение DC принтера и, соответственно, без проблем снять с него
изображение.
Posted via RSDN NNTP Server 1.7 beta
Re[2]: Как перехватить информацию пересылаемую на принтер
От: Valerio Россия linkedin.com/in/boronin
Дата: 23.08.03 03:57
Оценка: 1 (1)
Здравствуйте, Ужасть бухгалтера, Вы писали:

УБ> Поправьте меня, если я ошибаюсь.

УБ> Есть мысля использовать перехват вызова функций API (вроде APISpy),
УБ>внедряя через хуки свою dll в требуемый процесс. Тогда можно отследить
УБ>получение DC принтера и, соответственно, без проблем снять с него
УБ>изображение.
все возможно, как известно

но есть правильные способы и есть через разные места с соотв. побочными эффектами имеющими свойство вылазить когда никто к этому не готов
... << RSDN@Home 1.1 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[2]: Как перехватить информацию пересылаемую на принтер
От: Exkurs  
Дата: 27.08.03 15:16
Оценка:
Здравствуйте, Andrew S, Вы писали:

AS>Mirror драйвер принтера Шутка, конечно.


AS>На самом деле, все печально. Дело в том, что драйвера принтеров бывают как kernel mode, так и user mode. Если с kernel mode перехватом все понятно (и хорошо описано у Фень Юаня)

Чего за труд такой, труд Фень Юаня ?

, то вот с перехватом user mode драйвера принтера я как то не сталкивался. Хотя, наверное, ничего невозможного нет.
AS>Впрочем, может можно как то со спулером поизвращаться? Возможно, поможет Print Processor. Хотя это только предположение.

H>>Нужно перехватить информацию посылаемую на принтер и сохранить в виде bmp(jpg) на диске при этом не мешая работе принтера.
Осмысление бессмысленности имеет определенныей смысл !
Re[3]: Как перехватить информацию пересылаемую на принтер
От: Kola Россия  
Дата: 28.08.03 09:53
Оценка: 5 (1)
Есть два реальных способа:
1) Реализовать User-Mode Rendering DLL (см DDK Docz) и через DrvSplWritePrinter иметь весь поток принтера — это если дривер kernel mode
2) А если дривер — user mode, то просто faked dll вместо него всавить и весь Drv* DDI иметь во все места =)
Re[4]: Как перехватить информацию пересылаемую на принтер
От: Avaddon  
Дата: 29.07.05 07:54
Оценка:
Здравствуйте, Kola, Вы писали:

K>Есть два реальных способа:

K>1) Реализовать User-Mode Rendering DLL (см DDK Docz) и через DrvSplWritePrinter иметь весь поток принтера — это если дривер kernel mode
K>2) А если дривер — user mode, то просто faked dll вместо него всавить и весь Drv* DDI иметь во все места =)

Господа, простите за повторение, не подскажите ли — решилась ли проблема с перехватом данных, идущих на принтер ? если дописали виртуальный драйвер, то поделитесь опытом — в какой мод хотя бы лезть, так как я уже просто потерялся в этих драйверах, я уже скоро DDK и раздел GDI буду знать наизусть, но понимание отчего-то так и не приходит ....
спасибо за помошь заранее
Re[3]: Как перехватить информацию пересылаемую на принтер
От: michael_srv  
Дата: 26.02.08 09:06
Оценка:
Здравствуйте, Valerio, Вы писали:

УБ>>Тогда можно отследить

УБ>>получение DC принтера и, соответственно, без проблем снять с него
УБ>>изображение.

V>все возможно, как известно


интересно было бы узнать как можно получить информацию с DC принтера, ибо ни один вариант копирования с него не работает. Для экранных DC все ок.
Re: URL inside
От: chygyrynsky Германия  
Дата: 27.02.08 15:38
Оценка:
http://www.microsoft.com/india/msdn/articles/130.aspx
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.