2013-11-04 2 views
3

패킷을 스니핑 중이며 어떤 패킷이 ICMPv6 에코 요청 패킷이고 UDP 패킷인지 알아야합니다.Scapy - 스니핑 된 패킷의 패킷 유형을 확인하는 방법

은 내가

P = sniff(filter='ip6 and host fe80::xx:xx:xx:xx',count=0) 

IP in P #will return false (my packets are IPv6) 
UDP in P #will return true (when the specific packet is indeed UDP) 

을 할 수 있다는 것을 알고 있지만 된 ICMPv6 패킷을 확인하고, 더욱 구체적으로 ICMPv6 에코가 요청 패킷 ... 그것은 내가 아닌 것 같아 방법을 모른다

에서 IPv6, IP6, IPv6를, IP6, ICMPv6을가 된 ICMPv6는, icmp6는, iCMP6 모두가

NameError: name 'x' is not defined 

합니까를 반환 : 심지어 어떤 IP 버전 6을 확인할 수 있습니다 그런 일을하는 방법을 아는 사람은 누구입니까?

+1

어떤 scapy 버전이 있습니까? scapy 2.1.0 (OS X 10.8.5의 Python 2.7.2에서)을 실행하면'IPv6 in P'가 정상적으로 동작합니다. – abarnert

+0

특히, 정확히 하나의 UDP v6 패킷을 캡쳐했는지 확인한 후, 'UDP in P'는 거짓,'P [0]'의 UDP는 참,'IPv6 in P'는 거짓,'IPv6 in P ' 'P [0] [IPv6]'은 IPv6 패킷입니다 ... – abarnert

답변

3

Scapy v1.x를 사용하는 경우 문서의 여러 위치 에서처럼 IPv6을 처리하지 않습니다. 예 : Download and Installation :

Scapy v2.x 현재 개발 버전에 몇 가지 기능 (예 : IPv6)이 추가되었습니다.

2.x를 사용중인 경우 IPv6으로 정상적으로 작동합니다. 예를 들어, 내 컴퓨터 (Scapy 2.1.0, Apple에서 사전 설치된 Python 2.7.2, OS X 10.8.5) :

>>> P = sniff(filter='ip6', count=0) 
… make sure to capture an IPv6 UDP packet … 
>>> UDP in P 
False 
>>> IPv6 in P 
False 
>>> UDP in P[0] 
True 
>>> IPv6 in P[0] 
True 
>>> P[0][IPv6] 
<IPv6 version=6L tc=0L fl=0L plen=98 nh=UDP … 
>>> ICMPv6EchoRequest in P[0] 
False 
>>> ICMPv6EchoRequest 
<class 'scapy.layers.inet6.ICMPv6EchoRequest'> 
+0

아, 저기 있습니다, 바보 같아요. 그것은 내 버전이었다 !! 고맙습니다! – geeoph

관련 문제