我使用bash(4.0.33)网络支持进行学习,并尝试在bash中创建端口扫描程序。对于TCP,我用
打开了一个TCP / IP套接字 exec 3<>/dev/tcp/192.0.2.1/80
如果连接被拒绝或 connect 系统调用超时,则采取适当的措施。但是,使用UDP,我可以轻松地发送带有
的数据包 echo > /dev/udp/192.0.2.1/53
但如何从正确的套接字读取返回的数据包?我的意思是发送到192.0.2.1的UDP数据报具有来自临时端口范围的源端口,因此我不知道应该读取/dev/udp/192.0.2.1/
目录中的哪个套接字。或者如果没有像 tcpdump
答案 0 :(得分:5)
Bash的UDP支持不是很好,并且是在许多发行版(Debian / Ubuntu及其衍生产品)上编译出来的。推荐的工具是netcat:
nc -u 192.0.2.1 53
注意:使用coproc或命名管道从同一个netcat进程读取和写入。不要先发送数据包并尝试捕获回复netcat。
但是,Bash确实是错误的语言。考虑使用Python,它可以更好地处理UDP和二进制数据,只需要几行代码。答案 1 :(得分:0)
“ bash绝对不是正确的选择”
“虽然Bash确实是错误的语言”
不知道为什么要断言(取决于disto)。这适用于pi-Z-W:
SELECT * FROM tablenamehere WHERE coduser = "5OEWP1BPSV";
然后另一个进程可以说每小时发送一次
echo“ !! T $(date +%H%M%S)”> /dev/udp/192.168.2.165/16523
我确实必须使用/etc/rc.local中的“ set H +”关闭历史记录扩展来处理意料之外的(对我来说)扩展!用引号引起来。