探测远程Windows主机的NetBIOS信息[2]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 ashao1981 的 blog

    //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);

本文关键:NetBIOS
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top