Lion寫的埠掃瞄工具

2021-04-06 19:58:36 字數 3809 閱讀 2273

// 編譯時需使用的庫

#pragma comment(lib,"wsock32.lib")

// select()成員定義

#define zero (fd_set *)0

// 變數定義

int maxth, scanok, scannum,i;

int portip, hoststart, hoststop, startport, endport;

long searchnum, searched;

void usage(char *);    // 定義顯示使用方法函式

void playx(int);    // 定義狀態提示函式

void setip2(char *);   // 定義設定ip函式

void customport(char *, char *, char *); // 定義自定義掃瞄埠函式

void portscannow(int);   // 定義埠掃瞄掃瞄

// 主程式

int main(int argc, char *argv)

// 檢測是否為port掃瞄

if(!(stricmp(strlwr(argv[1]), "-p") == 0))

// 程式初始化

if (wsastartup(makeword(1,1), &wsadata) != 0)

// 埠掃瞄引數轉換

// 如果引數為三個

if (argc == 3)

// 如果引數為四個

else 

if (argc == 4)

// 引數過多顯示幫助

else

// 掃瞄埠開始

portscannow(argc);

wsacleanup();

return 0;

} // 幫助提示函式

void usage(char * prog)

// 進度提示

void playx(int play = 0)

; if (searchnum != 0) }

else }

// 設定ip

void setip2(char *cp)

else

// 給控制要掃瞄ip段的變數賦值

memcpy(&host, testhost->h_addr, 4);

hoststop = hoststart = ntohl(host);

} }

// 測試執行緒是否已滿

void testthread(int thread = 200)

return;

} // 等待執行緒結束函式

void waitthreadend()

else break;

} printf("/r/n");

return;

} // 定製埠掃瞄引數定義

void customport(char *cp, char *cp2, char *cp3)

// 埠大小判斷

if (startport < 0 || startport > 65536 || endport < 0 || endport > 65535)

// 處理ip位址

setip2(cp3);

} // 埠掃瞄函式

uint portscan(lpvoid port)

// 給sock成員賦值

server.sin_family=af_inet;

server.sin_addr.s_addr = htonl(addr); // 要掃瞄的位址

server.sin_port = htons(short(port)); // 要掃瞄的埠

// 顯示進度

playx();

// 呼叫ioctlsocket()設定套接字為非阻塞模式

if (ioctlsocket(sock, fionbio, &flag) != 0)

// 呼叫connect()連線遠端主機埠

connect(sock, (struct sockaddr*)&server, sizeof(server));

timeout.tv_sec = 18; // 超時限制為18秒

timeout.tv_usec = 0; 

fd_zero(&mask);  // 清空集合mask

fd_set(sock, &mask); // 將sock放入集合mask中

// 用select() 處理掃瞄結果

switch(select(sock + 1, zero, &mask, zero, &timeout))

// sock超時處理

case 0: 

default:

if(fd_isset(sock, &mask)) }

return 0;

} // 掃瞄開始主函式

void portscannow(int xp)

; // 顯示掃瞄開始的時間

timenow = _strtime(timebuf);

printf("/r/nportscan start time: %s/r/n/n",timenow);

// 計數器初始化.

maxth = 0;

scanok = 0;

scannum = 0;

searched = 0;

// 計算要掃瞄的埠數量

searchnum = hoststop - hoststart +1;

if(xp == 3)

searchnum = searchnum * 32;

if(xp == 4)

searchnum = searchnum * (endport - startport +1);

// 埠掃瞄開始

for (portip = hoststart; portip <= hoststop; portip ++, scannum ++)

if(i > 11) i = 0;

// 預設埠掃瞄

// scan 192.168.0.1

// scan 192.168.0.1-192.168.0.254

if (xp == 3)

} // 自定義埠掃瞄

// scan -p 21 192.168.0.1

// scan -p 21-80 192.168.0.1-192.168.0.254

if (xp == 4) }

else }

}  }

// 等待所有的執行緒結束

waitthreadend(); 

// 顯示埠掃瞄結束時間

timenow = _strtime(timebuf);

printf("/r/nportscan end time: %s", timenow);

printf("/r/nscan %d hosts completed. open %d ports!/r/n", scannum, scanok);

}

TCPing 埠掃瞄工具

描述在本地主機和遠端主機之間,tcping可以測試出執行tcp三次握手所需的時間 syn,syn ack,ack 最終ack傳送時間不包括在內,只有最少的時間才能將其丟棄在近端的電線。概要 tcping tdsvf46 i interval n times w interval b n r time...

C 很久以前寫的埠掃瞄工具

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system.window...

Qt編寫埠掃瞄工具

qt提供了qtcpsocket類,可以方便地建立tcp連線。利用這一功能,maxiee編寫了乙個簡單地埠掃瞄工具。軟體的功能就是,掃瞄某一網段的固定埠,如80埠,若目的位址開放了這一埠,那麼連線就能建立。通過waitforconnected 方法,我們就能得知是否連線成功,若成功,我們在輸出中加以標...