ipp印表機是什麼

2023-03-15 18:00:43

ipp印表機是指採用ipp協定的印表機。IPP代表「網際網路列印協定」,是一個在網際網路上列印的標準網路協定。IPP協定允許使用者管理與Internet連線的印表機,並將印表機作業傳送到線上主機印表機;使用者可以透過相關介面來控制列印品所使用的紙張種類、解析度等各種引數。

本教學操作環境:windows7系統、Dell G3電腦。

ipp印表機是指採用ipp協定的印表機。

IPP代表「網際網路列印協定」,顧名思義,該協定允許使用者管理與Internet連線的印表機,並將印表機作業傳送到線上主機印表機。IPP與許多其他印表機管理協定之間的區別在於IPP是一種安全協定,它支援高階功能,例如存取控制列表,身份驗證和加密通訊,然而,這並不意味著裝置所有者正在使用這些功能。

1.png

網際網路印表機協定IPP分析

wireshark抓取封包分析,並解析出列印檔名、檔案、IP埠、使用者名稱;

2.png

3.png

一、協定說明

網際網路列印協定(IPP;InternetPrintingProtocol)是一個在網際網路上列印的標準網路協定,它容許使用者可以透過網際網路作遙距列印及管理列印工作等工作。使用者可以透過相關介面來控制列印品所使用的紙張種類、解析度等各種引數;

IPP採用的超文字傳輸協定HTTP的POST方法在使用者端和列印伺服器之間進行對談。在IPP協定中涉及的物件模型來描述,共有3種物件:

  • 印表機物件,該物件封裝了印表機裝置,所有實際的列印服務都由該物件完成。

  • 作業物件,該物件封裝了一個或多個檔案組成的列印作業。

  • 預定物件封裝了通知機制,在作業和印表機物件的狀態發生改變時,將出發通知。

對於使用者端而言,可以通過IPP協定傳送2種型別的報文;查詢印表機狀態的報文和提交印表機作業的報文,同時,使用者端也可以接收來自列印伺服器的通知;

通訊方式

  • TCP協定,HTTP協定;

  • 傳輸層是HTTP請求和響應組成,操作層是一個HTTP請求或響應中的訊息主體;

  • 伺服器埠:631

  • 使用者端埠:任意

  • Content-Type:application/ipp

二、TCP資料流分析

使用者端與伺服器端都是依附HTTP協定傳輸,操作層是以HTTP請求和響應的訊息體的固有格式(詳細見3訊息結構)互動;

(1)單個檔案列印

print-job:客戶機要提交一個僅包含單個檔案的列印作業。檔案資料將隨請求一起傳送。

(2)多個檔案列印

Create-job:客戶機要提交一個包含多個檔案的列印作業。檔案是使用 send-document 和 send-uri 操作傳送的。

Send-document:客戶機要將檔案新增到使用 print-job 操作建立的列印作業中。檔案資料將隨請求一起傳送。

print-job:客戶機要提交一個僅包含單個檔案的列印作業。檔案資料將隨請求一起傳送。

三、訊息結構

3.1 操作請求和響應編碼

------------------------------------------------------

| 版本號 | 要求2個位元組

------------------------------------------------------

| 操作ID(請求) 或 |

| 狀態程式碼(響應) | 要求2個位元組

------------------------------------------------------

| 請求ID | 要求4個位元組

------------------------------------------------------

| 屬性組 | n位元組(0或更多)

------------------------------------------------------

| 屬性結束標籤 | 1位元組

------------------------------------------------------

| 資料 | q位元組(可選)

------------------------------------------------------

第四個欄位是「屬性組」欄位,它允許出現0或者多次。每個「屬性組」欄位表示單組屬性,如一個操作屬性組或者一個作業屬性組(見檔案模型)。該IPP模型檔案規定所需的屬性組和他們的順序為每個操作請求和響應。

「結束標籤」欄位總是存在的,即使當「資料」不存在。模型檔案指定了每個操作請求和響應的「資料」欄位是否存在。

3.2 屬性組

------------------------------------------------------

| 屬性組開始標籤 | 1個位元組

------------------------------------------------------

| 屬性 | p位元組(0或更多)

------------------------------------------------------

「屬性組開始標籤」欄位標誌著一個屬性組的開始,它的值標識屬性組的型別。如一個操作屬性組與作業屬性組。「屬性組開始標籤」也標記了前一個屬性組的結尾除非它是在請求或響應的第一個屬性組中。「屬性開始標籤」欄位作為一個「屬性組」的終止,因為「屬性組」欄位不能巢狀在另一個「屬性組」欄位。

一個屬性組欄位包含零個或多個「屬性」欄位

注意:「屬性組開始標籤」欄位和「屬性組結束標籤」欄位被稱為「分隔符標籤」。

3.3 屬性

「屬性」欄位編碼如下:

------------------------------------------------------

| 單值屬性 | q位元組

------------------------------------------------------

| 附加值 | r位元組(0或更多)

------------------------------------------------------

當一個屬性是單值的(如「複製」的值10) 或者是多值的但只取一個值(如「多方支援」只用值‘單方’),這時它只用「單值屬性」欄位編碼。當一個屬性是多值的且取n個值(例如「多方支援」取值‘單方’和‘雙方長邊界’),它編碼有一個「屬性單值」欄位 ,後跟n-1「附加值」欄位。

3.4 單值屬性(key value)

------------------------------------------------------

| 值標籤 | 1個位元組

------------------------------------------------------

| key名稱長度(單位u) | 2個位元組

------------------------------------------------------

| 名稱 | u位元組

------------------------------------------------------

| value值長度(單位v) | 2個位元組

------------------------------------------------------

| 值 | v位元組

------------------------------------------------------

「單值屬性」由五個字域編碼:

  • 「值標籤」欄位指定屬性的語法,比如用0x44表示屬性語法「keyword

  • 「名稱長度」欄位以位元組為單位指定「名稱」欄位的長度,例如上圖中的u或15表示名稱為「多方支援」。

  • 「名稱」欄位包含文字名屬性,如「雙邊支援」。

  • 「值長度」欄位以位元組為單位指定「值」欄位的長度,如上圖中的v或9表示值「單方」。

  • 「值」欄位包含值的屬性,如文字值「單邊」。

3.5 附加值

------------------------------------------------------

| 值標籤 | 1個位元組

------------------------------------------------------

| 名稱長度(單位0x0000 | 2個位元組

------------------------------------------------------

| 值長度(單位w) | 2個位元組

------------------------------------------------------

| 值 | w位元組

------------------------------------------------------

附加值使用4個字域編碼:

  • 「值標籤」欄位規定屬性語法,比如0x44表示屬性語法「keyword」。

  • 「名稱長度」欄位可取0值以表示這是一個「附加值」。「名稱長度」欄位的值把「附加值」欄位(「名稱長度」是0)和「單值屬性」欄位(「名稱長度」不是0)區分了開來

  • 「值長度」欄位以位元組為單位規定了「值」欄位的長度,如上圖中的w或19表示值「雙方長邊界」。

  • 「值」欄位包含值的屬性,如文字值「雙方長邊界」。

四、結構體引數

//屬性值;
struct _ipp_attr_value{
    char type;//屬性型別
    short len;//值長度
    std::string value;//值內容
};

//一個屬性包括一個屬性名name,零個或者多個屬性值;
typedef struct _ipp_attr{
    std::string name;//屬性名稱
    std::vector<_ipp_attr_value *> values;//一個或者多個屬性值
}IPP_ATTR;

//一個屬性組包括一個組TAG,零個或者多個屬性;
struct _ipp_attr_seq{
    char seq;//屬性組型別
    std::vector<IPP_ATTR *> attr;//一個或者多個屬性
};

typedef struct _ipp{
    int data_left;//移動剩下的資料長度
    short version;//版本號
    union{
        short int operation;//操作碼
        short int response;//響應碼
    };
    int request_id;//請求ID
    //零個或者多個屬性組
    std::vector<_ipp_attr_seq *> seqs;// 一個或者多個屬性組
}IPP;

IPP *m_ipp;//IPP結構
short int m_bufptr;//記錄buf移動位置
登入後複製

擴充套件知識:每天有80000臺印表機通過IPP線上曝光

Shadowserver專家表示,他們專門掃描了Internet上具有IPP功能的印表機,這些印表機在沒有受到防火牆保護的情況下仍處於暴露狀態,並允許攻擊者通過「獲取印表機屬性」功能查詢本地詳細資訊。

使用搜尋引擎BinaryEdge進行的正常掃描顯示,平均每天通過IPP埠發現大約80,000臺印表機,而這些印表機每天都會在網上曝光。 IPP埠曝光而沒有任何其他安全保護(例如防火牆或身份驗證機制)會導致很多問題。

例如,Shadowserver的專家表示此埠可用於收集情報:因為支援IPP的印表機中有很大一部分(例如印表機名稱,位置,型號,韌體版本,組織名稱甚至WiFi網路名稱)返回了有關其自身的其他資訊,攻擊者可以收集此資訊,然後通過該資訊檢查公司網路,以便於將來的攻擊。

此外,其中支援IPP的印表機的四分之一(約21,000臺)也透露了其設計和製造的細節,公開這些資訊顯然使攻擊者更容易找到特定漏洞的裝置群體。

糟糕的是,IPP駭客工具也可以線上獲得。諸如PRET(印表機操作工具包)支援IPP駭客攻擊,並且過去曾被用於劫持和強迫印表機列印各種宣傳訊息,甚至可能完全接管易受攻擊的裝置。

4.png

Shadowserver 基金會表示,計劃將來在其網站上釋出每日IPP暴露報告。「我們希望在我們的新開放空間中共用IPP裝置資料包告,這將減少啟用IPP的裸露印表機的數量,並提高人們對將這種裝置暴露給未經身份驗證的掃描器/攻擊者的危險的認識。」訂閱組織安全警報的公司或國家CERT團隊將在國家/地區的網路和IP地址空間中線上公開任何IPP服務時收到自動通知。

Shadowserver基金會針對處理暴露於網際網路的裝置提供的前瞻性建議與去年的學術研究結果一致,該研究發現DDoS刪除通常無效,執法部門應將重點放在修補系統上,以限制攻擊者。

同時建議使用者閱讀印表機的手冊,以設定IPP存取控制和IPP身份驗證功能,在印表機尚未被利用的情況下做好保護,管理面板中的大多數印表機都有IPP設定部分,使用者可以從中啟用身份驗證,加密並通過存取列表限制對裝置的存取。

更多相關知識,請存取欄目!

以上就是ipp印表機是什麼的詳細內容,更多請關注TW511.COM其它相關文章!