0
我正在使用libnetfilter_queue庫。但我無法找出一種方法來提取回調函數中的端口號。我有點新。詳細的幫助將不勝感激!如何從iptables隊列中的數據包中提取源端口號和目標端口號
我正在使用libnetfilter_queue庫。但我無法找出一種方法來提取回調函數中的端口號。我有點新。詳細的幫助將不勝感激!如何從iptables隊列中的數據包中提取源端口號和目標端口號
它可以通過以下方式來完成,在回調函數:
len = nfq_get_payload(nfa, &buffer);
src_port = *((unsigned short*) (buffer + 20));
dst_port = *((unsigned short*) (buffer + 22));
爲什麼22和20?你怎麼知道有效載荷是如何組織的? –
@RodrigoSalazar它僅適用於TCP,並且假定IP標頭長度爲20字節,因爲在大多數情況下,因此20&21字節即tcp標頭的前兩個字節指向src端口,22和23字節指向dest端口,按照tcp/ip數據包結構 –
感謝您的迴應,我實際上對此有一天提出了一個問題,然後想到了第二天我自己:) http://stackoverflow.com/questions/15782630/how-does-nfq- get-payload-structure-its-return-data –