有没有一种简单的方法(或者有可能)在 TCP 数据包离开机器时重写它?
例如,如果我跑
telnet binfalse.de 22
Run Code Online (Sandbox Code Playgroud)
它将搜索未使用的端口以离开机器。在这种情况下,它是46576:
root@srv % lsof -i -P -n | grep telnet
telnet 10150 user 3u IPv4 1159425 0t0 TCP 1.2.3.4:46576->87.118.88.39:22 (ESTABLISHED)
Run Code Online (Sandbox Code Playgroud)
但是现在我想重写这些数据包,让服务器认为请求来自 port 1337,或者有点像这样。当然,我知道我不必期望在我的telnet会话中得到答案。
编辑:
当然在1337另一个程序上是在听,所以告诉telnet通过说话1337是没有选择的......
假设你在谈论 Linux,iptables有一个mangle表可以对传出的 TCP 流量做各种疯狂的事情。 iptablesNAT 功能也可能有所帮助,因为听起来您确实想要进行“端口地址转换”或“手动 NAT”。
如果您确实在使用telnet协议(或原始 tcp 流),则可以使用nc -p <source_port>...-t协商 telnet 选项。我在下面有一个终端服务器,它接受 telnet 连接tcp/2015,我将从tcp/31415
# Window 1
[mpenning@hotcoffee ~]$ nc -p 31415 -t 192.168.12.117 2015
????????????????
8024-1(config-if-Po2)#
Run Code Online (Sandbox Code Playgroud)
验证...
[mpenning@hotcoffee tshark_wd]$ netstat -an | grep 31415
tcp 0 0 192.168.12.236:31415 192.168.12.117:2015 ESTABLISHED
[mpenning@hotcoffee tshark_wd]$
Run Code Online (Sandbox Code Playgroud)
这假设您还没有本地套接字侦听tcp/31415……如果您已经在所需端口上绑定了本地 tcp 套接字,这iptables是您唯一的选择。
| 归档时间: |
|
| 查看次数: |
15406 次 |
| 最近记录: |