2017-09-21 13 views
1

Scapy에서 2 계층 브로드 캐스트 주소가있는 기본 게이트웨이에 에코 요청을 보내려고합니다. 2 층 브로드 캐스트 주소가있는 기본 게이트웨이에 echo-request 보내기

는이 코드 작성 :

packet = Ether(dst='FF:FF:FF:FF:FF:FF')/IP(dst='192.168.1.1')/ICMP() 
sendp(packet) 

를하지만 내가 네트워크 내부의 패킷을 전송하는 과정은, 프레임이 IP 주소 때문에 스위치에 갔다해야 이해 응답이

을 반환하지 않습니다 목적지의 스위치가 동일한 네트워크에 있고 스위치가 브로드 캐스트 주소를보고 있기 때문에 스위치가 연결된 모든 사람에게 스위치를 보냈어야합니다.

이 이론에는 무엇이 있습니까?

btw, 나는 wireshark를 사용하여 트래픽을 스니핑하고 있었는데 캡처 된 핑 요청을 볼 수는 있었지만 그 대답에 대한 응답을 찾을 수 없었습니다. 이는 아마도 이것이 네트워크 문제이고 소프트웨어가 아니라는 것을 의미합니다.

+0

스위치가 분배를 처리하기 위해 레이어 2 주소만을 사용한다는 가정이 맞는지 확실하지 않습니다 (간단한 브리지로 작동). 결정할 때 IP를 사용 하리라 기대합니다 ... –

답변

0

먼저 잠재적 응답을 보지 못하게하는 두 개의 "Scapy 관련"지점이 있습니다. 당신이 대답 (또는 응답이 수신되지 않을 경우 None를) 패킷을 보내고 얻고 싶은 경우에

  • , srp1()를 사용합니다. sendp()은 패킷을 보내지 만 응답을 기다리지 않습니다.

  • 계층 2 개 명령 (*p() 기능)를 사용하여, 그것은 기본 인터페이스 (conf.iface)이 아니다 때 iface= 매개 변수로 사용하려는 인터페이스를 지정하는 것을 잊지 마세요.

그런 다음, 당신은 어떤 대답을하지 않는다는 것을 설명 할 수있는 "네트워크"이유가 : 당신이 보내는 패킷에서 ("저를 유니 캐스트"레이어 2 "방송", 그리고 당신의 게이트웨이 관점).

일부 IP 스택 (적어도 OpenBSD)은 이러한 패킷을 삭제하고 다른 일부 (적어도 Linux)는이를 수용합니다.

srp1(Ether()/IP(dst='192.168.1.1')/ICMP()), 또는 (라우팅 테이블이 192.168.1.1에 도달하기에 올바른 것으로 가정하면 Scapy가 계층 2를 처리하게하려면 게이트웨이 주소로 유니 캐스트 패킷을 보내고 어떤 일이 발생하는지보십시오. sr1(IP(dst='192.168.1.1')/ICMP())).