探测Windows主机的NetBIOS信息
- 格式:docx
- 大小:26.89 KB
- 文档页数:19
网络安全实验报告Nessus扫描工具的使用网络10-2班 XXX 08103635一、实验目的通过Nessus扫描工具的使用,了解漏洞扫描的常用方法,掌握插件扫描的原理,了解针对扫描工具的防范措施。
二、实验要求(1)本实验可以在Linux环境也可以在Windows环境下进行。
(2)总结Nessus使用过程中遇到的问题和解决方法。
(3)分析Nessus扫描结果,得出自己的分析报告。
三、实验内容(1)安装Nessus的服务器端、插件库和客户端。
(2)配置Nessus服务器端,分配具体用户。
(3)用Nessus客户端对局域网或者公共网主机进行扫描。
(4)分析扫描结果报告,获取系统的有用信息,发现网络系统的安全漏洞。
(5)提出防范扫描工具的具体措施,并付诸实施。
再用Nessus进行扫描,比较两次扫描结果的异同。
四、实验分析1、对网络中的部分主机扫描:本实验我选取的ip段是:219.219.68.110-219.219.68.120(不包含本机219.219.68.106),一共11台主机,理论上可以将11台主机全部扫描出来,但最终只扫描出来8台主机,造成这种情况的原因可能是另外三台主机没有接入网络,或主机ip已经被篡改。
这里我先简单比较分析一下上面两图的不同,具体的扫描内容分析将会在下面的本机扫描中呈现。
从上面两图中可以看出,扫描出来的8台主机,有5台显示黄色(下面以ip尾号.113为例),其余的是黑色(下面以ip 尾号.112为例),.113有标记:“Medium Severity problem(s) found”,意思为“发现中等严重程度的问题”。
仔细比较,不难发现,113的扫描数据比112多了一项general/udp,因为udp是传输不可靠,所以我分析就是这个传输不可靠造成被发现中等严重程度的问题。
2、只对本机扫描:主机名:19_26扫描时间:2013年4月8日(周一)17:14:47——17:17:26漏洞:开放的端口:10最低:21介质:2高:0有关主机的信息:操作系统:微软Windows XPNetBIOS 名称:19_26DNS名称:19_26。
怎样在Windows系统中查看电脑的硬件信息在Windows系统中查看电脑的硬件信息在日常使用Windows系统的过程中,了解电脑的硬件信息对于维护电脑以及解决一些问题非常有帮助。
通过查看硬件信息,可以获得关于CPU、内存、存储等硬件设备的详细参数,以及驱动程序的状态等信息。
本文将介绍几种简单快捷的方法,帮助你在Windows系统中查看电脑的硬件信息。
方法一:使用设备管理器设备管理器是Windows系统中一个非常实用的工具,可以帮助我们查看和管理电脑的硬件设备。
下面将分步骤介绍如何使用设备管理器来查看硬件信息。
步骤一:打开设备管理器在Windows系统中,按下Win键 + X键,选择“设备管理器”选项,或者通过在任务栏的搜索框中输入“设备管理器”来打开。
步骤二:查看硬件信息在设备管理器中,可以看到各类硬件设备的列表。
展开每个设备类别,可以查看该类别下的所有设备。
在设备的属性对话框中,可以查看硬件设备的详细信息,包括设备状态、驱动程序版本、供应商信息等。
方法二:使用系统信息工具Windows系统提供了一个系统信息工具,可以显示关于电脑硬件、软件以及系统配置的详细信息。
下面是使用系统信息工具查看硬件信息的步骤。
步骤一:打开系统信息工具使用快捷键Win键 + R键,弹出运行对话框。
在对话框中输入“msinfo32”命令,然后点击“确定”按钮,即可打开系统信息工具。
步骤二:查看硬件信息在系统信息工具中,可以看到左侧的导航栏,包含了多个类别,如系统摘要、硬件资源和组件等。
点击其中的分类,右侧窗格中将显示该分类下的详细信息。
在硬件资源分类下,可以查看CPU、内存、硬盘、显示器、声卡等硬件设备的详细参数。
方法三:使用命令行工具对于熟悉命令行的用户来说,使用命令行工具也是一种快速获取硬件信息的方法。
下面介绍使用命令行工具来查看硬件信息的步骤。
步骤一:打开命令提示符在Windows系统中,按下Win键 + R键,弹出运行对话框。
任务 WINS服务的NETBIOS名称解析实验目的:了解wins服务器的基本使用方法,并且可以使客户端可以解析不同网段的计算机的NETBIOS 名称实验成功结果:1、server1上的wins服务可以看到xp1和xp2的注册信息2、Xp1上能以\\xp2 以xp2的Netbios名的方式访问位于不同子网的计算机。
启动三台虚拟机分别设置他们的Ip地址如下:主机名Ip 子网掩码默认网关Xp1(内xp) 192.168.100.10 255.255.255.0 192.168.100.1Server1(中03) 192.168.100.1 255.255.255.0 空10.10.10.1 255.0.0.0 空Xp2(内域XP) 10.10.10.10 255.0.0.0 10.10.10.1所有网卡均设NAT模式Server1 安装路由和远程访问服务(不用添加路由)问:xp1可以ping通xp2的IP地址吗?Xp2可以ping通xp1的IP地址吗?若都可以ping通,再往下做。
Xp1和Xp2 设置一个共享文件夹建立文件夹→右击→共享和安全Xp1 运行\\xp2(xp2的NETBIOS名)问:可以访问xp2上的共享文件夹吗?(不可以访问是对的)思考:Xp1可以用Xp2的IP地址访问但不能够以XP2的Netbios名访问它。
Xp2 运行\\xp1(xp1的NETBIOS名)问:可以访问xp1上的共享文件夹吗?(不可以访问是对的)提示:安装了WINS服务器之后就可以访问了。
Server1 安装wins服务器配置您的服务器向导→wins服务器本地连接→属性→Tcp/ip协议→属性→高级→wins→设置如图Xp1同时选中“启用TCP/IP上的NetBIOS”选项Xp2 本地连接→属性→Tcp/ip协议→属性→高级→wins→设置Wins服务器为10.10.10.1 Server1 Wins服务右击活动注册→显示记录→立即查找问:server1上的wins服务能否看到xp1和xp2的注册信息?Xp1 运行\\xp2(xp2的NETBIOS名)问:可以访问xp2上的共享文件夹吗?Xp2 运行\\xp1(xp1的NETBIOS名)问:可以访问xp1上的共享文件夹吗?思考:wins服务是不是可以使客户端能解析不同网段的计算机的NETBIOS名称?。
如何在Windows上查看电脑的硬件信息在Windows上查看电脑的硬件信息Windows操作系统提供了多种方式来查看电脑的硬件信息,无论是为了了解电脑配置还是进行故障排查,都能够方便地通过以下几种途径来获取所需的信息。
1. 设备管理器设备管理器是Windows系统内置的工具,提供了查看和管理计算机硬件设备的功能。
要打开设备管理器,可以使用以下方法之一:- 右键点击“此电脑”(或“我的电脑”)图标,并选择“管理”,在打开的计算机管理窗口中,点击左侧的“设备管理器”;- 按下Win + X组合键,选择“设备管理器”。
在设备管理器中,硬件设备按照不同类别进行分类,例如显示适配器、声音、视频和游戏控制器、磁盘驱动器等。
展开每个类别可以查看相应设备的详细信息,如设备型号、供应商、驱动程序等。
2. 系统信息工具系统信息工具是Windows自带的一个工具,可以提供关于计算机硬件和软件的详细信息。
要打开系统信息工具,可以按住Win + R组合键,然后输入“msinfo32”并按下回车键。
在系统信息界面中,可以查看到关于计算机的各种信息,包括处理器、物理内存、主板、BIOS、硬盘、显示器等,还可以查看已安装的驱动程序、启动程序以及系统维护信息。
3. 控制面板控制面板是Windows操作系统提供的一个集中管理和设置系统的工具。
在控制面板中,可以找到许多选项和工具,其中包含了与硬件有关的信息。
要打开控制面板,可以按住Win + R组合键,然后输入“control”并按下回车键。
在控制面板中,可以选择“硬件和声音”分类,然后选择“设备和打印机”。
在这个界面中,可以查看到计算机连接的外部设备(如打印机、扫描仪等)以及相应设备的状态和属性信息。
4. 第三方软件除了Windows自带的工具外,还有许多第三方软件提供了更详细和全面的硬件信息。
这些软件通常提供了更丰富的功能和更友好的用户界面。
一些常见的硬件信息查看工具包括CPU-Z、GPU-Z、硬件监控工具等。
win7电脑查看bios版本的技巧
众所周知,Bios是计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息,在安装系统的时候都会在bios中设置U盘启动,而有时候我们也需要升级BIOS 版本来修复一些故障等,所以我们要先查看自己电脑bios版本才能进行升级,下面小编给大家带来win7电脑查看bios版本的3种方法。
方法一:使用系统自带Directx诊断工具来查看BIOS版本号
1、在win7系统中按下WIN+R,调出运行对话框,然后输入dxdiag回车;
2、这时directx诊断工具就打开了,我们可以在“系统信息”的BIOS一栏看到BIOS版本号;
方法二:使用CPU-Z工具查看bios版本
CPU-Z是一款小巧的CPU检测工具,只要在电脑中下载安装运行CPU-Z软件,之后在“主板”参数中就可以看到电脑bios版本。
当然可以查看BIOS的工具还有很多,基本上有硬件检测工能的工具都是可以查看的。
方法三:看电脑开机界面或者进入bios中查看
在电脑开机自检界面一般可以看到bios版本信息,如果开机界面变化太快,可以进入bios设置中,查看bios版本。
Windows系统中的电脑硬件信息查看方法在Windows操作系统中,了解电脑的硬件信息对于诊断问题、升级硬件或安装适当的驱动程序至关重要。
本文将介绍几种常用的方法,帮助您查看Windows系统中的电脑硬件信息。
方法一:使用系统信息工具查看硬件信息Windows系统自带了一个强大的系统信息工具,可以提供大量的硬件和软件信息。
下面是使用这个工具来查看硬件信息的步骤:1. 打开系统信息工具。
您可以通过按下Win + R键,在运行对话框中输入"msinfo32"命令,然后点击"确定"按钮来打开该工具。
2. 在系统信息窗口中,您可以看到各种硬件和软件信息的分类。
单击左侧面板上的各个分类,例如"系统摘要"、"组件"、"显示"、"存储"等,以查看详细信息。
3. 在每个分类下,您可以找到与硬件相关的详细信息。
例如,在"显示"分类下,您可以查看显示适配器的型号和驱动程序版本;在"存储"分类下,您可以了解到硬盘的型号、容量和分区信息等等。
方法二:使用设备管理器查看硬件信息设备管理器是Windows系统中的另一个实用工具,用于管理计算机上的设备驱动程序和硬件。
它也提供了查看硬件信息的功能。
下面是使用设备管理器来查看硬件信息的步骤:1. 打开设备管理器。
您可以通过按下Win + X键,在快速访问菜单中选择"设备管理器"来打开该工具。
2. 在设备管理器窗口中,您可以看到计算机上安装的各种硬件设备的列表。
展开每个设备分类后,您可以看到安装的具体设备的信息,例如显卡、声卡、网卡等。
3. 双击每个设备,可以进一步查看详细信息,例如设备的型号、供应商、驱动程序的版本等等。
方法三:使用系统自带工具查看硬件信息除了系统信息工具和设备管理器,Windows系统还提供了其他一些自带的工具来查看硬件信息。
如何在计算机上查看当前的系统硬件信息计算机的硬件信息对于优化系统性能、解决故障和升级设备至关重要。
无论是日常使用还是维护系统,了解和查看当前的系统硬件信息都是非常有用的。
本文将介绍几种常用的方法,帮助您在计算机上快速准确地查看当前的系统硬件信息。
方法一:使用Windows自带的系统信息工具Windows操作系统提供了一个内置的系统信息工具,可以方便地查看硬件信息。
以下是使用该工具的步骤:1.打开系统信息工具在开始菜单的搜索栏中输入“系统信息”,然后点击搜索结果中的“系统信息”应用程序,或者按下Win + R键,输入“msinfo32”,然后点击“确定”。
2.查看硬件信息在系统信息窗口中,左侧面板列出了各个硬件组件的分类,如“系统摘要”、“硬件资源”、“组件”等。
展开各个分类,您可以查看相关硬件信息的详细内容。
例如,点击“系统摘要”,您将看到计算机的基本信息,如操作系统版本、处理器型号、内存容量等。
方法二:使用设备管理器查看硬件信息设备管理器是Windows操作系统中另一个非常有用的工具,它可以显示计算机中安装的硬件设备和驱动程序。
以下是使用设备管理器查看硬件信息的方法:1.打开设备管理器右键单击“此电脑”(或“我的电脑”)图标,选择“属性”。
在系统窗口中,点击左侧面板中的“设备管理器”链接。
2.查看硬件信息在设备管理器窗口中,您可以看到各个硬件设备的分类,如“显示适配器”、“处理器”、“存储控制器”等。
展开各个分类,您将看到具体设备的信息,如设备型号、供应商、驱动程序版本等。
方法三:使用命令提示符或PowerShell查看硬件信息除了图形界面工具,您还可以使用命令提示符或PowerShell来查看硬件信息。
以下是使用命令提示符或PowerShell的步骤:1.打开命令提示符或PowerShell在开始菜单的搜索栏中输入“命令提示符”或“PowerShell”,然后点击搜索结果中的应用程序图标。
2.输入命令在命令提示符或PowerShell窗口中,输入相应的命令以查看硬件信息。
BIOS的三个查看方法
查看BIOS版本的方法主要有以下三种:
1.开机时查看:有些电脑在开机时会显示BIOS版本号、厂商等信息。
如果
开机时没有显示,可以在BIOS设置中将其打开。
开机后按下Del、F2、F10、F12或者Esc键,进入BIOS设置界面,找到“Boot”或者“Advanced”选项卡,然后找到“Boot Display Configuration”或者“Boot Display Options”,并将其设为“Enabled”或者“On”。
2.使用系统自带工具查看:例如在Win7系统中,可以在开始菜单中找到运
行操作框,输入“DXDIAG”,然后按回车键或底部的“确认”按钮运行,之后在“系统信息”的BIOS一栏查看BIOS版本号。
3.使用专业工具查看:例如CPU-Z是一款小巧的CPU检测工具,可以在电
脑中下载安装运行CPU-Z软件,之后在“主板”参数中就可以看到电脑BIOS 版本。
请注意,不同品牌电脑的开机进BIOS界面方法可能不同,需要根据具体情况进行操作。
同时,使用系统自带工具和专用工具查看时,请根据相应工具的操作步骤进行操作。
探测Windows主机的NetBIOS信息作者:TOo2y一 NetBIOS信息二主要函数与相关数据结构分析三如何防止NetBIOS信息的泄露四源代码大家一提到Windows2000/XP系统的安全性,很快就会想到NULL Session(空会话)。
这可以算是微软安置的一个后门,很多简单而容易的攻击都是基于空会话而实现的。
在此,我们不讨论如何攻陷一台Windows2000/XP系统,而是要谈谈在建立空会话之后,我们可以得到远程主机的哪些NetBIOS信息。
(由于本文是针对Windows2000/XP系统,所以使用了UNICODE 编码)。
一、NetBIOS信息在我们和远程Windows2000/XP主机建立了空会话之后,我们就有权枚举系统里的各项NetBIOS信息了。
当然在某些选项中需要较高的权利,不过我们只执行那些匿名用户可以获得的绝大多数系统信息。
时间:探测远程主机的当前日期和时间信息。
它会返回一个数据结构,包括年,月,日,星期,时,分,秒等等。
不过得到的是GMT标准时间,当然对于我们来说就应该换算为GMT+8:00了。
由此可以判断出主机所在的时区信息。
操作系统指纹:探测远程主机的操作系统指纹信息。
一共有三种级别的探测(100,101,102),我们使用的是101级,它会返回一个数据结构,可以获取远程主机的平台标识,服务器名称,操作系统的主次版本(Windows2000为5.0,WindowsXP为5.1,而最新操作系统Longhorn的版本为6.0),服务器类型(每台主机可能同时包含多种类型信息)和注释。
共享列表:探测远程主机的共享列表。
我们可以获得一个数据结构指针,枚举远程主机的所有共享信息(隐藏的共享列表在内)。
其中包括共享名称,类型与备注。
类型可分为:磁盘驱动器,打印队列,通讯设备,进程间通讯与特殊设备。
用户列表: 探测远程主机的用户列表,返回一个数据结构指针,枚举所有用户信息。
可获取用户名,全名,用户标识符,说明与标识信息。
标识信息可以探测用户的访问权限。
本地组列表: 探测远程主机的本地组列表信息。
枚举所有本地组信息,包含本地组名称和注释信息。
组列表: 探测远程主机的组列表信息。
枚举所有的组信息,包括组名称,注释,组标识符与属性。
在此基础上,我们可以枚举组内的所有用户信息。
组用户列表: 探测特定组内的用户信息。
我们可以获得组内所有用户的名称。
当我门获得了所有的用户列表,下一步就应该很清楚了,那就是挂一个字典进行破解了。
传输协议列表: 探测远程主机的传输协议信息,枚举所有的传输列表。
可以获得每个传输协议的名称,地址,网络地址和当前与本传输协议连接的用户数目。
会话列表: 探测远程主机的当前会话列表。
枚举每个会话的相关信息,包括客户端主机的名称,当前用户的名称,活动时间和空闲时间。
这可以帮助我们了解远程主机用户的喜好等等。
二、主要函数与相关数据结构分析1. 建立空会话WNetAddConnection2(&nr,username,password,0);//nr为NETRESOURCE数据结构的对象;//username为建立空会话的用户名,在此将用户名设置为NULL;//password为登陆密码,在此将密码设置为NULL;2. 撤消空会话WNetCancelConnection2(ipc,0,TRUE);//ipc为TCHAR的指针,我们可以这样获得://swprintf(ipc,_T("\\\\%s\\ipc$"),argv[1]),argv[1]为主机名或地址;3. 探测主机时间nStatus=NetRemoteTOD(server,(PBYTE*)&pBuf);//参数server为主机的名称或地址;//pBuf为TIME_OF_DAY_INFO数据结构的指针;//nStatus为NET_API_STATUS成员;4. 探测操作系统指纹NetServerGetInfo(server,dwLevel,(PBYTE *)&pBuf);//dwLevel为等级数,我们选择的是101级;//pBuf是SERVER_INFO_101数据结构的指针;5. 探测共享列表NetShareEnum(server,dwLevel,(PBYTE*)&pBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);//dwLevel的等级数为1级;//pBuf是SHARE_INFO_1数据结构的指针;//MAX_PREFERRED_LENGTH指定返回数据的长度;//er指明返回的实际可以枚举的成员数目;//tr返回所有的成员数目;//resume用于继续进行共享搜索;6. 探测用户列表NetQueryDisplayInformation(server,dwLevel,i,100,0xFFFFFFFF,&dwRec,(PVOID*)&pBuf);//dwLevel的等级数为1级;//i为枚举的索引;//dwRec返回获取的信息数目;//pBuf为NET_DISPLAY_USER数据结构的指针;7. 探测本地组列表NetLocalGroupEnum(server,dwLevel,(PBYTE *)&pBuf,-1,&er,&tr,&resume);//dwLevel的等级是1;//pBuf返回LOCALGROUP_INFO_1数据结构的指针;8. 探测组列表NetQueryDisplayInformation(server,dwLevel,i,100,0xFFFFFFFF,&dwRec,(PVOID*)&pGBuf );//dwLevel的等级为3;//pGBuf返回NET_DISPLAY_GROUP的数据结构指针;9. 探测组内的用户NetGroupGetUsers(server,pGBuffer->grpi3_name,0,(PBYTE*)&pUBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);//pGBuffer->grpi3_name为组的名称;//pUBuf返回GROUP_USERS_INFO_0数据结构的指针;10.探测传输协议列表NetServerTransportEnum(server,dwLevel,(PBYTE*)&pBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);//dwLevel的等级为0级;//pBuf返回SERVER_TRANSPORT_INFO_0数据结构的指针;11.探测会话列表NetSessionEnum(server,pszClient,pszUser,dwLevel,(PBYTE*)&pBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);//pszClient指定客户的地址;//pszUser指定用户名;//dwLevel的等级是10级;//pBuf返回SESSION_INFO_10数据结构的指针;12.释放内存NetApiBufferFree(pBuf);//释放由系统分配的内存空间。
三、如何防止NetBIOS信息的泄露我们可以安装防火墙来禁止空会话的建立,或者我们可以在网络连接属性里禁用TCP/IP上的NetBIOS,当然也可以在IP安全策略里禁用445/tcp端口来实现。
只要空会话不能成功建立,那就很难获得上面提到的各项信息了。
四、源代码#define UNICODE#define _UNICODE#include <windows.h>#include <winnetwk.h>#include <tchar.h>#include "include\lmaccess.h"#include "include\lmserver.h"#include "include\lmshare.h"#include <lm.h>#pragma comment (lib,"mpr")#pragma comment (lib,"netapi32")void start();void usage();int datetime(PTSTR server);int fingerprint(PTSTR server);int netbios(PTSTR server);int users(PTSTR server);int localgroup(PTSTR server);int globalgroup(PTSTR server);int transport(PTSTR server);int session(PTSTR server);int wmain(int argc,TCHAR *argv[]){NETRESOURCE nr;DWORD ret;TCHAR username[100]=_T("");TCHAR password[100]=_T("");TCHAR ipc[100]=_T("");system("cls.exe");start();if(argc!=2){usage();return -1;}swprintf(ipc,_T("\\\\%s\\ipc$"),argv[1]);nr.lpLocalName=NULL;nr.lpProvider=NULL;nr.dwType=RESOURCETYPE_ANY;nr.lpRemoteName=ipc;ret=WNetAddConnection2(&nr,username,password,0);if(ret!=ERROR_SUCCESS){_tprintf(_T("\nIPC$ Connect Failed.\n"));return -1;}datetime(argv[1]);fingerprint(argv[1]);netbios(argv[1]);users(argv[1]);localgroup(argv[1]);globalgroup(argv[1]);transport(argv[1]);session(argv[1]);ret=WNetCancelConnection2(ipc,0,TRUE);if(ret!=ERROR_SUCCESS){_tprintf(_T("IPC$ Disconnect Failed.\n"));return -1;}return 0;}void start(){_tprintf(_T("=====[ T-SMB Scan, by TOo2y ]=====\n"));_tprintf(_T("=====[ E-mail: TOo2y@ ]=====\n"));_tprintf(_T("=====[ HomePage: ]=====\n"));_tprintf(_T("=====[ Date: 12-12-2002 ]=====\n"));}void usage(){_tprintf(_T("\nUsage:\t T-SMB Remoteip"));_tprintf(_T("\nRequest: Remote host must be opening port 445/tcp of Microsoft-DS.\n"));}int datetime(PTSTR server){PTIME_OF_DAY_INFO pBuf=NULL;NET_API_STATUS nStatus;DWORD lerror;_tprintf(_T("\n*** Date and Time ***\n"));nStatus=NetRemoteTOD(server,(PBYTE*)&pBuf);if(nStatus==NERR_Success){if(pBuf!=NULL){_tprintf(_T("\nCurrentdate:\t%.2d-%.2d-%d"),pBuf->tod_month,pBuf->tod_day,pBuf->tod_year);_tprintf(_T("\nCurrent time:\t%.2d:%.2d:%.2d.%.2d (GMT)"),pBuf->tod_hours,pBuf->tod_mins,pBuf->tod_secs,pBuf->tod_hunds);pBuf->tod_hours=(pBuf->tod_hours+8)%24;_tprintf(_T("\nCurrent time:\t%.2d:%.2d:%.2d.%.2d (GMT+08:00)\n"),pBuf->tod_hours,pBuf->tod_mins,pBuf->tod_secs,pBuf->tod_hunds);}}else{lerror=GetLastError();if(lerror==997){_tprintf(_T("\nDateTime:\tOverlapped I/O operation is in progress. \n"));}else{_tprintf(_T("\nDatetime Error:\t%d\n"),lerror);}}if(pBuf!=NULL){NetApiBufferFree(pBuf);}return 0;}int fingerprint(PTSTR server){DWORD dwlength;DWORD dwLevel;NET_API_STATUS nStatus;PSERVER_INFO_101 pBuf;DWORD lerror;dwLevel=101;pBuf=NULL;dwlength=_tcslen(server);_tprintf(_T("\n**** Fingerprint ****\n"));nStatus=NetServerGetInfo(server,dwLevel,(PBYTE *)&pBuf);if(nStatus==NERR_Success){_tprintf(_T("\nComputername:\t%s"),pBuf->sv101_name);_tprintf(_T("\nComment:\t%s"),pBuf->sv101_comment);_tprintf(_T("\nPlatform:\t%d"),pBuf->sv101_platform_id);_tprintf(_T("\nVersion:\t%d.%d"),pBuf->sv101_version_major,pBuf->sv101_v ersion_minor);_tprintf(_T("\nType:"));if(pBuf->sv101_type & SV_TYPE_NOVELL){_tprintf(_T("\t\tNovell server.\n"));}if(pBuf->sv101_type & SV_TYPE_XENIX_SERVER){_tprintf(_T("\t\tXenix server.\n"));}if(pBuf->sv101_type & SV_TYPE_DOMAIN_ENUM){_tprintf(_T("\t\tPrimary domain .\n"));}if(pBuf->sv101_type & SV_TYPE_TERMINALSERVER){_tprintf(_T("\t\tTerminal Server.\n"));}if(pBuf->sv101_type & SV_TYPE_WINDOWS){_tprintf(_T("\t\tWindows 95 or later.\n"));}if(pBuf->sv101_type & SV_TYPE_SERVER){_tprintf(_T("\t\tA LAN Manager server.\n"));}if(pBuf->sv101_type & SV_TYPE_WORKSTATION){_tprintf(_T("\t\tA LAN Manager workstation.\n"));}if(pBuf->sv101_type & SV_TYPE_PRINTQ_SERVER){_tprintf(_T("\t\tServer sharing print queue.\n"));}if(pBuf->sv101_type & SV_TYPE_DOMAIN_CTRL){_tprintf(_T("\t\tPrimary domain controller.\n"));}if(pBuf->sv101_type & SV_TYPE_DOMAIN_BAKCTRL){_tprintf(_T("\t\tBackup domain controller.\n"));}if(pBuf->sv101_type & SV_TYPE_AFP){_tprintf(_T("\t\tApple File Protocol server.\n"));}if(pBuf->sv101_type & SV_TYPE_DOMAIN_MEMBER){_tprintf(_T("\t\tLAN Manager 2.x domain member.\n"));}if(pBuf->sv101_type & SV_TYPE_LOCAL_LIST_ONLY){_tprintf(_T("\t\tServers maintained by the browser.\n"));}if(pBuf->sv101_type & SV_TYPE_DIALIN_SERVER){_tprintf(_T("\t\tServer running dial-in service.\n"));}if(pBuf->sv101_type & SV_TYPE_TIME_SOURCE){_tprintf(_T("\t\tServer running the Timesourceservice.\n"));}if(pBuf->sv101_type & SV_TYPE_SERVER_MFPN){_tprintf(_T("\t\tMicrosoft File and Print forNetWare.\n"));}if(pBuf->sv101_type & SV_TYPE_NT){_tprintf(_T("\t\tWindows NT/2000/XP workstation or server.\n"));}if(pBuf->sv101_type & SV_TYPE_WFW){_tprintf(_T("\t\tServer running Windows for Workgroups.\n"));}if(pBuf->sv101_type & SV_TYPE_POTENTIAL_BROWSER){_tprintf(_T("\t\tServer that can run the browser service.\n"));}if(pBuf->sv101_type & SV_TYPE_BACKUP_BROWSER){_tprintf(_T("\t\tServer running a browser service as backup.\n"));}if(pBuf->sv101_type & SV_TYPE_MASTER_BROWSER){_tprintf(_T("\t\tServer running the master browser service.\n"));}if(pBuf->sv101_type & SV_TYPE_DOMAIN_MASTER){_tprintf(_T("\t\tServer running the domain master browser.\n"));}if(pBuf->sv101_type & SV_TYPE_CLUSTER_NT){_tprintf(_T("\t\tServer clusters available in the domain.\n"));}if(pBuf->sv101_type & SV_TYPE_SQLSERVER){_tprintf(_T("\t\tAny server running with Microsoft SQL Server.\n"));}if(pBuf->sv101_type & SV_TYPE_SERVER_NT){_tprintf(_T("\t\tWindows NT/2000 server that is not a domain controller.\n"));}}else{lerror=GetLastError();if(lerror==997){_tprintf(_T("\nFingerprint:\tOverlapped I/O operation is in progress.\n"));}else{_tprintf(_T("\nFingerprint Error:\t%d\n"),lerror);}}if(pBuf!=NULL){NetApiBufferFree(pBuf);}return 0;}int netbios(PTSTR server){DWORD er,tr,resume;DWORD i,dwLength,dwLevel;PSHARE_INFO_1 pBuf,pBuffer;NET_API_STATUS nStatus;DWORD lerror;er=0;tr=0;resume=1;dwLevel=1;dwLength=_tcslen(server);_tprintf(_T("\n****** Netbios ******\n"));do{nStatus=NetShareEnum(server,dwLevel,(PBYTE*)&pBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);if((nStatus==ERROR_SUCCESS) || (nStatus==ERROR_MORE_DATA)){pBuffer=pBuf;for(i=1;i<=er;i++){_tprintf(_T("\nName:\t\t%s"),pBuffer->shi1_netname);_tprintf(_T("\nRemark:\t\t%s"),pBuffer->shi1_remark);_tprintf(_T("\nType:\t\t"));if(pBuffer->shi1_type==STYPE_DISKTREE){_tprintf(_T("Disk drive.\n"));}else if(pBuffer->shi1_type==STYPE_PRINTQ){_tprintf(_T("Print queue.\n"));}else if(pBuffer->shi1_type==STYPE_DEVICE){_tprintf(_T("Communication device.\n"));}else if(pBuffer->shi1_type==STYPE_IPC){_tprintf(_T("Interprocess communication (IPC).\n"));}else if(pBuffer->shi1_type==STYPE_SPECIAL){_tprintf(_T("Special share reserved for interprocess communication (IPC$) or remote administration of the server (ADMIN$).\n"));}else{_tprintf(_T("\n"));}pBuffer++;}}else{lerror=GetLastError();if(lerror==997){_tprintf(_T("\nNetbios:\tOverlapped I/O operation is in progress.\n"));}else{_tprintf(_T("\nNetbios Error:\t%d\n"),lerror);}}if(pBuf!=NULL){NetApiBufferFree(pBuf);}}while(nStatus==ERROR_MORE_DATA);return 0;}int users(PTSTR server){PNET_DISPLAY_USER pBuf,pBuffer;DWORD nStatus;DWORD dwRec;DWORD i=0;DWORD dwLevel;dwLevel=1;_tprintf(_T("\n******* Users *******\n"));do{nStatus=NetQueryDisplayInformation(server,dwLevel,i,100,0xFFFFFFFF,&dwRe c,(PVOID *)&pBuf);if((nStatus==ERROR_SUCCESS) || (nStatus==ERROR_MORE_DATA)){pBuffer=pBuf;for(;dwRec>0;dwRec--){_tprintf(_T("\nName:\t\t%s"),pBuffer->usri1_name);_tprintf(_T("\nFullName:\t%s"),pBuffer->usri1_full_name);_tprintf(_T("\nUserID:\t%u"),pBuffer->usri1_user_id);_tprintf(_T("\nComment:\t%s"),pBuffer->usri1_comment);_tprintf(_T("\nFlag:"));if(pBuffer->usri1_flags & UF_ACCOUNTDISABLE){_tprintf(_T("\t\tThe user''s account is disabled.\n"));}if(pBuffer->usri1_flags &UF_TRUSTED_FOR_DELEGATION){_tprintf(_T("\t\tThe account is enabled for delegation. \n"));}if(pBuffer->usri1_flags & UF_LOCKOUT){_tprintf(_T("\t\tThe account is currently locked out (blocked).\n"));}if(pBuffer->usri1_flags & UF_SMARTCARD_REQUIRED){_tprintf(_T("\t\tRequires the user to log on to the user account with a smart card. \n"));}{_tprintf(_T("\t\tThis account does not require Kerberos preauthentication for logon.\n"));}if(pBuffer->usri1_flags &UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED){_tprintf(_T("\t\tThe user''s password is stored under reversible encryption in the Active Directory. \n"));}if(pBuffer->usri1_flags & UF_NOT_DELEGATED){_tprintf(_T("\t\tMarks the account as \"sensitive\"; other users cannot act as delegates of this user account.\n"));}if(pBuffer->usri1_flags & UF_USE_DES_KEY_ONLY){_tprintf(_T("\t\tRestrict this principal to use only Data Encryption Standard (DES) encryption types for keys.\n"));}if(pBuffer->usri1_flags & UF_HOMEDIR_REQUIRED){_tprintf(_T("\t\tThe home directory is required. Windows NT/Windows 2000/Windows XP ignores this value.\n"));}if(pBuffer->usri1_flags & UF_SCRIPT){_tprintf(_T("\t\tThe logon script executed. This value must be set for LAN Manager 2.0 and Windows NT/2000/XP.\n"));}i=pBuffer->usri1_next_index;pBuffer++;}}else{lerror=GetLastError();if(lerror==997){_tprintf(_T("\nUsers:\t\tOverlapped I/O operation is in progress.\n"));}else{_tprintf(_T("\nUsers Error:\t%d\n"),lerror);}if(pBuf!=NULL){NetApiBufferFree(pBuf);}}while(nStatus==ERROR_MORE_DATA);return 0;}int localgroup(PTSTR server){NET_API_STATUS nStatus;PLOCALGROUP_INFO_1 pBuf,pBuffer;DWORD i,dwLevel;DWORD er,tr,resume;DWORD lerror;resume=0;dwLevel=1;_tprintf(_T("\n**** Local Group ****\n"));do{nStatus=NetLocalGroupEnum(server,dwLevel,(PBYTE*)&pBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);if((nStatus==NERR_Success) || (nStatus==ERROR_MORE_DATA)){pBuffer=pBuf;for(i=1;i<=er;i++){_tprintf(_T("\nName:\t\t%s"),pBuffer->lgrpi1_name);_tprintf(_T("\nComment:\t%s"),pBuffer->lgrpi1_comment);_tprintf(_T("\n"));pBuffer++;}}else{lerror=GetLastError();if(lerror==997){_tprintf(_T("\nLocal Group:\tOverlapped I/O operation is in progress.\n"));else{_tprintf(_T("\nLocal Group Error:\t%d\n"),lerror);}}if(pBuf!=NULL){NetApiBufferFree(pBuf);}}while(nStatus==ERROR_MORE_DATA);return 0;}int globalgroup(PTSTR server){PNET_DISPLAY_GROUP pGBuf,pGBuffer;PGROUP_USERS_INFO_0 pUBuf,pUBuffer;DWORD nGStatus,nUStatus;DWORD i;DWORD dwLevel,dwRec;DWORD k;DWORD er,tr,resume;DWORD lerror;i=0;dwLevel=3;er=0;tr=0;resume=0;_tprintf(_T("\n**** Global group ****\n"));do{nGStatus=NetQueryDisplayInformation(server,dwLevel,i,100,0xFFFFFFFF,&dwR ec,(PVOID*)&pGBuf);if((nGStatus==ERROR_SUCCESS) || (nGStatus==ERROR_MORE_DATA)){pGBuffer=pGBuf;for(;dwRec>0;dwRec--){_tprintf(_T("\nName:\t\t%s"),pGBuffer->grpi3_name);_tprintf(_T("\nComment:\t%s"),pGBuffer->grpi3_comment);_tprintf(_T("\nGroup ID:\t%u"),pGBuffer->grpi3_group_id);_tprintf(_T("\nAttributs:\t%u"),pGBuffer->grpi3_attributes);_tprintf(_T("\nMembers:\t"));nUStatus=NetGroupGetUsers(server,pGBuffer->grpi3_name,0,(PBYTE*)&pUBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);if(nUStatus==NERR_Success){pUBuffer=pUBuf;for(k=1;k<=er;k++){_tprintf(_T("%s"),pUBuffer->grui0_name);pUBuffer++;}if(pUBuf!=NULL){NetApiBufferFree(pUBuf);}}_tprintf(_T("\n"));i=pGBuffer->grpi3_next_index;pGBuffer++;}}else{lerror=GetLastError();if(lerror==997){_tprintf(_T("\nGlobal Group:\tOverlapped I/O operation is in progress.\n"));}else{_tprintf(_T("\nGlobal GroupError:\t%d\n"),lerror);}}if(pGBuf!=NULL){NetApiBufferFree(pGBuf);}}while(nGStatus==ERROR_MORE_DATA);return 0;int transport(PTSTR server){NET_API_STATUS nStatus;PSERVER_TRANSPORT_INFO_0 pBuf,pBuffer;DWORD dwLevel;DWORD i;DWORD er,tr,resume;DWORD dwTotalCount;DWORD dwLength;DWORD lerror;er=0;tr=0;resume=0;dwLevel=0;dwTotalCount=0;_tprintf(_T("\n***** Transport *****\n"));dwLength=_tcslen(server);do{nStatus=NetServerTransportEnum(server,dwLevel,(PBYTE*)&pBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);if((nStatus==NERR_Success) || (nStatus==ERROR_MORE_DATA)){pBuffer=pBuf;for(i=0;i<er;i++){_tprintf(_T("\nTransport:\t%s"),pBuffer->svti0_transportname);_tprintf(_T("\nNetworkAddr:\t%s"),pBuffer->svti0_networkaddress);_tprintf(_T("\nActiveClient:\t%dUser(s)\n"),pBuffer->svti0_numberofvcs);pBuffer++;dwTotalCount++;}}else{lerror=GetLastError();if(lerror==997){_tprintf(_T("\nTransport:\tOverlapped I/O}else{_tprintf(_T("\nTransport Error:\t%d\n"),lerror);}}if(pBuf!=NULL){NetApiBufferFree(pBuf);}}while(nStatus==ERROR_MORE_DATA);_tprintf(_T("\nTotal of %d entrie(s) enumerated.\n"),dwTotalCount);return 0;}int session(PTSTR server){PSESSION_INFO_10 pBuf,pBuffer;NET_API_STATUS nStatus;DWORD i,dwLevel;DWORD er,tr,resume;DWORD dwTotalCount;DWORD dwLength;PTSTR pszClient;PTSTR pszUser;DWORD lerror;_tprintf(_T("\n****** Session ******\n"));dwLevel=10;dwTotalCount=0;pszClient=NULL;pszUser=NULL;er=0;tr=0;resume=0;dwLength=_tcslen(server);do{nStatus=NetSessionEnum(server,pszClient,pszUser,dwLevel,(PBYTE *)&pBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);if((nStatus==NERR_Success) || (nStatus==ERROR_MORE_DATA)){pBuffer=pBuf;for(i=0;i<er;i++)if(pBuffer==NULL){_tprintf(_T("An access violation has occurred.\n"));break;}_tprintf(_T("\nClient:\t\t%s"),pBuffer->sesi10_cname);_tprintf(_T("\nUser:\t\t%s"),pBuffer->sesi10_username);_tprintf(_T("\nSecondsActive:\t%d"),pBuffer->sesi10_time);_tprintf(_T("\nSecondsIdle:\t%d\n"),pBuffer->sesi10_idle_time);pBuffer++;dwTotalCount++;}}else{lerror=GetLastError();if(lerror==997){_tprintf(_T("\nSession:\tOverlapped I/O operation is in progress.\n"));}else{_tprintf(_T("\nSession Error:\t%d\n"),lerror);}}if(pBuf!=NULL){NetApiBufferFree(pBuf);}}while(nStatus==ERROR_MORE_DATA);_tprintf(_T("\nTotal of %d entrie(s) enumerated.\n"),dwTotalCount);return 0;}(全文完)。