在Linux上使用javascript进行端口敲打效果很好,但在Windows中效果不好
我正在保护一个web应用程序,并正在实现端口敲击技术。服务器端的实现正在运行,我正在制作一个小型桌面应用程序来“敲打”端口。 我决定使用javascript和当前大多数浏览器上可用的FetchAPI来实现这一点 为了进行测试,我打开了一个浏览器并编写了以下函数:在Linux上使用javascript进行端口敲打效果很好,但在Windows中效果不好,javascript,security,fetch-api,Javascript,Security,Fetch Api,我正在保护一个web应用程序,并正在实现端口敲击技术。服务器端的实现正在运行,我正在制作一个小型桌面应用程序来“敲打”端口。 我决定使用javascript和当前大多数浏览器上可用的FetchAPI来实现这一点 为了进行测试,我打开了一个浏览器并编写了以下函数: (async function() { for ( port of [7000, 8000, 9000] ) { await fetch("https://xx.xx.xx.xx:" + port)
(async function() {
for ( port of [7000, 8000, 9000] ) {
await fetch("https://xx.xx.xx.xx:" + port)
.catch(() => console.log("packet sent on port ", port))
// I only catch because the server rejects the connection.
// With the TCP SYN sent it's enough.
}
})();
在Ubuntu18.10上的Chrome上运行这个函数的效果与预期完全一样,但是当我将这个函数复制到Windows7计算机上时,获取行为在某种程度上是随机的:
在查看服务器日志时,我意识到每个端口都有多个连接(不是常数),有时顺序会改变
在我的Linux计算机上运行此操作的正常行为:
openWeb: Stage 1
openWeb: Stage 2
openWeb: Stage 3
在基于Windows的计算机上运行时:
openWeb: Stage 1
openWeb: Stage 1
openWeb: Stage 1
openWeb: Stage 2
openWeb: Stage 1
openWeb: Stage 1
openWeb: Stage 1
closeWeb: Stage 1
closeWeb: Stage 2
closeWeb: Stage 1
closeWeb: Stage 1
连接的顺序很重要,因此这在敲门侦听器守护进程上不起作用
使用Chrome开发工具分析网络活动,连接在那里的显示方式并不奇怪
更新:使用了net模块,而不是节点获取,得到了相同的结果。*indows 7于2009年发布。你有没有报过窃听器?在*indows10中是否也会发生同样的行为?可能与服务器拒绝有关。是否有任何可能的方法打开这些端口并发送虚拟数据?那么Windows的行为也可能是一样的。您是否也进行了测试以确保Windows没有阻止该网络活动?在Windows 10上进行了测试,同样的情况也发生了。也许如果我打开这些端口并放置一个侦听器,这会起作用,但不是我所需要的。