Прежде всего, я пытаюсь получить адрес источника и dest-порт из полезной нагрузки полезной нагрузки очереди Netfilter (полезная нагрузка извлекается с помощью функции nfq_get_payload). Следующий вопрос задает то же самое и получает правильный ответ:Как nfq_get_payload структурирует возвращаемые данные?
How to extract source and destination port number from packet in queue of iptables
К сожалению, нет никакого объяснения, почему добавление 20 и 22 по адресу ставит вас в нужном месте, чтобы прочитать информацию. Я предполагаю, что это из-за структуры данных (очевидно), но если есть определенная структура, что это такое?
В документации явно не указано, как форматируются данные, а только то, что «тип данных, полученных этой функцией, будет зависеть от режима, установленного с помощью функции nfq_set_mode()», но тогда документы для set_mode не упомянуть что-нибудь о типе данных, и источник ничего не обнаруживает сразу.
Я чувствую, что это должно быть что-то очень важное для общих структур сетевого программирования, которые я пропускаю или не понимаю.
Примечания: Функция nfq_get_payload: http://www.netfilter.org/projects/libnetfilter_queue/doxygen/group__Parsing.html#gaf79628558c94630e25dbfcbde09f2933
не должно быть: 'структура iphdr * ip_info = (структура iphdr *) (данные + SizeOf (структура ethhdr))'? Почему вы не пропустите 'struct ethhdr', чтобы перейти к' struct iphdr '? – elmazzun