• 大小: 50KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-17
  • 语言: 其他
  • 标签: 端口扫描  

资源简介

说明:本程序原为四川大学信息安全产品开发实践的课程设计. 本程序集合了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个文件信息

评论

共有 条评论