как изменить заголовок пакета (заголовок IP, заголовок TCP) до того, как хост отправит их в сеть

Я хочу изменить заголовок пакета (заголовок IP, заголовок TCP) до того, как хост отправит их в сеть.

Например, если я использую firefox для просмотра, то я хочу перехватить все пакеты из firefox и изменить заголовок IP / TCP, а затем отправить их в сеть.

поэтому в основном есть два требования: 1 перехватить все пакеты из firefox (но не другие программы). если это невозможно, возможно ли перехватить пакеты из определенного порта или пары ip / port

2 измените заголовок IP / TCP и затем введите их в сеть

есть ли способы, API для достижения этого? как насчет libpcap? Есть ли похожие fragmentы кода? Я работаю с linux c

Спасибо!

Razorback – это API с открытым исходным кодом для глубокой инъекции пакетов. Вы можете найти источник по адресу:

http://sourceforge.net/projects/razorbacktm/files/Razorback/

Вы также можете запросить их для исходного кода для их предлагаемой системы.

http://www.icir.org/vern/papers/pktd-pam03.pdf

Чтобы изменить пакеты, это лучше, чем просто вставить пакет, который был изменен в вашей сети. C имеет библиотеку libnet, которая делает все, что связано с инъекцией пакетов. Python имеет scapy для ввода пакетов.

Теперь вы можете делать довольно интересные вещи, используя libent и scapy, вместо того, чтобы изменять заголовки пакетов ip / tcp, выполнять spoofing arp, а затем вводить фальсифицировать пакеты и перенаправлять их жертве.

Libpcap используется для захвата пакетов, но не для модификации пакетов. Таким образом, вы можете создать собственный сниффер с помощью libpcap, но для ввода / изменения пакетов вам необходимо использовать libnet.

Чтобы упростить жизнь, есть инструменты, такие как пакет burp и т. Д., Где вы можете изменить заголовки http только перед отправкой.

это должно быть для вас захват сетевого пакета для Linux .

Но, похоже, он перехватывает весь процесс в системе.


возможно, вы можете использовать

 #include  long ptrace (enum __ptrace_request request, pid_t pid, void *addr, void *data); 

и hook send (2) или recv (2), чтобы изменить заголовок tcp.