主机扫描程序实现方法
2001-12-22 13:07
826 查看
用过主机扫描工具?如〈代理猎手〉,〈追捕〉〈POSTCAN〉等。只要你浏览过黑客主页就会发现他们都提供此类工具下载。对于服务器是怎样发现所提供的服务?对于个人计算机又是怎样知道你机器有后门?下面就以俺用C++ BUILDER写的一个主机扫描工具的核心代码为列说一下实现方法。
主机扫描程序实现方法:
作者:病毒
用过主机扫描工具?如〈代理猎手〉,〈追捕〉〈POSTCAN〉等。只要你浏览过黑客主页就会发现他们都提供此类工具下载。对于服务器是怎样发现所提供的服务?对于个人计算机又是怎样知道你机器有后门?下面就以俺用C++ BUILDER写的一个主机扫描工具的核心代码为列说一下实现方法。
#include <winsock.h>
#define NETBIOSService 139 //139端口NETBIOS服务
#define WWWService 80 //80端口WWW服务
#define FTPService 21 //21端口FTP服务
//以上是针对服务器而言
#define BOService 31337 //BO木马的后门端口
#define NETSPYService 7306 //NETSPY木马的后门端口
#define BHService 7626 //冰河木马的后门端口
//以上是针对个人计算机
BOOL SERVERConn(hostent *SERHost,SOCKET SERSock,unsigned short nPort)
//连接函数,hostent结构见帮助
{
SOCKADDR_IN Sock_in; //结构见帮助
BOOL RetMsg;
Sock_in.sin_family=AF_INET; //连接类型
Sock_in.sin_port=htons(nPort); //所连接的主机端口 memcpy(&(Sock_in.sin_addr),SERHost->h_addr,sizeof(Sock_in.sin_addr)); //主机地址赋予结构以便下面调用
Application->ProcessMessages();
if((connect(SERSock,(LPSOCKADDR)&Sock_in,sizeof(Sock_in)))==SOCKET_ERROR) //开始连接并判断是否成功
{
RetMsg=FALSE; //此端口没有开放
closesocket(SERSock);
return RetMsg;
}
RetMsg=TRUE; //开放了
shutdown(SERSock,0); //不许端口接收,发送数据但保持连接状态 closesocket(SERSock); //成功后马上关闭,以免。。。
return RetMsg;
}
WSADATA wsaData; //WSADATA结构见帮助
SOCKET Sock;
hostent *HostMsg;
if(WSAStartup(MAKEWORD(1,1),&wsaData)!=NULL) //以WINSOCK1.1协议初始化
{
ShowMessage("初始化WINSOCK错误");
WSACleanup();
}
HostMsg=gethostbyname(Edit1->Text.c_str()); //获取主机信息
if(!HostMsg)
{
ShowMessage("主机名称错误,请检查IP地址");
WSACleanup();
}
else if((Sock=(socket(AF_INET,SOCK_STREAM,0)))==SOCKET_ERROR) //SOCKET函数见帮助
{
ShowMessage("SOCKET错误");
closesocket(Sock);
WSACleanup();
}
if(SERVERConn(HostMsg,Sock,WWWService)) //调用SERVERConn函数连接
{
Label3->Font->Color=clRed;
Label3->Caption="发现服务"; //端口开放以红色显示
closesocket(Sock);
Sock=(socket(AF_INET,SOCK_STREAM,0));
}
else
{
Label3->Font->Color=clBlack;
Label3->Caption="没有发现服务"; //没有开放以黑色显示
closesocket(Sock);
Sock=(socket(AF_INET,SOCK_STREAM,0));
}
试一下。怎样?不错吧,你也可以写黑客程序,还不赶紧动手写一个自己的端口扫描程序?
主机扫描程序实现方法:
作者:病毒
用过主机扫描工具?如〈代理猎手〉,〈追捕〉〈POSTCAN〉等。只要你浏览过黑客主页就会发现他们都提供此类工具下载。对于服务器是怎样发现所提供的服务?对于个人计算机又是怎样知道你机器有后门?下面就以俺用C++ BUILDER写的一个主机扫描工具的核心代码为列说一下实现方法。
#include <winsock.h>
#define NETBIOSService 139 //139端口NETBIOS服务
#define WWWService 80 //80端口WWW服务
#define FTPService 21 //21端口FTP服务
//以上是针对服务器而言
#define BOService 31337 //BO木马的后门端口
#define NETSPYService 7306 //NETSPY木马的后门端口
#define BHService 7626 //冰河木马的后门端口
//以上是针对个人计算机
BOOL SERVERConn(hostent *SERHost,SOCKET SERSock,unsigned short nPort)
//连接函数,hostent结构见帮助
{
SOCKADDR_IN Sock_in; //结构见帮助
BOOL RetMsg;
Sock_in.sin_family=AF_INET; //连接类型
Sock_in.sin_port=htons(nPort); //所连接的主机端口 memcpy(&(Sock_in.sin_addr),SERHost->h_addr,sizeof(Sock_in.sin_addr)); //主机地址赋予结构以便下面调用
Application->ProcessMessages();
if((connect(SERSock,(LPSOCKADDR)&Sock_in,sizeof(Sock_in)))==SOCKET_ERROR) //开始连接并判断是否成功
{
RetMsg=FALSE; //此端口没有开放
closesocket(SERSock);
return RetMsg;
}
RetMsg=TRUE; //开放了
shutdown(SERSock,0); //不许端口接收,发送数据但保持连接状态 closesocket(SERSock); //成功后马上关闭,以免。。。
return RetMsg;
}
WSADATA wsaData; //WSADATA结构见帮助
SOCKET Sock;
hostent *HostMsg;
if(WSAStartup(MAKEWORD(1,1),&wsaData)!=NULL) //以WINSOCK1.1协议初始化
{
ShowMessage("初始化WINSOCK错误");
WSACleanup();
}
HostMsg=gethostbyname(Edit1->Text.c_str()); //获取主机信息
if(!HostMsg)
{
ShowMessage("主机名称错误,请检查IP地址");
WSACleanup();
}
else if((Sock=(socket(AF_INET,SOCK_STREAM,0)))==SOCKET_ERROR) //SOCKET函数见帮助
{
ShowMessage("SOCKET错误");
closesocket(Sock);
WSACleanup();
}
if(SERVERConn(HostMsg,Sock,WWWService)) //调用SERVERConn函数连接
{
Label3->Font->Color=clRed;
Label3->Caption="发现服务"; //端口开放以红色显示
closesocket(Sock);
Sock=(socket(AF_INET,SOCK_STREAM,0));
}
else
{
Label3->Font->Color=clBlack;
Label3->Caption="没有发现服务"; //没有开放以黑色显示
closesocket(Sock);
Sock=(socket(AF_INET,SOCK_STREAM,0));
}
试一下。怎样?不错吧,你也可以写黑客程序,还不赶紧动手写一个自己的端口扫描程序?
相关文章推荐
- 一个用来扫描主机端口的AIR 程序 (在Flex 4+AIR 2.0/Beta 2 下实现)
- 网络判断网络连接有多种办法,通过C#程序也可以判断与远程主机的连接状态。具体实现方法
- 截取其他程序文本框和密码框内容的一种实现方法
- Teechart中dbchart用程序代码实现图表的方法
- 扫描网格边界的方法/二维矩阵,使程序比较简短。
- 让自己的程序界面实现XP风格的两种方法
- VS2005 WinForm程序TextBox变成下划线的一种实现方法
- 用程序实现压缩access(*.mdb)数据库的方法.
- WinForm程序启动时不显示主窗体的实现方法
- ASP程序实现购物车的方法手推车功能的实现
- asp的程序能实现伪静态化的方法
- 导入Excel和导出Excel:的简单方法与程序处理方法,使用Excel程序读写Excel ,实现Excel的多个 Sheets读写并导出
- Dephi 程序输入法自动切换最简单最好用的实现方法(被程序员杂志采纳,重新详细整理)
- 任意分布的随机数的产生方法—VC程序实现方法
- 改注册表,在一定时间内只能运行指定程序,知道用组策略管理器,可以实现,不过我想用编程的方法。
- sql server 怎么样实现远程备份,用程序的方法
- 保护卡自动改IP程序实现方法(根据现有保护卡的种种迹象猜的)
- 利用互斥对象实现一个程序只运行一个实例的方法.
- asp的程序能实现伪静态化的方法
- 截取其他程序文本框和密码框内容的一种实现方法