資源簡介
說明:本程序原為四川大學信息安全產品開發實踐的課程設計.
本程序集合了8種端口掃描方式,connect,syn,fin,null,xmas,ack,udp和windows掃描。其中connect和syn的實現用到了線程池的技術。

代碼片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include“ackscan.h“
#include“function.h“
#define?PACKET_SIZE?1024
short?*gFlag;
int?gStartPort;
int?gCount?=?0;
static?void?recv_packet(void?*param)
{
int?sockfd;
int?len;
unsigned?char?packet[PACKET_SIZE];
struct?sockaddr_in?*sourceAddr;
struct?tcphdr?*tcp;
len?=?sizeof(struct?sockaddr);
sockfd?=?*((int*)param);
tcp?=?(struct?tcphdr*)(packet+sizeof(struct?ip));
while(1)
{
if(recvfrom(sockfdpacketPACKET_SIZE0(void*)sourceAddr&len)<0)
{
perror(“error:can‘t?recve?any?packet\n“);
continue;
}
if(tcp->dest==htons(8086)&&tcp->rst)
{
//fprintf(stderr“Port:%d????status:Opened!\n“ntohs(tcp->source));
gFlag[ntohs(tcp->source)-gStartPort]?=?1;
fflush(stdout);
gCount++;
}
}
}
int?ackscan(char?*destIPint?start_portint?end_port)
{
int?sockfd;
const?int?one?=?1;
int?tid;
int?scan_port;
char?sourceIP[16];
struct?sockaddr_in?dest;
struct?iphdr?*ip;
struct?tcphdr?*tcp;
struct?PsdHead?psdHead;
unsigned?char?netPacket[PACKET_SIZE];
gCount?=?0;
gStartPort?=?start_port;
gFlag?=?(short*)malloc(end_port-start_port);
if(gFlag==NULL)
{
fprintf(stderr“error:failed?to?malloc?%d?Bytes\n“(end_port-start_port)*sizeof(short));
return?-1;
}
memset(gFlag0sizeof(gFlag));
memset(sourceIP0sizeof(sourceIP));
getLocalIP(sourceIP);
if((sockfd=socket(AF_INETSOCK_RAWIPPROTO_TCP))<0)
{
perror(“error:failed?to?create?raw?socket!\n“);
return?-1;
}
if(setsockopt(sockfdIPPROTO_IPIP_HDRINCL&onesizeof(one))<0)
{
perror(“error:failed?to?setsockopt!\n“);
return?-1;
}
memset(netPacket0sizeof(netPacket));
ip?=?(struct?iphdr*)netPacket;
ip->ihl?=?5;
ip->version?=?4;
ip->tos?=?0;
ip->tot_len?=?sizeof(struct?ip)+sizeof(struct?tcphdr);
ip->id?=?htons(13579);
ip->frag_off?=?htons(16384);
ip->ttl?=?64;
ip->protocol?=?IPPROTO_TCP;
ip->check?=?0;
ip->saddr?=?inet_addr(sourceIP);
ip->daddr?=?inet_addr(destIP);
tcp?=?(struct?tcphdr*)(netPacket+sizeof(struct?ip));
tcp->source?=?htons(8086);
tcp->dest?=?0;
tcp->seq?=?htonl(1143111041);
tcp->ack_seq?=?0;
tcp->doff?=?sizeof(struct?tcphdr)/4;
tcp->fin?=?0;
tcp->syn?=?0;
tcp->rst?=?0;
tcp->psh?=?0;
tcp->ack?=?1;
tcp->urg?=?0;
tcp->window?=?htons(10052);
tcp->check?=?0;
tcp->urg_ptr?=?0;
if(pthread_create((void*)&tidNULL(void*)recv_packet(void*)&sockfd)<0)
{
perror(“error:failed?to?create?thread!\n“);
return?-1;
}
dest.sin_family?=?AF_INET;
dest.sin_addr.s_addr?=?inet_addr(destIP);
for(scan_port?=?start_port;scan_port<=end_port;scan_port++)
{
tcp->dest?=?htons(scan_port);
dest.sin_port?=?tcp->dest;
psdHead.source
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-01-01?00:46??端口掃描代碼\
?????文件????????3922??2013-12-27?14:31??端口掃描代碼\ackscan.c
?????文件?????????109??2013-12-27?00:47??端口掃描代碼\ackscan.h
?????文件????????3452??2013-12-30?22:30??端口掃描代碼\ackscan.o
?????文件????????2044??2013-12-27?13:09??端口掃描代碼\connectscan.c
?????文件?????????120??2013-12-24?00:22??端口掃描代碼\connectscan.h
?????文件????????2308??2013-12-30?22:30??端口掃描代碼\connectscan.o
?????文件????????3583??2013-12-27?14:20??端口掃描代碼\finscan.c
?????文件?????????108??2013-12-27?13:13??端口掃描代碼\finscan.h
?????文件????????3248??2013-12-30?22:30??端口掃描代碼\finscan.o
?????文件????????1686??2013-12-27?13:37??端口掃描代碼\function.c
?????文件?????????497??2013-12-27?13:13??端口掃描代碼\function.h
?????文件????????1656??2013-12-30?22:30??端口掃描代碼\function.o
?????文件???????35749??2013-12-30?22:30??端口掃描代碼\main
?????文件????????5475??2013-12-27?14:36??端口掃描代碼\main.c
?????文件????????5380??2013-12-30?22:30??端口掃描代碼\main.o
?????文件?????????933??2013-12-27?13:40??端口掃描代碼\makefile
?????文件????????3709??2013-12-26?17:21??端口掃描代碼\nullscan.c
?????文件?????????116??2013-12-11?00:16??端口掃描代碼\nullscan.h
?????文件????????3252??2013-12-30?22:30??端口掃描代碼\nullscan.o
?????文件????????3413??2013-12-27?14:42??端口掃描代碼\osdetect.c
?????文件??????????85??2013-12-27?13:41??端口掃描代碼\osdetect.h
?????文件????????2612??2013-12-30?22:30??端口掃描代碼\osdetect.o
?????文件????????4798??2013-12-27?13:16??端口掃描代碼\synscan.c
?????文件?????????108??2013-12-03?19:34??端口掃描代碼\synscan.h
?????文件????????3856??2013-12-30?22:30??端口掃描代碼\synscan.o
?????文件????????2768??2013-12-24?01:21??端口掃描代碼\threadpool.c
?????文件?????????364??2013-12-21?17:36??端口掃描代碼\threadpool.h
?????文件????????2964??2013-12-30?22:30??端口掃描代碼\threadpool.o
?????文件????????3030??2013-12-26?23:12??端口掃描代碼\udpscan.c
?????文件?????????103??2013-12-26?23:12??端口掃描代碼\udpscan.h
............此處省略7個文件信息
評論
共有 條評論