2014-03-19 30 views
0

我正在使用在服務器端執行的scapy命令和客戶端上的另一個腳本編寫python兩個腳本。在客戶端,腳本將UDP數據包發送到服務器上的一個封閉端口。我的腳本的目的是測試客戶端是否接受從服務器接收到的無效ICMP數據包。在服務器端,我要偵聽傳入流量並響應每個具有ICMP端口不可達的UDP數據包,並且每次我將修改ICMP數據包中的字段(假值)以測試數據包是否已收到。我的問題是:當我修改原始字段(有效載荷)時,客戶端是否會接受此ICMP數據包是正常的?我的意思是在原始領域沒有任何控制。我希望我的問題很清楚。非常感謝你。ICMP目標不可達(端口不可達)數據包中的Raw字段無效

回答

0

嗯,至少對於ID和序列字段,這些可以是任何16位編號組合,內核將接受數據包並將其轉發給所有註冊的ICMP套接字處理程序。

但是,如果校驗和字段不正確,接收內核將不會將標頭傳遞給處理程序(但它會鏈接層嗅探器)。另外,從我測試的情況來看,如果將類型/代碼標誌更改爲已知數字的不正確組合,或者協議未定義的數字,則接收內核不會將其傳遞給處理程序(但鏈接層嗅探器仍然可以看到它)。

注意我沒有使用scapy,只是直接使用python/socket代碼,而我的系統是Linux。