Scapy SYN отправлять на наш собственный IP-адрес - PullRequest
6 голосов
/ 10 июля 2010

Я пытался отправлять пакеты SYN в моей локальной сети и отслеживать их с помощью Wireshark, и все работает просто отлично, за исключением случаев, когда я пытаюсь отправить пакет на свой собственный IP-адрес, он «кажется» работает, потому что он говорит «Отправлено 1 пакет»,но он на самом деле не отправлен, я не вижу ни пакета в Wireshark, ни ответов на него.Моя установка - это компьютер A (192.168.0.1) с сокет-сервером TCP, прослушивающий порт 40508, и компьютер B (192.168.0.2).

На компьютере B i test:

ip=IP(src="192.168.0.2",dst="192.168.0.1")  
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)

Он работает нормально, я вижу пакет SYN на Wireshark и ответ SYN / ACK от 192.168.0.1

На компьютере A i test:

ip=IP(src="192.168.0.1",dst="192.168.0.2")  
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)

Он тоже работает нормально, япосмотрите пакет SYN и RST / ACK (на сервере 192.168.0.2 сервер не прослушивает порт 40508, поэтому он отправляет RST / ACK) ответ от 192.168.0.2

Но когда я пытаюсь на компьютере A:

ip=IP(src="192.168.0.2",dst="192.168.0.1")  
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)

Ничего не появляется в Wireshark, как будто пакет никогда не был отправлен, но он сказал, как и другие тесты: Отправлено 1 пакетов.и не вернул никакой ошибки вообще.Если я запускаю тот же тест на компьютере B и пытаюсь отправить пакет на его собственный IP-адрес, у меня возникает та же проблема.

Для моей программы мне действительно нужно отправить пакет SYN на мой собственный IP-адрес, еслиЕсть ли способ сделать это или это невозможно?

Заранее спасибо,

Nolhian

1 Ответ

2 голосов
/ 10 июля 2010

Какое сетевое устройство (устройства) прослушивает ваша установка Wireshark? Я подозреваю, что он прослушивает реальную сетевую карту (Ethernet, Wi-Fi или другое, как в Wireshark FAQ ) - и при отправке с компьютера на себя ОС может, конечно, обойти устройство (зачем с ним?) и просто выполните «отправку», скопировав биты в стеке TCP / IP в памяти ядра.

Другими словами, я подозреваю, что ваш пакет отправлен нормально, просто Wireshark может его не увидеть. Чтобы проверить эту гипотезу, вы можете попробовать (например, использовать браузер, чтобы посетить существующие и несуществующие порты на вашем локальном компьютере, и посмотреть, видит ли Wireshark эти пакеты или нет.

...