Я пытаюсь найти самый простой способ перехвата пакетов TCP SYN, отправленных моим компьютером, в программе на C ++. Я знаю несколько вариантов. Можно было бы отслеживать весь трафик и просто выборочно работать с SYN-пакетами, ничего не делая с остальными. Другой вариант, с которым я столкнулся, заключался в использовании утилиты фильтрации пакетов, которая пересылает SYN-пакеты в мою программу. Кто-то предложил мне использовать для того же netfilter.
Мне было интересно, есть ли другие варианты или мне стоит вникнуть в netfilter. Кроме того, были бы полезны любые указания о том, как это сделать с помощью netfilter.
РЕДАКТИРОВАТЬ: я хочу перехватить SYN-пакет и, возможно, потребуется его изменить (перенаправить в другое место назначения, изменить порт назначения и т. Д.), Прежде чем повторно вводить его обратно в сеть.
Изменить: мне удалось это сделать, используя комбинацию iptables и libnetfilter_queue. Я использовал ipfilter для перенаправления всех TCP SYN-пакетов в определенную очередь (для этого использовалась простая команда).
Затем в программе на C я смог использовать libnetfilter_queue API для доступа к пакетам в очереди, проанализировать их и повторно отправить обратно в сеть.