问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

100分求linux下C语言端口扫描代码

发布网友 发布时间:2022-04-19 17:55

我来回答

2个回答

热心网友 时间:2023-08-29 21:27

linux tcp udp 端口扫描源程序
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <errno.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <netinet/ip_icmp.h>
#include <stdlib.h>
#include <signal.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
#define TRUE 1
#define FALSE 0
#define UDP "UDP"
#define TCP "TCP"
#define tcp "tcp"
#define udp "udp"
typedef struct _GsSockStru{

int fd;
int len;

struct sockaddr_in addr;

}GsSockStru;

static int tcptest( char ip[32], char port[20]);
static int udptest( char ip[32], char port[20]);
void sig_alrm( int signo );

static GsSockStru test_sock;
int
main( int argc, char** argv)
{
char string[64];
char port[20];
char pro[20];
char ip[32];
int res;
int i = 0;
int k = 0;

if( argc>2 || argc<2 )
{
printf("鍙傛暟涓嶆纭?-1\n");
return ( -1 );
}

strcpy( string, argv[1]);

while( *string )
{
if( string[i] == ':' )
break;
pro[k] = string[i];
k++;
i++;
}
pro[k] = '\0';
i++;
k = 0;
while( *string )
{
if( string[i] == ':')
break;
ip[k] = string[i];
k++;
i++;
}
ip[k] = '\0';
i++;
k=0;
while( *string )
{
if( string[i] == '\0')
break;
port[k] = string[i];
k++;
i++;
}
port[k] = '\0';
i++;

memset( &test_sock, 0, sizeof( test_sock ) );
if ( ( strcmp( TCP, pro) != 0 ) && ( strcmp( UDP, pro) != 0 ) && ( strcmp( tcp, pro) != 0 ) && ( strcmp( udp, pro) != 0 ))
{
printf ( "鍙傛暟涓嶆纭?锛?\n" );
return (-1);
}
if ( strcmp( TCP, pro) == 0 || strcmp( tcp, pro) == 0 )
res = tcptest( ip, port );
if ( strcmp( UDP, pro) == 0 || strcmp( udp, pro) == 0 )
res = udptest( ip, port );printf("%d\n",res);
return ( res );
}
int
tcptest( char ip[32], char port[20])
{
int res;
struct timeval tv;

test_sock.fd = socket( AF_INET, SOCK_STREAM, 0 );
if ( test_sock.fd < 0 )
{
printf( "create socket failed -3 \n" );
return ( -3 );
}
memset( &( test_sock.addr ), 0, sizeof( test_sock.addr ) );

test_sock.addr.sin_family = AF_INET;
test_sock.addr.sin_port = htons( atoi( port ) );
inet_pton( AF_INET, ip, &test_sock.addr.sin_addr );
test_sock.len = sizeof( struct sockaddr );
tv.tv_sec = 10;
tv.tv_usec = 0;
setsockopt( test_sock.fd, SOL_SOCKET, SO_RCVTIMEO,
(const char *)&tv, sizeof( tv ) );
res = connect( test_sock.fd,
( struct sockaddr * )( &( test_sock.addr ) ),
test_sock.len );
if ( res < 0 )
{
fprintf( stderr, "connect failed 0\n" );
close( test_sock.fd );
return FALSE;
}
close( test_sock.fd );
return TRUE;
}
int udptest( char ip[32], char port[20])
{
struct icmphdr *icmp_header;
struct sockaddr_in target_info;
int target_info_len;
fd_set read_fd;
int scan_port;
char recvbuf[5000];
struct sockaddr_in target_addr;
int icmp_socket;
int udp_socket;
struct timeval tv;

icmp_header = (struct icmphdr *)(recvbuf+sizeof(struct iphdr));
scan_port = atoi( port );
target_addr.sin_family = AF_INET;
inet_pton( AF_INET, ip, &target_addr.sin_addr );
target_addr.sin_port = htons(scan_port);

if ((udp_socket=socket(AF_INET,SOCK_DGRAM,0))==-1)
{
printf("create socket failed -3\n");
return -3;
}
if ((icmp_socket=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP))==-1)
{
printf("Create raw socket failed -3\n");
return -3;
}

sendto(udp_socket,NULL,0,0,(void *)&target_addr,sizeof(target_addr));
FD_ZERO(&read_fd);
FD_SET(icmp_socket,&read_fd);

tv.tv_sec = 1;
tv.tv_usec = 0;
select(FD_SETSIZE,&read_fd,NULL,NULL,&tv);
for (;;){
if (FD_ISSET(icmp_socket,&read_fd))
{
target_info_len = sizeof(target_info);
recvfrom(icmp_socket,recvbuf,5000,0,
(struct sockaddr *)&target_info,&target_info_len);
if (target_info.sin_addr.s_addr == target_addr.sin_addr.s_addr
&& icmp_header->type == 3 && icmp_header->code<=12)
{
printf("Port %d : Close\n",scan_port);
return (0);
}
}
return (1) ;
}
}

热心网友 时间:2023-08-29 21:27

留邮箱
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...要求高吗?最低配置要求一览介绍_罪恶装备启示者配置要求高吗?最低... 罪恶装备启示者帧数怎么提升介绍_罪恶装备启示者帧数怎么提升是什么 ...在25平方米的房间开1个小时要用多少电拜托了各位 谢谢 高空抛物的法律赔偿责任如何规定 高空抛物罪一般怎么处罚 保时捷电动车和特斯拉哪个好 保时捷Mission E和特斯拉Model 3哪个好 特斯拉Model S和保时捷Tnycan你怎么选 探探怎么注销账号 探探APP注销账号教程 80枚5分硬币中有一枚是假的,他比真硬币重,用一架天平去称,不用砝码... 80枚5分硬币中有一枚是假的,它比真硬币重一些.用一架天平去称,不用砝码... 微信数据修复怎么回事 微信出现数据损坏,按修复聊天记录选项后一直修复失败怎样处理? 为啥手机充电充电头不发烫,然后手机冲不上电了 充电充不上,越充越少,而且发烫 手机充不进去电,充电时手机发烫。 手机充电时发烫,而且充不进. 我的手机充电充不进去还发烫这个问题该如何解决 手机充电时手机发烫还充不上电是怎么回事? 华为。充不进电!发烫。这是怎么回事? 华为手机充不上电充电器却很烫这是怎么回事?求解 手机充电器一插电那个头好烫,还充不上电是什么情况? 手机充电发烫不充电? 广州市摇号:我取消申请后 重新申请 间隔时间需要... 专利重新申请的问题 怎么重新申请QQ 重新申请和重新申领字有什么区别 最近微信总是出现数据损坏,需要修复怎么回事 重新申请责任认定注意什么 支付宝中的苏康码如何重新申请 排污许可证重新申请是什么情况? linux 我按下tab键 为什么总执行 一条命令 linux下的C语言程序,关于电机的帮忙解释一下! 焯水后的菜冷冻后还能吃吗 炒菜做好可以冷冻起来吗 艽菜多了用开水炒水后放入冰箱可以保鲜吗? 菠菜水炒之后在冻冰箱里可以吗 炒过的菜冷冻后再吃好不好 水焯好的苍术苗嫩菜能冷冻吗? 鲜黄花菜用水焯一下,放冰葙冷冻冬天吃可以吗?还... 焯过水的苔菜可以冷冻吗? 刚抄好的菜可以放进急冻吗 炒好的菜放冰箱冷冻可以保存多久 炒熟的蔬菜能冻吗 小白菜炒水后加水放冰箱冷冻数月后吃好还是不好 开水焯过的,菠菜,生菜,冷冻后能生成亚硝酸盐吗? 蚂蚁菜焯水后放冰柜里冻上可以吗? 焯过水的青菜放冷冻室要带水分好点还是把水挤干好... 青菜煮熟后放入冰箱冷藏后食用行吗? 炒出来了的菜能放冰箱打冻吗? 为什么我微信最近频频出现,数据修复,到底怎么回事?