[HN Gopher] Bye CUPS: Printing with Netcat
       ___________________________________________________________________
        
       Bye CUPS: Printing with Netcat
        
       Author : r3trohack3r
       Score  : 40 points
       Date   : 2021-08-03 22:03 UTC (57 minutes ago)
        
 (HTM) web link (retrohacker.substack.com)
 (TXT) w3m dump (retrohacker.substack.com)
        
       | deeblering4 wrote:
       | Have fun printing a shipping label from your phone using Netcat.
        
       | herpderperator wrote:
       | How would you get an application, such as Firefox or Chrome, to
       | know to use netcat to print?
        
         | Evidlo wrote:
         | Choose Jetdirect/Appsocket in the printer add menu and it will
         | do the same thing.
         | 
         | There is nothing magic about netcat. You are just dumping
         | Postscript/PDF data on a TCP port the printer is listening on.
        
           | r3trohack3r wrote:
           | Oh fascinating. If I use the system dialogue, I can choose
           | the application to print to. There is an `lpr` option, and I
           | can specify the application it invokes in a "Command Line"
           | field.
           | 
           | I can put `nc [printer_ip] 9100` there and it will just
           | print. I just printed your comment this way.
           | 
           | That's cool! Thank you for teaching me something!
        
         | jkingsman wrote:
         | You'd need to set up a system printer using the
         | JetDirect/socket protocol, then you could print via normal
         | print dialog.
        
         | r3trohack3r wrote:
         | Today I: CTRL+P -> Save to PDF.
         | 
         | If I want to print multiple pages per sheet: Open PDF in
         | Firefox, CTRL+P -> Save to PDF and configure the document. You
         | can also pipe through `gs` to do this.
         | 
         | For _huge_ documents (100s of pages), I'll pipe through `gs`
         | first to do the pdf->ps conversion on my laptops CPU. The
         | printer can do it, it just takes a lot longer.
        
       | mongol wrote:
       | Found some info here
       | 
       | https://en.wikipedia.org/wiki/JetDirect#Protocols
        
       | turminal wrote:
       | Convenient, but not very secure
        
       | jim-jim-jim wrote:
       | Hah. I had a similar moment of enlightenment with FreeBSD when
       | somebody explained that you can just cat a wav file into
       | /dev/audio (or /dev/dsp? forget the exact name). And that you can
       | produce white noise by catting /dev/random to the same
       | destination. With no barrier to the sound card like that, I was
       | free to experiment with programming dfferent noise algorithms and
       | figuring out how digital audio works. I eventually did things the
       | proper way with OSS and finally sndio on OpenBSD, but direct,
       | universal interfaces like files invite that initial exploration
       | and help you get things done quick and easy.
       | 
       | netcat is also a secret weapon around the house. My girlfriend
       | runs macOS, but it's way more reliable to just nc files to each
       | other over wifi than deal with all the cloud and airdropping
       | bullshit.
        
       | terinjokes wrote:
       | This is how this Hackernews printed several pages worth of the
       | plaintext representation of a PDF on an office printer a few
       | years ago before figuring out how to cancel the job.
        
         | Arnavion wrote:
         | So how did you cancel it? I assume killing the nc process
         | wasn't enough because it had buffered the whole file, so you
         | had to do it at the printer?
        
           | squarefoot wrote:
           | Happens all the time when something goes wrong, like
           | malformed files, wrong driver loaded, etc. All printers have
           | an internal buffer, so when one goes crazy printing pages of
           | gibberish, the only solution is to kill the job directly on
           | the printer, or turn it off asap, then go to the computer and
           | empty the print queue should something exist there as well,
           | then do the same at the print server, if there is one. The
           | point is that once a print is started, all buffer will
           | eventually end up to the printer, so it's the 1st device we
           | must stop and the last one to restart once we're sure no data
           | to print is left between the application and the paper, that
           | is, not before all spoolers have been emptied.
        
       | dredmorbius wrote:
       | If you have a single host, and a single printer, or your printer
       | itself is both network-enabled _and_ can manage its own print
       | spool, direct TCP /IP printing may indeed work for you.
       | 
       | The value of CUPS is that it enables the CUPS-serving _computer_
       | to run as a _print server_. This means not only print drivers
       | (document format support --- typically plain text, Postscript,
       | and one or more PDL (printer definition languages)  & PCL
       | (Printer Control Language), but status on the printer, queue
       | management, job control, and access control. Note that if your
       | printer is generally available on your local WiFi network, you
       | might want to give more thought to that last element.
       | 
       | If those are overkill for you and your printer Just Works with
       | generated output, then yes, you can get by without the
       | complexity.
       | 
       | Note that you can also often telnet directly to the printer port.
       | 
       | Be aware of what you're trading off, though, and whether or not
       | you actually need what CUPS, or direct network access, offers.
        
         | cbhl wrote:
         | The CUPS web front-end also has rough edges; Apple maintains
         | CUPS these days and OS X now ships with the web interface on
         | :631 disabled.
         | 
         | If you still need a print server, it can be well worth the
         | extra $100 or so to buy a business-class printer with an IPP
         | server in it, so that CUPS runs on a chip inside the printer
         | instead of on a separate computer. (Generally anything that
         | supports "Airprint" will do this, and also at the mid range you
         | avoid the "printers whose ink cartridges are more expensive
         | than the printer" zone.)
        
       | dimitar wrote:
       | Works on any OS (just tried macOS for example), but its not very
       | convenient to set print options. Passed a jpg and it printed out
       | the metadata.
        
       | herpderperator wrote:
       | I just tried this and while it worked, it was very slow. It takes
       | a minute to start printing a page in a PDF, meanwhile nc is still
       | hanging and sending the data, seemingly very slowly. The printer
       | is constantly showing "Receiving Data" on its screen. The PDF is
       | only 450KB.
       | 
       | Edit: It took about 5 mins to print a 3-page document, with long
       | pauses between each page.
        
         | r3trohack3r wrote:
         | I suspect it's the printer doing the pdf->ps conversion. I have
         | a beefy printer, so only run into this for large documents. But
         | I'll cat through `gs` then to `nc` to do the pdf->ps conversion
         | locally, and it is much faster.
        
           | herpderperator wrote:
           | That makes sense. That's why you want to do print spooling on
           | client devices, which run on extremely fast CPUs in
           | comparison. I guess that is why we don't send documents
           | directly to printers.
        
       | voidmain0001 wrote:
       | YMMV as the printer needs to support PCL/PDL and not all HP
       | network servers have it built-in. HP chose to save some money by
       | making dumb network cards that forced the PCL/PDL rendering on
       | the Windows computer which made using Linux difficult.
       | 
       | http://danieru.com/2013/06/06/what-is-port-9100-how-to-print...
       | 
       | While you're at it you may as well try out the printer exploit
       | kit https://github.com/RUB-NDS/PRET
        
       | marcodiego wrote:
       | I once did something similar to that on my previous job. A
       | colleague came by asking who printed several pages of garbage.
       | Me: "Sorry, I just inferred every reputable printer supported
       | postscript". The problem: the job was an outsource for a pinter
       | vendor. They obviously did not like my comment.
        
       | corbet wrote:
       | FWIW, the Internet Printing Protocol (and IPP Everywhere in
       | particular) make printer setup in CUPS far, far easier, but
       | distributors seem reluctant to encourage it. I wrote about my
       | experiences with IPP back in June
       | (https://lwn.net/Articles/857502/). I expect to never have to
       | hassle with printer drivers again...
        
       | ggm wrote:
       | CUPS exist because not all printers are HP.
       | 
       | Magic in printing is still an arcanum. PPD files. Windows 10 as a
       | print server. (some print devices are not networked)
       | 
       | Prelude files. in-printing logic like line reversal, density
       | adjustments for photos. Double sided printing meta-signalling,
       | n-up..
       | 
       | "oh, I don't need that stuff" fine, fine, nc is going to work for
       | you, at the end of a bumpy road to a printer which supports it.
       | And, right up until its 2am, you want to colour print that late
       | birthday card for your favourite aunt, and the printer is stuck
       | on nc...
        
       | TacticalCoder wrote:
       | I used to do this at home all the time (from Linux though):
       | networked printer with its own IP address and then good old
       | netcat. I'd do it with PostScript files and send them to HP
       | LaserJet 4M+: not only do these beauties speak PostScript
       | natively, they can also be made to display the infamous "PC LOAD
       | LETTER" message.
       | 
       | I'd try to find these printers used then I'd upgrade them: more
       | RAM, more fonts, adding a network card inside the printer etc.
       | 
       | I still have several of these printers in a garage, some of them
       | have printed more than 300 000 pages. They probably still work:
       | some things were that good back then.
       | 
       | And, yup, there's something feeling magical when netcat'ing a .ps
       | file (or another format) directly to the printer.
        
       | [deleted]
        
       | mackman wrote:
       | My first introduction to the internet was downloading Magic the
       | Gathering card lists as postscript files via FTP and then FTPing
       | them to a postscript printer. Would have been 1994 and they were
       | some sort of Sun machine at LMU. Internet has been all downhill
       | since then.
        
       ___________________________________________________________________
       (page generated 2021-08-03 23:00 UTC)