# Internet Printing Protocol {{#include ../banners/hacktricks-training.md}} The **Internet Printing Protocol (IPP)**, as specified in **RFC2910** and **RFC2911**, serves as a foundation for printing over the internet. Its capability to be extended is showcased by developments like **IPP Everywhere**, which aims to standardize mobile and cloud printing, and the introduction of extensions for **3D printing**. Leveraging the **HTTP** protocol, IPP benefits from established security practices including **basic/digest authentication** and **SSL/TLS encryption**. Actions like submitting a print job or querying printer status are performed through **HTTP POST requests** directed at the IPP server, which operates on **port 631/tcp**. A well-known implementation of IPP is **CUPS**, an open-source printing system prevalent across various Linux distributions and OS X. Despite its utility, IPP, akin to LPD, can be exploited to transmit malicious content through **PostScript** or **PJL files**, highlighting a potential security risk. ```python # Example of sending an IPP request using Python import requests url = "http://printer.example.com:631/ipp/print" headers = {"Content-Type": "application/ipp"} data = b"..." # IPP request data goes here response = requests.post(url, headers=headers, data=data, verify=True) print(response.status_code) ``` If you want to learn more about [**hacking printers read this page**](http://hacking-printers.net/wiki/index.php/Main_Page). {{#include ../banners/hacktricks-training.md}}