我一直使用https://github.com/ottomata/multicast-tester配置一台主机来监听多播流量,这样我就可以用tcpdump捕获它。这很容易:
ip route add 224.0.0.0/4 dev eth0
multicast-receiver -g 239.255.0.2 -p 5568
tcpdump -A -X -veni wlan0 dst host 239.255.0.2
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:50:12.879565 10:dd:b1:99:16:45 > 12:42:99:5a:b9:c1, ethertype IPv4 (0x0800), length 680: (tos 0x0, ttl 32, id 7747, offset 0, flags [none], proto UDP (17), length 666)
192.168.1.71.60230 > 239.255.0.2.5568: UDP, length 638
0x0000: 4500 029a 1e43 0000 2011 c81f c0a8 0147 E....C.........G
0x0010: efff 0002 eb46 15c0 0286 de35 0010 0000 .....F.....5....
0x0020: 4153 432d 4531 2e31 3700 0000 726e 0000 ASC-E1.17...rn..
0x0030: 0004 9ecf d3c6 1b01 7547 a506 37c0 6c96 ........uG..7.l.
0x0040: 7e12 7258 0000 0002 4d2d 5365 7269 6573 ~.rX....M-Series
0x0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0080: 0000 0000 0000 0000 6400 00a1 0000 0272 ........d......r
0x0090: 0b02 a100 0000 0102 0100 0000 0000 0000 ................
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0210: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0220: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0230: 0000 0000 0000 0000 0000 0000 0000 000e ................
0x0240: ff00 000e ff00 0000 0000 0000 0000 0000 ................
0x0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0290: 0000 0000 0000 0000 0000
现在,我想永远重播这个框架。我知道我需要将主机重新配置为组播源;但是应该这样做:
multicast-sender -g 239.255.0.2 -p 5568
现在,我如何重播我的画面?
我不认为多播发送者能够处理大量的空字符;但是nc应该能够做到。修复了有关src和dst字段的框架头文件中的一些细节。
对于好奇的人:这是针对DMX over Ethernet的ASC-E1.17协议;最新的设备使用E1.31或E1.37。这个IP是宇宙2.端口5568似乎固定为标准,我相信DMX插槽是在帧内内发送的(这里我在插槽421-425上发送旋转颜色,大约在0x0240)。我的目的是检查是否容易污染ACN规范,并研究是否有人访问我的网络可能会弄乱我的工作......以及我应该如何保护我的网络免受问题的影响。但是,购买第二个ACN来源会比使用nc伪造一个框架更具扩展性和灵活性......
我在网络中有另一台计算机来检查寄生虫帧是否已正确注入(并由交换机传输)。
如果此测试失败,我将需要购买其他ACN来源。
答案 0 :(得分:0)
所以,我找到了一个解决方案:
记录一个框架:
ip route add 224.0.0.0/4 dev wlan0
/root/multicast-tester/bash/multicast-receiver -g 239.255.0.1 -p 556
# start playing a sequence from an ACN master
# and from an other console:
tcpdump -veni wlan0 -c 10 -w /tmp/recc dst host 239.255.0.1
现在,重播框架。以下项目是tcpreplay的一个fork: https://github.com/rigtorp/udpreplay 安装后,只需在循环中重放帧:
while true ; do ./udpreplay -i wlan0 /tmp/recc ; done
您将看到各种订单之间的DMX客户端抖动。
tcpreplay包含在debian中; udpreplay不是(还)。
我之前的问题是我在听错(DMX)宇宙(2而不是1)。
此方法也可用于记录和重放某些DMX序列;或者是家庭书面DMX大师的起点。
使用此方法可能可以与其他ACN设备一起使用。