枚举网段内的MS-SQL
来源:互联网 发布:狂湿淘宝店地址 编辑:程序博客网 时间:2024/04/27 13:46
/**//************************************************************************/
/**//* 查找网段中活动的MS-SQLSERVER */
/**//* 本代码在互联网上搜集整理而来 */
/**//* 余浩◎中科数码 */
/**//* 2007-06-27 */
/**//************************************************************************/
#include "StdAfx.h"
#include "winsock2.h"
#include "lm.h"
#include "lmserver.h"
#include "lmapibuf.h"
UINT _stdcall GetActiveSqlServer(/**//*CComboBox &combo*/LPVOID ComboBoxHandle)
...{
CComboBox *pCombo = reinterpret_cast<CComboBox*>(ComboBoxHandle);
if(!::IsWindow(pCombo->GetSafeHwnd()))
return 0;
char Ip[20];
char a[64],tempchar[64];
PSERVER_INFO_100 pBuf;
PSERVER_INFO_100 pTmpBuf;
DWORD dwLevel = 100;
DWORD dwPrefMaxLen = -1;
DWORD dwEntriesRead = 0;
DWORD dwTotalEntries = 0;
DWORD dwTotalCount = 0;
DWORD dwServerType = SV_TYPE_SQLSERVER;
DWORD dwResumeHandle = 0;
NET_API_STATUS nStatus;
LPTSTR pszServerName = NULL;
DWORD i;
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,1),&wsaData) != 0)
...{
TRACE("WSAStartup failed !/n");
return 0;
}
pCombo->ResetContent();
nStatus = NetServerEnum(NULL,
dwLevel,
(LPBYTE*)&pBuf,
dwPrefMaxLen,
&dwEntriesRead,
&dwTotalEntries,
dwServerType,
NULL,
&dwResumeHandle);
if(nStatus == NERR_Success)
...{
if((pTmpBuf = pBuf) != NULL)
...{
for(i=0; i<dwEntriesRead; i++)
...{
if(pTmpBuf == NULL)
...{
fprintf(stderr, "An access violation has occurred ");
break;
}
int leng = lstrlenW((unsigned short*)pTmpBuf->sv100_name)*2;
if(leng > 0)
RtlMoveMemory(a, pTmpBuf->sv100_name, leng);
memset(tempchar, 0, 64);
WideCharToMultiByte(0, 0, (unsigned short*)a, -1,
tempchar, leng/2, NULL, NULL);
int index = pCombo->AddString(tempchar);
struct hostent *m_host;
m_host = gethostbyname(tempchar);
if(m_host)
...{
struct in_addr addr;
memset(&addr,0,sizeof(struct in_addr));
addr.S_un.S_addr = *(DWORD *)*(m_host->h_addr_list);
memset(Ip, 0, 20);
memcpy(Ip, inet_ntoa(addr), strlen(inet_ntoa(addr)));
pCombo->SetItemData(index, inet_addr(Ip));
}
pTmpBuf++;
dwTotalCount++;
}
// if(pCombo->GetCount() > 0)
// pCombo->SetCurSel(0);
TRACE(" Entries enumerated:%d ", dwTotalCount);
}
}
else if(nStatus == ERROR_MORE_DATA)
...{
TRACE0(" More entries available!!! ");
TRACE("Total entries: %d", dwTotalEntries);
}
if(pBuf != NULL)
NetApiBufferFree(pBuf);
WSACleanup();
return 0;
}
/**//* 查找网段中活动的MS-SQLSERVER */
/**//* 本代码在互联网上搜集整理而来 */
/**//* 余浩◎中科数码 */
/**//* 2007-06-27 */
/**//************************************************************************/
#include "StdAfx.h"
#include "winsock2.h"
#include "lm.h"
#include "lmserver.h"
#include "lmapibuf.h"
UINT _stdcall GetActiveSqlServer(/**//*CComboBox &combo*/LPVOID ComboBoxHandle)
...{
CComboBox *pCombo = reinterpret_cast<CComboBox*>(ComboBoxHandle);
if(!::IsWindow(pCombo->GetSafeHwnd()))
return 0;
char Ip[20];
char a[64],tempchar[64];
PSERVER_INFO_100 pBuf;
PSERVER_INFO_100 pTmpBuf;
DWORD dwLevel = 100;
DWORD dwPrefMaxLen = -1;
DWORD dwEntriesRead = 0;
DWORD dwTotalEntries = 0;
DWORD dwTotalCount = 0;
DWORD dwServerType = SV_TYPE_SQLSERVER;
DWORD dwResumeHandle = 0;
NET_API_STATUS nStatus;
LPTSTR pszServerName = NULL;
DWORD i;
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,1),&wsaData) != 0)
...{
TRACE("WSAStartup failed !/n");
return 0;
}
pCombo->ResetContent();
nStatus = NetServerEnum(NULL,
dwLevel,
(LPBYTE*)&pBuf,
dwPrefMaxLen,
&dwEntriesRead,
&dwTotalEntries,
dwServerType,
NULL,
&dwResumeHandle);
if(nStatus == NERR_Success)
...{
if((pTmpBuf = pBuf) != NULL)
...{
for(i=0; i<dwEntriesRead; i++)
...{
if(pTmpBuf == NULL)
...{
fprintf(stderr, "An access violation has occurred ");
break;
}
int leng = lstrlenW((unsigned short*)pTmpBuf->sv100_name)*2;
if(leng > 0)
RtlMoveMemory(a, pTmpBuf->sv100_name, leng);
memset(tempchar, 0, 64);
WideCharToMultiByte(0, 0, (unsigned short*)a, -1,
tempchar, leng/2, NULL, NULL);
int index = pCombo->AddString(tempchar);
struct hostent *m_host;
m_host = gethostbyname(tempchar);
if(m_host)
...{
struct in_addr addr;
memset(&addr,0,sizeof(struct in_addr));
addr.S_un.S_addr = *(DWORD *)*(m_host->h_addr_list);
memset(Ip, 0, 20);
memcpy(Ip, inet_ntoa(addr), strlen(inet_ntoa(addr)));
pCombo->SetItemData(index, inet_addr(Ip));
}
pTmpBuf++;
dwTotalCount++;
}
// if(pCombo->GetCount() > 0)
// pCombo->SetCurSel(0);
TRACE(" Entries enumerated:%d ", dwTotalCount);
}
}
else if(nStatus == ERROR_MORE_DATA)
...{
TRACE0(" More entries available!!! ");
TRACE("Total entries: %d", dwTotalEntries);
}
if(pBuf != NULL)
NetApiBufferFree(pBuf);
WSACleanup();
return 0;
}
- 枚举网段内的MS-SQL
- Sybase内的MS SQL Server 注入技术
- nmap扫描网段内的所有IP
- ping 网段 内 所有的IP 地址
- 枚举局域网内所有的 SQL Server 服务器实例名
- 如何用一个内网网段访问另一个网段的FTP?
- 如何在MS SQL Profiler里面过滤内嵌的存储过程
- DOS的FIND及ping一个网段内的机器
- 搜索某个网段内所有在线IP的一串命令
- 不同网段内的打印机能共享吗?
- .NET里如何搜索局域网内同网段的IP?
- 彻查网络局部网段内Ping时断时续的问题
- 扫描一个网段内的可达ip
- 判断IP地址是否在某个指定的网段内
- onvif_discovery_client搜索多个网段内的onvif设备(IPC)
- 如何ping同一个网段内的所有在用IP
- 多网卡在同一网段内的问题
- 公网网段,内网网段和虚拟机网段
- Struts控制器组件简单介绍
- 不同年代的五大三粗
- 校园经典口误完整版,笑上三十分钟
- 制作主页的五十个秘诀
- 给定一个一oracle建表的sql语句,解析读出的字符串,将表名、字段名、字段类型数据取出,怎么实现啊?
- 枚举网段内的MS-SQL
- HTTP的一些参考资料和Header信息
- Struts控制器组件简单介绍
- C#-Dispose 和 Close 的区别
- 解析.Net框架下的XML编程技术
- 一些网站
- PSP 编程 教程01-02
- C# 3.0新特性系列:隐含类型var
- oskit 分析文章