请问如何检测一个ip上的主机是98 还是2000 或xp?(100分)

  • 主题发起人 主题发起人 ajim
  • 开始时间 开始时间
function IsWin9x: Boolean;
var
OsInfo: TOSVERSIONINFO;
begin
OsInfo.dwOSVersionInfoSize := sizeof(TOSVERSIONINFO);
GetVersionEx(OsInfo);
Result := (OsInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS);
end;
 
朋友您好 你的方法是在本机上 我需要的是查询指定ip上的机器 请帮对忙
 
如果这个IP的135端口开了,那么他可能是NT/2000/XP,如果没有打开那么他是98(135)
 
不同版本的windows对一些网络数据包的反应是不一样的, 像张兄指出的一样, 你可通过
port number 来判断OS version. the list of open ports is often enough to identify most
operating systems.
email header 也可用来判断 os version.
如果你只是想知道target host os version, 最简单办法使用一些第三方软件, 例如:nmap
你可以从 http://www.eeye.com/html/Research/Tools/nmapNT.html 下载
如果你想自己编的话, 你需要发一些“坏tcp"数据包, 每个数据包有着不同的tcp flags.
such as, 一个数据包有SYN, FIN, PUSH,flag set up, or SYN, FIN, PUSH, URG.
你也可以发 icmp 数据包。 请参照:http://www.networkmagazine.com/article/NMG20000829S0003

建议选前者。
 
谢谢各位高论 由于我要大批量检测ip 能不能不通过135? 还有我需要检测ip上是否有机器 能否不用ping
监测 还有其他方法么
 
IP上是否有机器,用GetHostByaddr()返回为nil说明没有开机或者不存在的IP,
你用其他SNMP也是需要和客户机通讯的,速度 依然很慢!
 
你可你用superscan扫描整个网段从而找到active host, 在用nmap判断具体系统信息.
 
谢谢大家如果还没法告诉我最好的方法的话 我散分
 
NetServerGetInfo
 
大家回答的都不对还是 张最接近 但没有代码 还是我自己写的[:(]
 
后退
顶部