S7 COM PLC狀態查詢 - 讓你知道攻擊是否生效
好的,這是一個非常實際的問題,在進行網路監控或開發自己的客戶端時至關重要。 要從 S7 封包中判斷 PLC 的狀態 (主要是 RUN 或 STOP),沒有一個固定的欄位存在於每一個封包中。您必須透過攔截並解析特定的請求-回應 (Request-Response) 封包組合來實現。 以下是三種主要的方法,從最直接到最間接: 方法一:主動查詢系統狀態列表 (Read SZL) - 最準確的方法 這是最標準、最可靠的作法。您的應用程式(或您正在監控的客戶端)會主動向 PLC 發送一個「讀取系統狀態列表」的請求,PLC 會在回應中明確告知其當前狀態。 要觀察的封包:【請求】 您會看到一個由客戶端發往 PLC 的封包。 PDU 類型 (ROSCTR): 0x07 (Userdata) 參數 (Parameters): 在 Userdata 的參數部分,會包含一個「Read SZL」(讀取 SZL) 的子功能請求。 關鍵識別碼 (SZL ID): 請求中會指定要讀取的 SZL ID。用於查詢 CPU 狀態的 ID 通常是 0x0424 或 0x0132 (取決於 CPU 型號和韌體)。 要觀察的封包:【回應】 PLC 會回覆一個 PDU 類型為 0x03 (Ack_Data) 的封包。 這個封包的資料區 (Data) 就包含了您要的狀態資訊。 如何判斷 (解析回應封包的 Data 區): _ 在 SZL 回應的資料區中,會有一個特定的位元組 (Byte) 用來表示 PLC 的運行狀態。 ...