不会编程 但毕业设计要求编程 希望高手帮忙修改一下 我知道错误百出

Leticia 2007-05-09 10:38:06
我要完成的是一个网络流量分析软件,数据是已有的,不用抓包
感谢各位高手帮忙。时间紧迫,先谢谢大家了
# include<math.h>
# include<string.h>
# include<stdio.h>
# include<stdlib.h>

#define ftp 21
#define telnet 23
#define smtp 25
#define time 37
#define rap 38
#define nameserver 42
#define login 49
#define bootps 67
#define bootpc 68
#define tftp 69
#define finger 79
#define http 80
#define hostname 101
#define pop3 110
#define irc 194
#define echo 7
#define dns 53
#define snmp 161

FILE *fp;
int q,p,x;
int i,y=0,j;
int d[16];
int b[8];
int c[16];
int a[12160];
int sum1=0,sum2=0,sum3=0,sum4=0;
int sum5=0,sum6=0,sum7=0,sum8=0;
int sum9=0,sum10=0,sum11=0,sum12=0;
int sum13=0,sum14=0,sum15=0,sum16=0;
int sum17=0,sum18=0,sum19=0,sum20=0;
int sum21=0,sum22=0,sum23=0,sum24=0;
int sum25=0,sum26=0,sum27=0,sum28=0;
int sum29=0,sum30=0,sum31=0,sum32=0;
int sum33=0,sum34=0,sum35=0,sum36=0;
int sum37=0,sum38=0,sum39=0,sum40=0;
int sum41=0,sum42=0,sum43=0;



//检测十六位连续全零,表示一个数据包的开始
zore()
{
q=fp;
for(fp=0;fp+16;fp++)
{if (*fp==0) continue;
else return (0);
if(fp==q+16) return(1);}
}


main()
{

if((fp=fopen("shuju","rb"))==NULL)//文件打开,数据是放在文件里的,以太网直接抓取的
printf("can not open file\n");

for(i=0;i<12160;i++)
{if (zore()==1)
loop: fp=p;
fread(&a[i],12160,1,fp);
{if (zore()==1)
p=fp;
break;
}
if(zore()==NULL)
{ printf("ftp=%d UDP=%d\n",sum3,sum22);
printf("telnet=%d UDP=%d\n",sum4,sum23);
printf("smtp=%d UDP=%d\n",sum5,sum24);
printf("time=%d UDP=%d\n",sum6,sum25);
printf("rap=%d UDP=%d\n",sum7,sum26);
printf("nameserver=%d UDP=%d\n",sum8,sum27);
printf("login=%d UDP=%d\n",sum9,sum28);
printf("bootps=%d UDP=%d\n",sum10,sum29);
printf("bootpc=%d UDP=%d\n",sum11,sum30);
printf("tftp=%d UDP=%d\n",sum12,sum31);
printf("finger=%d UDP=%d\n",sum13,sum32);
printf("http=%d UDP=%d\n",sum14,sum33);
printf("hostname=%d UDP=%d\n",sum15,sum34);
printf("pop3=%d UDP=%d\n",sum16,sum35);
printf("irc=%d UDP=%d\n",sum17,sum36);
printf("echo=%d UDP=%d\n",sum18,sum37);
printf("dns=%d UDP=%d\n",sum19,sum38);
printf("snmp=%d UDP=%d\n",sum20,sum39);
printf("others=%d UDP=%d\n",sum21,sum40);
printf("IP=%d\n",sum1);
printf("%d\n",sum2);
printf("ICMP=%d\n",sum41);
printf("IGMP=%d\n",sum42);

fclose(fp);}

}

for(fp=112;fp<128;fp++)//如果是IP数据包,就往下执行,如果不是,就跳转
for(d[y]=fp;y<(fp+16);y++)

{if(d[y]&"0000100000000000"=="1111111111111111"){sum1=sum1+1;goto ippackopen();}
else {sum2=sum2+1;goto loop;}
}

}


ippackopen()
{

for(fp=200;fp<208;fp++)
for(j=0;j<16;j++)
b=fp;
if(b[j]&"00000110"=="11111111")//判断是否是TCP包,是就执行下面的判断,看是什么协议
{for(fp=288;fp<304;fp++)
{for(x=0;x<16;x++)
c=fp;
if(c[x]&"0000000000010101"=="1111111111111111") {sum3=sum3+1;goto loop;}
else if(c[x]&"0000000000010111"=="1111111111111111") {sum4=sum4+1;goto loop;}
else if(c[x]&"0000000000011001"=="1111111111111111") {sum5=sum5+1;goto loop;}
else if(c[x]&"0000000000100101"=="1111111111111111") {sum6=sum6+1;goto loop;}
else if(c[x]&"0000000000100110"=="1111111111111111") {sum7=sum7+1;goto loop;}
else if(c[x]&"0000000000101010"=="1111111111111111") {sum8=sum8+1;goto loop;}
else if(c[x]&"0000000000110001"=="1111111111111111") {sum9=sum9+1;goto loop;}
else if(c[x]&"0000000001000011"=="1111111111111111") {sum10=sum10+1;goto loop;}
else if(c[x]&"0000000001000100"=="1111111111111111") {sum11=sum11+1;goto loop;}
else if(c[x]&"0000000001000101"=="1111111111111111") {sum12=sum12+1;goto loop;}
else if(c[x]&"0000000001001111"=="1111111111111111") {sum13=sum13+1;goto loop;}
else if(c[x]&"0000000001010000"=="1111111111111111") {sum14=sum14+1;goto loop;}
else if(c[x]&"0000000001100101"=="1111111111111111") {sum15=sum15+1;goto loop;}
else if(c[x]&"0000000001101110"=="1111111111111111") {sum16=sum16+1;goto loop;}
else if(c[x]&"0000000011000010"=="1111111111111111") {sum17=sum17+1;goto loop;}
else if(c[x]&"0000000000000111"=="1111111111111111") {sum18=sum18+1;goto loop;}
else if(c[x]&"0000000000110101"=="1111111111111111") {sum19=sum19+1;goto loop;}
else if(c[x]&"0000000010100001"=="1111111111111111") {sum20=sum20+1;goto loop;}
else {sum21=sum21+1;goto loop;}
}
else if(b[j]&"00010001"=="11111111")//判断是否为UDP包
{for(fp=288;fp<304;fp++)
{for(x=0;x<16;x++)
c=fp;

if(c[x]&"0000000000010101"=="1111111111111111") {sum22=sum22+1;goto loop;}
else if(c[x]&"0000000000010111"=="1111111111111111") {sum23=sum23+1;goto loop;}
else if(c[x]&"0000000000011001"=="1111111111111111") {sum24=sum24+1;goto loop;}
else if(c[x]&"0000000000100101"=="1111111111111111") {sum25=sum25+1;goto loop;}
else if(c[x]&"0000000000100110"=="1111111111111111") {sum26=sum26+1;goto loop;}
else if(c[x]&"0000000000101010"=="1111111111111111") {sum27=sum27+1;goto loop;}
else if(c[x]&"0000000000110001"=="1111111111111111") {sum28=sum28+1;goto loop;}
else if(c[x]&"0000000001000011"=="1111111111111111") {sum29=sum29+1;goto loop;}
else if(c[x]&"0000000001000100"=="1111111111111111") {sum30=sum30+1;goto loop;}
else if(c[x]&"0000000001000101"=="1111111111111111") {sum31=sum31+1;goto loop;}
else if(c[x]&"0000000001001111"=="1111111111111111") {sum32=sum32+1;goto loop;}
else if(c[x]&"0000000001010000"=="1111111111111111") {sum33=sum33+1;goto loop;}
else if(c[x]&"0000000001100101"=="1111111111111111") {sum34=sum34+1;goto loop;}
else if(c[x]&"0000000001101110"=="1111111111111111") {sum35=sum35+1;goto loop;}
else if(c[x]&"0000000011000010"=="1111111111111111") {sum36=sum36+1;goto loop;}
else if(c[x]&"0000000000000111"=="1111111111111111") {sum37=sum37+1;goto loop;}
else if(c[x]&"0000000000110101"=="1111111111111111") {sum38=sum38+1;goto loop;}
else if(c[x]&"0000000010100001"=="1111111111111111") {sum39=sum39+1;goto loop;}
else {sum40=sum40+1;goto loop;}
}

else if(b[j]&"00000001"=="11111111") {sum41=sum41+1;goto loop;}//判断是否为ICMP
else if(b[j]&"00000010"=="11111111") {sum42=sum42+1;goto loop;}//判断是否为IGMP
else {sum43=sum43+1;goto loop;}//都不是则统计加一
}
...全文
274 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Leticia 2007-05-10
  • 打赏
  • 举报
回复
c=fp
我是想把指针f指向的单元里的内容付值给数组C
不能这样写吗?
Leticia 2007-05-10
  • 打赏
  • 举报
回复
是那个意思
但是我不会写
谢谢楼上的
高手继续啊~~
Leticia 2007-05-10
  • 打赏
  • 举报
回复
我不要Linux版本的~~~
believefym 2007-05-10
  • 打赏
  • 举报
回复
c[x]&"0000000000010101"=="1111111111111111")

这是什么?直接字符串还能逻辑运算的?
(c[x]&0x00000015 )==0x0000ffff
要的是这个意思吗?
harbincampus 2007-05-10
  • 打赏
  • 举报
回复
到网上搜,Linux版本的一大把
Leticia 2007-05-10
  • 打赏
  • 举报
回复
大家帮帮忙啊

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧