【测试】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打包过程中所涉及的各种环境参数信息。
