ipp印表機是指採用ipp協定的印表機。 IPP代表“網際網路列印協定”,是一個在網際網路上列印的標準網路協定。 IPP協定可讓使用者管理與網路連接的印表機,並將印表機作業傳送到線上主機印表機;使用者可以透過相關介面來控制列印品所使用的紙張種類、解析度等各種參數。
本教學操作環境:windows7系統、Dell G3電腦。
ipp印表機是指採用ipp協定的印表機。
IPP代表“網際網路列印協定”,顧名思義,該協定允許使用者管理與Internet連接的印表機,並將印表機作業傳送到線上主機印表機。 IPP與許多其他印表機管理協議之間的區別在於IPP是一種安全協議,它支援高級功能,例如存取控制列表,身份驗證和加密通信,然而,這並不意味著設備所有者正在使用這些功能。
wireshark抓取封包分析,並解析出列印檔案名稱、檔案、IP端口、使用者名稱;
#一、協定說明
網際網路列印協議(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個位元組
-------------------------------------------------- ----
|
屬性--------------------------------------“屬性組開始標籤”字段標誌著一個屬性組的開始,它的值標識
屬性組的類型。如一個
操作屬性組與作業屬性組。 「屬性組開始標籤」也標記了前一個屬性組的結尾除非它是在請求或回應的第一個屬性組中。 「屬性開始標籤」欄位作為一個「屬性組」的終止,因為「屬性組」欄位不能嵌套在另一個「屬性組」欄位。 一個屬性組欄位包含零個或多個「屬性」欄位。 注意:「屬性組開始標籤」欄位和「屬性組結束標籤」欄位稱為「分隔符號標籤」。 3.3 屬性 「屬性」欄位編碼如下: -------------- ------------------------------------------ | 單值屬性 | q位元組 ---------------------------------- -------------------- | 附加價值 #------------------------------------------------- ----- 當一個屬性是單值的(如「複製」的值10) 或是多值的但只取一個值(如「多方支援」只用值'單方') ,這時它只用「單值屬性」欄位編碼。當一個屬性是多值的且取n個值(例如“多方支持”取值'單方'和'雙方長邊界'),它編碼有一個“屬性單值”字段,後跟n-1“附加值”字段。 #------------------------ ------------------------------ | 數值標記 | 且1個字節
「值」欄位包含值的屬性,如文字值「單邊」。 3.5 附加價值 ----------------------- ------------------------------- | 值標籤 #------------------------------------------------- ----- | 0x0000) | 2# | 2個位元組 ----------------------------------------- ------------- | 長度長度(單位w) | 2個位元組 #------- ---------------------------------------------- #| 。 # )21w---------------- 「值標籤」欄位規定屬性語法,例如0x44表示屬性語法「keyword」。 「名稱長度」欄位可取0值以表示這是一個「附加價值」。 「名稱長度」欄位的值把「附加價值」欄位(「名稱長度」是0 )和「單值屬性」欄位(「名稱長度」不是 0 )區分了開來 Shadowserver 基金會表示,計劃將來在其網站上發布每日IPP暴露報告。 「我們希望在我們的新開放空間中共享IPP設備數據報告,這將減少啟用IPP的裸露印表機的數量,並提高人們對將這種設備暴露給未經身份驗證的掃描儀/攻擊者的危險的認識。」訂閱組織安全警報的公司或國家CERT團隊將在國家/地區的網路和IP位址空間中在線公開任何IPP服務時收到自動通知。 Shadowserver基金會針對處理暴露於互聯網的設備提供的前瞻性建議與去年的學術研究結果一致,該研究發現DDoS刪除通常無效,執法部門應將重點放在修補系統上,以限制攻擊者。 同時建議使用者閱讀印表機的手冊,以設定IPP存取控制和IPP驗證功能,在印表機尚未被利用的情況下做好保護,管理面板中的大多數印表機都有IPP配置部分,使用者可以從中啟用身份驗證,加密並透過存取清單限制對裝置的存取。 更多相關知識,請造訪常見問題欄位!
附加價值使用4個字域編碼://属性值;
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移动位置
以上是ipp印表機是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!