扫描局域网内的其他计算机

本代码可以获取局域网内的其他计算机的名称和ip地址。

如图所示:本地IP地址为:10.128.8.176.而通过程序枚举出如下的局域网内的计算机信息。对于这些计算机,在不联网的情况下,我通过ping的方式,可以与这些计算机ping通,说明这些计算机是真实存在在局域网的范畴内。

核心代码:

void CEnumHostsDlg::EnumHosts(CStringArray& list)
{
	//先清空列表
	list.RemoveAll();

	CString strTemp;	
	struct hostent *host;
	struct in_addr *ptr;	// 获得IP地址 	

	DWORD dwScope = RESOURCE_CONTEXT;
	NETRESOURCE *NetResource = NULL;
	HANDLE hEnum;
	WNetOpenEnum( dwScope, NULL, NULL, NULL, &hEnum );

	WSADATA wsaData;
	//开始枚举网络资源
	WSAStartup(MAKEWORD(1,1),&wsaData);

	if ( hEnum )     //如果句柄有效
	{
		DWORD Count = 0xFFFFFFFF;
		DWORD BufferSize = 2048;
		LPVOID Buffer = new char[2048];
		// 调用WSAStartup后调用WNetEnumResource做进一步的枚举工作
		WNetEnumResource( hEnum, &Count, Buffer, &BufferSize );
		NetResource = (NETRESOURCE*)Buffer;

		char szHostName[200];

		for ( unsigned int i = 0; i < BufferSize/sizeof(NETRESOURCE); i++, NetResource++ )		
		{
			if ( NetResource->dwUsage == RESOURCEUSAGE_CONTAINER && NetResource->dwType == RESOURCETYPE_ANY )				{
				if ( NetResource->lpRemoteName )
				{
					CString strFullName = NetResource->lpRemoteName;
					if ( 0 == strFullName.Left(2).Compare("\\\\") )											
						strFullName = strFullName.Right(strFullName.GetLength()-2);

					//获得主机名
					gethostname( szHostName, strlen( szHostName ) );
					//由主机名获得跟它对应的主机信息
					host = gethostbyname(strFullName);
					if(host == NULL) continue; 
					ptr = (struct in_addr *) host->h_addr_list[0];					

					// 提取IP地址信息,地址形式如下: 211.40.35.76 				
					int a = ptr->S_un.S_un_b.s_b1;  // 211				
					int b = ptr->S_un.S_un_b.s_b2;  // 40
					int c = ptr->S_un.S_un_b.s_b3;  // 35
					int d = ptr->S_un.S_un_b.s_b4;  // 76

					strTemp.Format("%s -->  %d.%d.%d.%d",strFullName,a,b,c,d);
					// 加入到链表中
					list.Add(strTemp);
				}
			}
		}
		delete Buffer;
		// 结束枚举工作
		WNetCloseEnum( hEnum );	
	}

	// 卸载Winsock.dll
	WSACleanup();

}

详细代码在:http://download.youkuaiyun.com/detail/u010951938/9461509

#网络资产信息扫描 在渗透测试(特别是内网)中经常需要对目标进行网络资产收集,即对方服务器都有哪些IP,IP上开了哪些端口,端口上运行着哪些服务,此脚本即为实现此过程,相比其他探测脚本有以下优点:1、轻巧简洁,只需python环境,无需安装额外外库。2、扫描完成后生成独立页面报告。 此脚本的大概流程为 ICMP存活探测-->端口开放探测-->端口指纹服务识别-->提取快照(若为WEB)-->生成结果报表 运行环境:python 2.6 + 参数说明 -h 必须输入的参数,支持ip(192.168.1.1),ip段(192.168.1),ip范围指定(192.168.1.1-192.168.1.254),ip列表文件(ip.ini),最多限制一次可扫描65535个IP。 -p 指定要扫描端口列表,多个端口使用,隔开 例如:22,23,80,3306。未指定即使用内置默认端口进行扫描(21,22,23,25,53,80,110,139,143,389,443,445,465,873,993,995,1080,1723,1433,1521,3306,3389,3690,5432,5800,5900,6379,7001,8000,8001,8080,8081,8888,9200,9300,9080,9999,11211,27017) -m 指定线程数量 默认100线程 -t 指定HTTP请求超时时间,默认为10秒,端口扫描超时为值的1/2。 -n 不进行存活探测(ICMP)直接进行扫描。 结果报告保存在当前目录(扫描IP-时间戳.html)。 例子: python NAScan.py -h 10.111.1 python NAScan.py -h 192.168.1.1-192.168.2.111 python NAScan.py -h 10.111.1.22 -p 80,7001,8080 -m 200 -t 6 python NAScan.py -h ip.ini -p port.ini -n 服务识别在server_info.ini文件中配置 格式为:服务名|默认端口|正则 例 ftp|21|^220.*?ftp|^220- 正则为空时则使用端口进行匹配,否则以正则匹配结果为准。 项目地址 https://github.com/ywolf/ 欢迎大家反馈建议和BUG
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值