2017-11-21 13 views
2

에 의해 나는 tcpreplay와 함께 연주하고있어 멀티 캐스트 패킷 캡처를 가지고 있지 관심이 있습니다 (224.0.23.60:4937). 멀티 캐스트 Wireshark를 볼하지만 응용 프로그램

그러나 다음과 같은 파이썬 응용 프로그램은 패킷 찾을 수 없습니다 :

import socket 
import struct 

MCAST_GRP = '224.0.23.60' 
MCAST_PORT = 4937 

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) 
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
sock.bind((MCAST_GRP, MCAST_PORT)) # use MCAST_GRP instead of '' to listen only 
         # to MCAST_GRP, not all groups on MCAST_PORT 
mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY) 

sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) 

while True: 
    print '#' 
    print sock.recv(64) 

NETSTAT -g 다음과 같은 출력을주고있다 :

lo    1  all-systems.mcast.net 
eth0   1  224.0.23.60 

내가 여기서 뭔가를 놓치고 있습니까?

[편집] 내 패킷 캡처의 IP src가 동일한 네트워크 하위 도메인 (ip src : 192.168.1.10)에 있지 않다는 점을 분명히해야합니다. 반면 내 ip는 146.186.197.164와 비슷합니다.

+0

tcpreplay? 멀티 캐스트는 UDP라고 생각 했나요? –

+0

분명히 tcpreplay는 wudark에서 udp mulitcast 패킷을 볼 수 있기 때문에 udp 패킷을 재생할 수 있습니다. –

+0

귀하의 앱이 아무 것도 보내지 않습니다 [이 내용 확인] (https://stackoverflow.com/questions/12607516/python-udp-broadcast-not-sending) – dsgdfg

답변

0

문서 (http://tcpreplay.synfin.net/wiki/FAQ)를주의 깊게 읽고 나면 tcpreplay가 TCP/IP 스택과 이더넷 장치 드라이버 사이에서 패킷을 전송하는 것으로 보이므로 호스트 시스템의 TCP/IP 스택에서 패킷을 볼 수 없습니다.

나는 호스트 전용 어댑터로 구성된 가상 박스가있는 debian Os를 사용하고 그 머신에서 tcpreplay를 사용했다.