Как управлять сетевым трафиком с локальной машины с помощью qt c ++? Я нашел решения для захвата пакетов, например, libpcap, но они не могут блокировать или манипулировать трафиком. Мне нужно создать что-то похожее на Proxy Switcher и я не могу найти правильное место для начала. Есть идеи?
Qt не предоставляет способ прослушивать или блокировать сетевой трафик. На окнах вы можете использовать WinPcap который является портом libpcap и предлагает множество низкоуровневых сетевых функций, включая те, которые вам нужны, которые вы можете использовать из пользовательского режима. WinPcap состоит из драйвера и библиотеки, которая используется для легкого доступа к сетевым уровням низкого уровня. Некоторые сетевые инструменты, такие как Wireshark, Nmap, Snort, ntop, используют WinPcap. В Linux вы можете использовать libPcap для прослушивания сетевых пакетов, но для блокировки я думаю, что вам нужен драйвер пространства ядра или что-то в этом роде.
Qt не предоставляет средств фильтрации. Для фильтрации трафика в Linux вы должны использовать iptables.
apt-get install iptables-dev
http://www.netfilter.org/projects/libnetfilter_queue/doxygen/group__Queue.html
Когда решение по пакету выбрано, вердикт должен быть дан путем вызова nfq_set_verdict () или nfq_set_verdict2 (). Приговор определяет судьбу пакета следующим образом:
- NF_DROP отбросил пакет
- NF_ACCEPT пакет проходит, продолжайте итерации
- NF_STOLEN ушел
- NF_QUEUE внедрить пакет в другую очередь (целевой номер очереди находится в старших 16 битах вердикта)
- NF_REPEAT повторяет тот же цикл еще раз
- NF_STOP принимайте, но не продолжайте итерации