傳承裴老師與孟老師《windows黑客技術解密與攻防 I–C語言篇》的教誨,寫下自己的第一段黑客編程代碼,以此祭奠昔日的夢想,并作為對自己的鼓勵。
簡易端口掃描器:
代碼如下:
/*
新手練手:
簡易端口掃描器
*/
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32")
#define START 20
#define END 500
int main(int argc,char *argv[])
{
if(argc!=2)
{
printf("Usage:scanport<IP>
");
return -1;
}
int i;
WSADATA ws; //用于接受winsock結構
SOCKET sockfd;
struct sockaddr_in their_addr;
WSAStartup(MAKEWORD(2,2),&ws);
their_addr.sin_family = AF_INET;
their_addr.sin_addr.S_un.S_addr = inet_addr(argv[1]);
//根據命令行參數確定掃描IP
for(i = START;i<=END;i++)
{
//循環建立socket后連接
sockfd = socket(AF_INET,SOCK_STREAM,0);
their_addr.sin_port = htons(i);
printf("正在掃描的端口:%d
",i);
if(connect(sockfd,(struct sockaddr *)&their_addr,sizeof(struct sockaddr))==SOCKET_ERROR)
{
//如果端口掃描失敗,則進行下一個端口的掃描
continue;
}
//否則認為此端口開放
printf("————-端口 %d 開放!————-
",i);
}
closesocket(sockfd);
WSACleanup();
return 0;
}
/*
掃描速度每秒才兩個,過慢,不符合實際,可使用多線程技術改裝。
*/
/*
調試提示:開始–>運行–>輸入"cmd"–>找到生成的xxx.exe程序所在路徑–>輸入:xxx argv[1] 就可以了
*/
<編譯環境:VC++ 6.0>
下一篇:重新思考如何使用SIEM產品