gpt4 book ai didi

linux - 即时修改数据流

转载 作者:太空宇宙 更新时间:2023-11-04 11:40:50 25 4
gpt4 key购买 nike

我需要劫持和修改数据流。流由固定宽度的命令组成。每个命令都是一个新行,文档说每个命令都以 STX 开始和结束。/ETX对(文本的开始和结束)

发送系统使用串口,​​但被攻击到通过 IP 与我们的 PBX 通信的 iPocket 设备。据我所知,它只是将串口转换为 telnet,希望这能让事情变得非常简单。

我需要查找的字符串以 NAM 开头.结构是这样的:

STX NAM EXT# LASTNAME,FIRSTNAME ETX

我需要替换 ,FIRSTNAME带有空格,因此它不会改变命令的长度。

我一直在尝试以下操作,虽然它根据需要在两个方向上端到端地传递数据,并删除了所需的数据,但它并没有保持命令的长度。

ipocket <-> nc -kl 1100 | sed 's/,[^,]*/ /g' | nc target_ip target_port <-> PBX

我将使用 linux box 来完成这项任务。我相当确定这可以在 perl 或 python 中非常简单地完成,但我不知道从哪里开始。任何帮助将不胜感激!

最佳答案

这应该可以,它是一条线

perl -pe '/^STX\s\w+\s\d+#\s\w+,(\w+)\sETX$/;$len=length($1);s/$1/" " x $len/e'

我测试过使用。

echo "STX NAM 100# LASTNAME,FIRSTNAME ETX" | perl -pe '/^STX\s\w+\s\d+#\s\w+,(\w+)\sETX$/;$len=length($1);s/$1/" " x $len/e'

它返回

STX NAM 100# LASTNAME,          ETX

为了确保字符串与我测试的长度相同。

echo "STX NAM 100# LASTNAME,FIRSTNAME ETX" | perl -pe '/^STX\s\w+\s\d+#\s\w+,(\w+)\sETX$/;$len=length($1);s/$1/" " x $len/e'| perl -pe 'print length($_);'

给出 36。

echo "STX NAM 100# LASTNAME,FIRSTNAME ETX"|perl -pe 'print length($_);'

给出 36。

关于linux - 即时修改数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3540497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com