0

我一直在使用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 的 ASC-E1.17 协议;最新的设备使用 E1.31 或 E1.37。这个 IP 是宇宙 2。端口 5568 似乎是由规范固定的,我相信 DMX 插槽是在框架内内联发送的(这里我在 0x0240 附近的插槽 421-425 上发送旋转颜色)。我的目的是检查是否容易污染 ACN 规范,并研究是否有人可以访问我的网络可能会扰乱我的工作......以及我应该如何保护我的网络免受问题的影响。但是,购买第二个 ACN 源会比用 nc 锻造一个框架更广泛,更不灵活......

我在网络中有另一台计算机来检查寄生虫帧是否已正确注入(并由交换机传输)。

如果此测试失败,我将需要购买其他 ACN 源。

4

1 回答 1

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 设备一起玩。

于 2018-02-02T14:19:58.503 回答