是否存在不需要管理权限的ms-Windows-tcp/udp/icmp-traceroute实现



我试图找到普通用户(没有管理权限(可以使用的MS Windows的traceroute程序实现,但找不到。我能找到的那些(比如tracetcp或nmap(需要PCAP库,为了安装winpcap,我认为需要管理权限。

我对Windows内部不太了解,但我想知道背后的"魔力"是什么。如果带有Win OS的MS提供的tracert对普通用户来说工作正常(但它只能使用ICMP(,那么普通用户为TCP/UDP数据包设置TTL并在套接字上接收相应的响应是否存在任何问题(技术限制(,例如:

  • ICMP:TTL在传输中过期
  • UDP:无法访问端口
  • 以及可能很少的其他(如TCP RST、ICMP主机无法访问等(

所以基本上:

  • 如果没有问题,为什么没有合理的traceroute实现窗户
  • 如果TCP/UDP有技术限制,那么为什么原始的MS ICMP traceroute适用于非管理员用户

我知道最流行的带有-T选项的linux traceroute(用于使用SYN探测(也需要root特权,但我认为这只是因为它不想完成完整的TCP握手,并且在接收到SYN-ACK后发送RST可能会受到root的限制。无论如何,只要TTL可以由请求用户设置(对于UDP,它似乎工作得很好(,那么我想完成完整TCP握手的TCP traceroute应该可以为非root linux用户实现吗?顺便说一句,ICMP traceroute也需要管理权限,因为它使用了RAW套接字,但令人惊讶的是,对于Windows来说,这似乎不是一个问题。

遗憾的是,你的问题的简单答案是"不,在Windows盒子上没有原生的方法"。

我对您的具体用例有点不确定,但有一条路要走,那就是评估Power Shell是否有更多功能可以帮助您。微软的Jose Baretto写了一篇文章,介绍了PowerShell在常见网络命令中的等效功能。你可以在这里找到:

https://blogs.technet.microsoft.com/josebda/2015/04/18/windows-powershell-equivalents-for-common-networking-commands-ipconfig-ping-nslookup/

如果做不到这一点,你唯一的选择就是(正如你所提到的(第三方工具,你很难找到一个不需要提升特权的工具。

最新更新