2010-07-10 45 views
6

Tôi đã cố gắng gửi gói SYN trên mạng cục bộ của mình và theo dõi chúng bằng Wireshark và mọi thứ hoạt động tốt, trừ khi tôi cố gắng gửi gói đến địa chỉ ip của chính mình làm việc bởi vì nó nói Sent 1 gói, nhưng nó không thực sự được gửi, tôi không thể nhìn thấy các gói tin trong Wireshark cũng không có bất kỳ câu trả lời cho các gói tin. Thiết lập của tôi là một máy tính A (192.168.0.1) với một TCP Socket Server nghe trên cổng 40508, và một máy tính B (192.168.0.2).Scapy SYN gửi trên địa chỉ IP của chúng tôi

trên máy tính B i kiểm tra:

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) 

Nó hoạt động tốt, tôi thấy các gói tin SYN trên Wireshark và phản ứng/ACK SYN từ 192.168.0.1

trên máy tính A i kiểm tra:

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) 

nó hoạt động tốt quá, tôi thấy các gói tin SYN và RST/ACK (không có máy chủ lắng nghe trên cổng 40.508 trên 192.168.0.2 nên nó sẽ gửi một RST/ACK) phản hồi từ 192.168.0.2

Nhưng khi tôi cố gắng trên máy tính 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) 

Không có gì xuất hiện trong Wireshark, như thể các gói dữ liệu không bao giờ được gửi nhưng nó nói như xét nghiệm khác: Sent 1 gói. và không trả lại lỗi nào. Nếu tôi chạy cùng một thử nghiệm trên máy tính B và cố gắng gửi một gói tin đến địa chỉ IP của nó, tôi đã nhận được cùng một vấn đề.

Đối với chương trình của tôi, tôi thực sự cần gửi gói SYN tới địa chỉ IP của riêng mình, có cách nào để thực hiện điều đó hay không?

Cảm ơn trước,

Nolhian

Trả lời

2

mạng gì thiết bị (s) được cài đặt Wireshark bạn lắng nghe trên? Tôi nghi ngờ nó đang lắng nghe trên card mạng thực tế (ethernet, wifi, hoặc theo cách khác, theo Wireshark FAQ) - và khi gửi từ máy tính đến bản thân hệ điều hành có thể bỏ qua thiết bị (tại sao phải bận tâm với nó?) làm "gửi" bằng cách sao chép các bit xung quanh trong ngăn xếp TCP/IP trong bộ nhớ hạt nhân.

Nói cách khác tôi nghi ngờ gói của bạn đang được gửi OK, chỉ Wireshark có thể không nhìn thấy nó. Để xác minh giả thuyết này, bạn có thể thử (ví dụ) sử dụng trình duyệt của mình để truy cập các cổng tồn tại và không tồn tại trên máy cục bộ của bạn và xem liệu Wireshark có thấy các gói hay không.

+1

Nói cách khác, gói được gửi trên giao diện loopback. – Borealid

+0

Cảm ơn bạn đã trả lời, tôi đã kiểm tra và chính xác là nó, gói tin nằm trên giao diện loopback, wireshark thấy nó trên lo. Kể từ khi tôi không có câu trả lời SYN/ACK từ gói tôi đoán nó không bao giờ đạt 192.168.0.1, tôi đã cố gắng cũng để đặt một cổng với không có gì nghe trên nó và vẫn không có câu trả lời RST/ACK. Vì vậy, tôi đã cố gắng làm cho máy chủ nghe trên 127.0.0.1 thay vì 192.168.0.1 nhưng vẫn không có gì, các gói tin được tạo ra được gửi trên loopback nhưng nó không trả lời. Nếu máy chủ là 127.0.0.1 và tôi viết một máy khách python với một kết nối socket TCP trên nó, nó hoạt động tốt ... – Nolhian

+0

Tôi thực sự bị mất ở đó :(Bất kỳ ý tưởng về lý do tại sao nó không bao giờ đáp ứng tại địa phương nhưng nó khi cùng một gói được tạo ra được gửi bởi một máy tính khác hoặc khi TCP socket cố kết nối (ngay cả cục bộ)? – Nolhian

Các vấn đề liên quan