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 –