Creating a printer emulator to capture PDL/PCL data coming in on port 9100.


 
Thread Tools Search this Thread
Special Forums IP Networking Creating a printer emulator to capture PDL/PCL data coming in on port 9100.
# 1  
Old 01-22-2010
Creating a printer emulator to capture PDL/PCL data coming in on port 9100.

I have a number of Windows CE operator terminals. They have facility to print alarms/messages to ...
  • aser or Inkjet (so they're using PCL).
  • USB or IP. IP connection takes just the IP address.

Question
How could I create a service or daemon on a server to capture all this data? Then ...
  • I would set all the terminals to print to the server IP address.
  • The server would emulate a printer (as far as the terminals are concerned).
  • The server then needs to parse and database the messages or write them to individual log files for later processing. (The individual files are so I know which terminal sent the message.)
I've learned that PCL uses port 9100 so, I presume, my service should as well.

Any pointers appreciated.
# 2  
Old 01-22-2010
The capture process could be as simple as listening for connections on 9100 and slurping up all the data... Not positive since I haven't dealt with PCL network printers, just postscript ones, but it seems logical to guess it's a uninteractive stream since people deal with "pcl files" as well as pcl printers. That would give you raw PCL data. Once you have that, the pcltotxt tool might help you. You might have to force the print driver to output PCL5 instead of PCL6.
# 3  
Old 01-22-2010
Thanks, Corona.

I tried using Windump - a port of tcpdump - to see if I could catch anything. I set it to listen for incoming on port 9100 but couldn't see anything. (I could see traffic if I listened for other devices on the LAN.) This caused me to think that the stream might be interactive.

Any other ideas? I'll mess around with tcpdump/Windump between to laptops and see if I can understand how it's supposed to work.

---------- Post updated at 07:32 PM ---------- Previous update was at 06:49 PM ----------

Right. Two XP laptops.

Source: 192.168.3.3, with a generic/text printer driver pointing to 192.168.3.4, port 9100.
Dest: 192.168.3.4 (Hohner) running WinDump. WinDump listening to port 9100.

Here's what I got when I try to print "Hallo World!" from Notepad on source machine ...

Code:
E:\windump>windump -i 2 -A -f -q -t -X port 9100
windump: listening on \Device\NPF_{8071A9D5-8999-472A-85C5-B1E55ABFFC9E}
IP 192.168.3.3.1982 > HOHNER.9100: tcp 0
        0x0000:  4500 0030 6b7d 4000 8006 07f3 c0a8 0303  E..0k}@.........
        0x0010:  c0a8 0304 07be 238c 7ebb 2438 0000 0000  ......#.~.$8....
        0x0020:  7002 ffff 2dee 0000 0204 0550 0101 0402  p...-......P....
IP 192.168.3.3.1983 > HOHNER.9100: tcp 0
        0x0000:  4500 0030 6b83 4000 8006 07ed c0a8 0303  E..0k.@.........
        0x0010:  c0a8 0304 07bf 238c 3334 eff4 0000 0000  ......#.34......
        0x0020:  7002 ffff adb7 0000 0204 0550 0101 0402  p..........P....

It keeps repeating this and the print queue on source machine never clears. It looks like the source is expecting a response from dest.

Any ideas how to spoof a response from the "printer"?
Am I mad?

Last edited by transistor; 01-22-2010 at 03:46 PM.. Reason: Improved clarity - I hope!
# 4  
Old 01-22-2010
What protocol did you select when creating the TCP port? Windows auto-chooses for some port numbers I think, and might have forced it to something other than raw.
# 5  
Old 01-22-2010
That might be my problem. Maybe WinDump is catching the incoming traffic but there is no application/service listening so the port isn't open and the source isn't getting a response. Have I got that right?

Hmm, so how do I open a port for listening?
# 6  
Old 01-22-2010
Quote:
Originally Posted by transistor
That might be my problem. Maybe WinDump is catching the incoming traffic but there is no application/service listening so the port isn't open and the source isn't getting a response. Have I got that right?
Maybye. Haven't used that tool.
Quote:
Hmm, so how do I open a port for listening?
It's already open, but nothing's there to listen. try netcat.
# 7  
Old 01-22-2010
I would start by creating a PCL printer that prints to disk, then examine the disk file created to see if there is anything useful in it. I don't think you will find anything like a text file with one or two escape sequences at the beginning of it. You may be better off if you can create a generic/text only printer.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Emergency UNIX and Linux Support

Port flow capture

I am trying to get an output using the command tcpdump -w /tmp/syn.pcap 'tcp & (tcp-syn) != 0' But I am getting the error: tcpdump: no suitable device found Is there an alternate command to achieve this? (4 Replies)
Discussion started by: ggayathri
4 Replies

2. SCO

Printing to a working network printer using PCL

I am trying to get a network printer to work that currently works from my Unix (5.0.7) server when printing text files only. When I try to print post script files like a PDF file I get all of the controls so I am not sure if I have my printer configuration setup properly in Unix The printer... (1 Reply)
Discussion started by: ziggy6
1 Replies

3. Solaris

Printer (lpadmin) error - blank pages PS/PCL

Help! I have to solve an urgent problem! I have a Solaris 10 server, where I created a line of printing with the command # /usr/sbin/lpadmin -p IL_Printer -s pv24002 -v /dev/null -m netstandard_foomatic -A write -n /usr/lib/lp/model/ppd/system/foomatic/Canon/cnl66e1.ppd.gz -o... (0 Replies)
Discussion started by: poyato
0 Replies

4. Red Hat

Print Spooling using raw port 9100

Hello all, I need to setup a print server that listens on three separate network interfaces, and sends jobs to the corresponding print queue. Example: 192.168.69.100 - printer1 -> Out to 139.177.69.100:9100 192.168.69.101 - printer2 -> Out to 139.177.69.101:9100 192.168.69.102 - printer2 ->... (3 Replies)
Discussion started by: ZekesGarage
3 Replies

5. UNIX for Dummies Questions & Answers

Printing Landscape to PCL 6 Printer

I've looked around and am able to print landscape to a PCL 5 printer with this command: lp -o landscape -o cpi=20 -o page-right=30 -o page-left=30 -d <printer> <file>. Which gives me a nice 200 columns. But, when I send the same output and the same commands to a PCL 6 printer, it comes... (3 Replies)
Discussion started by: tariqjamal
3 Replies

6. Red Hat

Red hat 5. - PCL Printer

I need to setup a HP 4000 PCL printer - it seems out of the box - I can only can use PostScript. Any guidance is appreciated. In the SCO world - I used HPNP with no problems. (2 Replies)
Discussion started by: markb4
2 Replies

7. SCO

Printer port

I installed an old laser printer using a print server. I can use from windows but not from unix. I set up the printer in unix as a remote printer and can ping the print server from a unix promt. I am thinking that I must open a port to the print server. Any suggestions? (3 Replies)
Discussion started by: owbf
3 Replies

8. UNIX for Advanced & Expert Users

Capture output to file and printer

Hi All : I wanted a unix command by which I could be able to print the output to a file and at the same time to a printer. Any help will be greatly appreciated. Regards, Ramamurthy Dasari (1 Reply)
Discussion started by: rdasari
1 Replies

9. UNIX for Dummies Questions & Answers

Howto capture data from rs232port andpull data into oracle database-9i automatically

Hi, i willbe very much grateful to u if u help me out.. if i simply connect pbx machine to printer by serial port RS232 then we find this view: But i want to capture this data into database automatically when the pbx is running.The table in database will contain similar to this view inthe... (1 Reply)
Discussion started by: boss
1 Replies

10. Shell Programming and Scripting

PCL Font does not download to printer.

OS: HP-UX B.11.11 U Printer: HP 8150. I require a font to be downloaded to the printer and used. As documented the steps are: 1. Tell printer to accept font 2. Send the font to the printer 3. Make the font permanent 4. Select font for use or in PCL 1. <Esc>*c90D 2.... (0 Replies)
Discussion started by: mbb
0 Replies
Login or Register to Ask a Question