TBD: This article needs further explanation
The Printer Management Language (PML) is a proprietary language to control HP printers. It basically combines the features of SNMP with PJL. Publicly available documentation has not been released, however parts of the standard were leaked by the LPRng project: the PJL Passthrough to PML and SNMP User’s Guide defines defines PML as ‘an object-oriented request-reply printer management protocol’  and gives an introduction to the basics of the syntax. PML is embedded within PJL and can be used to read and set SNMP values on a printer device. This is especially interesting if a firewall blocks access to SNMP services (161/udp), but an attacker is still able to print using one of the various techniques discussed in attack carriers. The use of PML within a print job retrieving the
hrDeviceDescr value (OID 184.108.40.206.220.127.116.11.2.1.3, textual description of a device) is demonstrated below:
> @PJL DMINFO ASCIIHEX="000006030302010301" < "8000000603030201030114106870204c617365724a65742034323530
The rear part of string responded by the printer,
6870204c617365724a65742034323530 is hexadecimal for
hp LaserJet 4250 – equivalent to the snmpget example. As can be seen, it is possible to invoke (a subset of) SNMP commands over PJL via PML. A security-sensitive use of PML is to reset HP printers to factory defaults via ordinary print jobs, therefore removing protection mechanisms like user-set passwords.
- PJL Passthrough to PML and SNMP User's Guide, HP Inc., 2000, p. 11