使用哪个库来创建简单的端口扫描程序
What library to use to create a simple port scanner?
>我需要建议创建一个简单的端口扫描程序,该扫描程序需要检测某些特定设备是否从其IP/MAC地址连接到网络。
我正在使用Windows 7,最好使用C++ Builder 2010,Java或Qt。
该库必须在公共领域或同等领域下,因为我的软件是专有软件。
你会建议哪个图书馆?你知道我可以从什么自由软件开始,或者任何例子吗?
使用Indy Sockets或Synapse TCP/IP库怎么样?
任何 TCP/IP 库都可以工作。 Indy,ICS,Synapse,它们都可以与C++Builder配合使用。 由于Indy附带C++Builder,您可以从它开始,但您当然不仅限于此。
它们都在Windows内部使用WinSock,因此您可以直接对WinSock API进行编程,而根本不使用任何库。 您需要做的就是在程序启动时调用WSAStartup()
一次,然后为要检查的每个端口调用socket()
和connect()
。 要检查多个端口,您可以使用 ioctlsocket()
将套接字置于非阻塞模式,然后使用 select()
、WSAAsyncSelect()
、WSAAsyncEvent()
或 CreateIoCompletionPort()
/GetQueuedCompletionStatus()
来检测connect()
是否成功/失败,或者您可以将套接字置于阻塞模式(其默认模式)并使用工作线程调用connect()
并让它直接告诉您是成功/失败。
开放端口是具有侦听应用程序的端口。检查TCP端口的最简单方法是尝试连接它,如果建立了连接,则该端口已打开。
高级方法基于指纹识别和 prob 数据包,您可以阅读 nmap 如何检测开放端口。
最后,pcap是高级网络编程的有用库。
对于博兰德C++建设者?对不起,博兰德C++建筑商没有太多, 但是如果你可以使用Visual C++ Express和WINSOCK库,那么它就像这样简单:
温索克端口扫描仪 :
#include <stdio.h>
#include <winsock.h>
#include <stdlib.h>
#pragma comment(lib,"WSOCK32.LIB")
void main()
{
WSADATA data;
SOCKET sock;
int err,i,startport,endport;
char ip[20];
struct sockaddr_in sock_addr;
FILE*fp1;
printf("ip: ");
scanf("n%s",ip);
printf("start port: ");
scanf("%d",&startport);
printf("end port: ");
scanf("%d",&endport);
if((WSAStartup(MAKEWORD(2,0),&data)!=0))
{
printf("Error: Winsock did not init!!!nn");
}
else
{
for(i=startport;i<endport;i++)
{
sock=socket(AF_INET,SOCK_STREAM,0);
sock_addr.sin_family=PF_INET;
sock_addr.sin_port=htons(i);
sock_addr.sin_addr.s_addr=inet_addr(ip);
printf("Checking port %dn",i);
err=connect(sock,(struct sockaddr*)&sock_addr,sizeof(struct sockaddr));
if(err==0)
{
printf("Port Open!!!nna");
fp1=fopen("ports.txt","a+");
fprintf(fp1,"Port is open: %dnn",i);
closesocket(sock);
fclose(fp1);
}
else
{
printf("Port Closed!!!nn");
}
}
WSACleanup();
system("ports.txt");
}
}
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- C++客户端/服务器聊天应用程序 - 从 Ubuntu 命令窗口扫描输入
- 我可以在我的 cmake 代码中手动使用 CMake 的 cpp 文件依赖项扫描程序吗?
- C++ 签名扫描程序输出错误
- 扫描头文件并报告可用代码的程序
- 控制台中的C++签名扫描程序
- C++端口扫描程序
- 强制无线网卡只扫描一个通道(以程序方式)
- 使用哪个库来创建简单的端口扫描程序
- 如何加快我的内存扫描程序
- 调试断言失败文件、令牌扫描程序和文本文件
- 扫描程序等待另一个类似的程序
- 发送扫描码到我的应用程序
- 扫描参数并用c++程序确定它们是什么
- 启动多个程序扫描计算机以查找恶意软件