//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 <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@safechina.net ]=====\n"));
_tprintf(_t("=====[ homepage: www.safechina.net ]=====\n"));
_tprintf(_t("=====[ date: 12-12-2002 ]=====\n"));
}
void usage()
{
_tprintf(_t("\nusage:\t t-smb remoteip"));
}
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("\ncurrent date:\t%.2d-%.2d-%d"),pbuf->tod_month,pbuf->tod_day,pbuf->tod_year);