nc被称为网络测试的瑞士军刀,其功能之强大可见一般
使用技巧
不想发送换行符?
Use the “eof” key, Ctrl+D. When pressed in the middle of a line, it will give to netcat everything that has been input at that point. ——引用自linux - How can I force netcat to send my input immediately, not just on newlines? - Super User
即使用EOF
键——Ctrl+D
。注意是行末使用,而不是文末使用
输入 ASCII 特殊字符?
该部分的测试环境如下:
- 主机操作系统:Windows 10 1803
- 使用的 SSH 工具:Putty 0.70
- 虚拟机操作系统:CentOS 7.2
- 使用的 Shell: Bash 4.2.46
使用echo
或printf
1
echo -ne '\x05\x01\x00'|nc -x nc.log localhost 1080
或者:
1
echo -n $'\x05\x01\x00'|nc -x nc.log localhost 1080
不过上述方法中,后一种方法似乎无法输入\x00
字符
printf
和上述方法类似
使用重定向<
1
2
echo -ne '\x05\x01\x00\x04\x05\x01\x00\x03\x0e\x77\x77\x77\x2e\x67\x6f\x6f\x67\x6c\x65\x2e\x63\x6f\x6d\x01\xbb' >input
nc -x nc.log localhost 1080 < input
但是上述两种方法(echo
和<
)都只能发送一次消息,因此实在让人难以满意。于是经过大量的搜索,我找到了如下解决方案
直接输入
1
2
# nc -x nc.log localhost 1080
^E^A^@^D
参见 ASCII - Wikipedia 的那个表格,我们可以知道^@
(Ctrl+2
)表示 ASCII 字符\x00
,^A
(Ctrl+A
)表示 ASCII 字符\x01
,以此类推,可以轻松输入任意 ASCII 特殊字符
链接
下面总结了本文中使用的所有链接: