Difference between revisions of "UEL"

From Hacking Printers
Jump to: navigation, search
(Created page with "The Universal Exit Language (UEL) actually is not a real job control ‘language’ but a single command used to terminate the curre...")
 
 
Line 1: Line 1:
The Universal Exit Language (UEL) actually is not a real [[Fundamentals#Printer_Control_Languages|job control]] ‘language’ but a single command used to terminate the current data stream: the escape character (<code>\x1b</code>), followed by <code>%-12345X</code>. It was originally introduced with HP's [[PCL]] and is supported by most modern laser printers. It is a good practice of ‘printer drivers’ to invoke the UEL at the beginning and at the end of each print job, so interpretation of the printer language is stopped/restarted and each job has its own environment. Otherwise, for example PJL settings like paper media size or PostScript definitions set in one print job would influence the next job. The UEL can be handy to string together multiple jobs into a single file/datastream sent to the printer and can be used to fool [[Accounting_bypass#Page_counter_manipulation|hardware page counters]], for example.
+
The Universal Exit Language (UEL) actually is not a real [[Fundamentals#Printer_Control_Languages|job control]] ‘language’ but a single command used to terminate the current data stream: the escape character (<code>\x1b</code>), followed by <code>%-12345X</code>. It was originally introduced with HP's [[PCL]] and is supported by most modern laser printers. A good practice of ‘printer drivers’ is to invoke the UEL at the beginning and at the end of each print job, so interpretation of the printer language is stopped/restarted and each job has its own, separate environment as shown below:
 +
 
 +
\x1b%-12345X
 +
@PJL SET PAPER=A4
 +
@PJL ENTER LANGUAGE=PCL
 +
...
 +
[PCL datastream]
 +
...
 +
\x1b%-12345X
 +
 
 +
Otherwise, for example PJL settings like paper media size or PostScript definitions set in one print job would influence the next job. The UEL can be handy to string together multiple jobs into a single file/datastream sent to the printer. This can be used to fool [[Accounting_bypass#Page_counter_manipulation|hardware page counters]] or to switch the printing language in advances [[Cross-site printing#Limitations_of_cross-site_printing|cross-site printing]] attacks, for example.

Latest revision as of 17:43, 28 January 2017

The Universal Exit Language (UEL) actually is not a real job control ‘language’ but a single command used to terminate the current data stream: the escape character (\x1b), followed by %-12345X. It was originally introduced with HP's PCL and is supported by most modern laser printers. A good practice of ‘printer drivers’ is to invoke the UEL at the beginning and at the end of each print job, so interpretation of the printer language is stopped/restarted and each job has its own, separate environment as shown below:

\x1b%-12345X
@PJL SET PAPER=A4
@PJL ENTER LANGUAGE=PCL
...
[PCL datastream]
...
\x1b%-12345X

Otherwise, for example PJL settings like paper media size or PostScript definitions set in one print job would influence the next job. The UEL can be handy to string together multiple jobs into a single file/datastream sent to the printer. This can be used to fool hardware page counters or to switch the printing language in advances cross-site printing attacks, for example.