Advertisement

【测试】echo发送和接收TCP/UDP数据包|shell 发送TCP/UDP数据包

阅读量:

目录

通过/dev/tcp、/dev/udp

shell给tcp或udp服务发送16进制报文指令

shell处理进制数和字节

shell 10进制转16进制数

十六进制字符串到字节

shell字符串倒叙

shell判断大小端序


通过/dev/tcp、/dev/udp

在Linux shell脚本中启动TCP和UDP连接的相关操作,在Blue summer的博客-博客中提供了详细的指导

借助/dev tcp 与 /dev udp 设备口,在 shell 脚本中能够建立 tcp 与 udp 连接的操作简便且效率高。日常工作中用来测试 等场景也非常便捷。

直接发送

格式 /dev/udp/ip/port

比如要向本地10001端口发送数据,可以使用
echo "hello" > /dev/udp/localhost/10001

该方法的优点在于,在发送之后自动结束。当需要在命令行下重复地向指定UDP端口发送数据时,仅此一种方式适用。

while true
do
echo "xxxx" > /dev/udp/localhost/10001
done

链接:https://www.jianshu.com/p/b55f3aa77b07

先建立连接

exec 9<>/dev/tcp/10.100.70.139/19006

echo -e "stats" >&9

执行以下命令:
其中使用的是文件描述符9。
这里说明的是标准输入会将数据直接传递到指定的网络接口。
要获取相关信息则需运行相应的命令。

exec 9<>/dev/tcp/192.168.52.136/5000
至于关闭连接,则通过以下命令,

exec 9>&-

exec 9<&-

原文链接:

基于Shell语言向TCP或UDP服务传输十六进制数据包指令的具体实现方法

通过使用shell命令生成并发送相应的十六进制数据包指令来与目标TCP或UDP服务进行通信操作

详细说明了如何利用shell工具构建并执行针对特定网络协议(如TCP/UDP)的数据传输操作流程

指令:
(sleep 2;echo "000F737D61747573" | xxd -r -p ;sleep 1)|nc 192.168.137.1 15000|hexdump -C

说明:上面为tcp 示例(给nc添加参数-u可改为udp,但没验证,理论上可行)

示例功能:向192.168.137.1上的tcp端口发送包含内容000F737D61747573的报文,并将其响应报文以十六进制格式显示。

shell处理进制数和字节

shell 10进制转16进制数

复制代码
 dec2hex(){

    
     printf "%x" $1
    
 }
    
  
    
 a=$(dec2hex 2131165531)
    
 echo $a

将十转十六: fifteen 等于 zeroxf
通过 printf '%x\n' 十五 来显示
将十六转十: zeroxf 等于 fifteen
使用 printf '%d\n' zeroF 来显示
计算十六转八: zeroF 等于 seventeen
采用 printf '%o\n' zeroF 来显示
将八转十: eightb'一七 等于 fifteen
通过 echo 计算八转十的结果为 ((eight#一七))
计算二转十: two#一一一一 等于 fifteen
使用 echo 输出二转十的结果 ((two#一一一一))

还可以利用bc输出进制数

Linux 技巧指南: 使用 bc 命令查看汇编语言的不同进制表示形式 正序与逆序显示 深入解析汇编指令 文章分类:技术博客 | 来源:网

十六进制字符串到字节

该平台上的问题描述为:"如何将十六进制字符串转换为对应的字节序列?" 链接地址为:"https://oomake.com/question/312989"(问题编号:)

如何将十六进制字符串转换为对应的字节序列?这个问题在Linux Shell脚本中经常遇到。

shell字符串倒叙

方法1,使用rev

[root@rdma55 ~]# echo "ABC"|rev
CBA

方法2,使用awk
awk '{ for(i=length(0);i>0;i--){printf substr(0,i,1)}; printf "\n"}' file.txt

[root@rdma55 ~]# echo "ABC"|awk '{ for(i=length(0);i>0;i--){printf substr(0,i,1)}; printf "\n"}'
CBA

Linux shell:通过last指令实现文本倒序打印以及rev指令用于字符串反转操作_匿_名_用_户的专栏-博客

描述

具体操作

相关说明

shell判断大小端序

方法一
echo -n I | od -o | head -n1 | cut -f2 -d" " | cut -c6
输出:1为小端模式,0为大端模式;

解析:od命令的功能是用于将指定内容分别以八进制、十进制、十六进制、浮点格式以及ASCII编码的字符表示形式显示;

方法二
echo -n I | od -o | head -n1 | awk '{print $2}'| cut -c6
输出:1为小端模式,0为大端模式;

解析:awk命令为文本处理。

方法三
lscpu | grep -i byte
输出:Byte Order: Little Endian;

解析:grep -i 为不区分大小写匹配;

注意:在低版本的Linux可能不支持lscpu命令。

方法四
dpkg-architecture | grep -i end
输出:

DEB_BUILD_ARCH_ENDIAN=little

DEB_HOST_ARCH_ENDIAN=little

DEB_TARGET_ARCH_ENDIAN=little

说明:dpkg-architecture命令的主要作用是用来展示dpkg打包过程中所涉及的各种环境参数信息。

全部评论 (0)

还没有任何评论哟~