Как управлять сетевым трафиком с локального компьютера с помощью qt Stack Overflow

Как управлять сетевым трафиком с локальной машины с помощью qt c ++? Я нашел решения для захвата пакетов, например, libpcap, но они не могут блокировать или манипулировать трафиком. Мне нужно создать что-то похожее на Proxy Switcher и я не могу найти правильное место для начала. Есть идеи?

1

Решение

Qt не предоставляет способ прослушивать или блокировать сетевой трафик. На окнах вы можете использовать WinPcap который является портом libpcap и предлагает множество низкоуровневых сетевых функций, включая те, которые вам нужны, которые вы можете использовать из пользовательского режима. WinPcap состоит из драйвера и библиотеки, которая используется для легкого доступа к сетевым уровням низкого уровня. Некоторые сетевые инструменты, такие как Wireshark, Nmap, Snort, ntop, используют WinPcap. В Linux вы можете использовать libPcap для прослушивания сетевых пакетов, но для блокировки я думаю, что вам нужен драйвер пространства ядра или что-то в этом роде.

0

Другие решения

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 принимайте, но не продолжайте итерации
0

По вопросам рекламы [email protected]