Ergebnis 1 bis 5 von 5
  1. #1
    Anfänger Avatar von li0n
    Registriert seit
    31.05.2010
    Beiträge
    12

    Standard Blöde Compler Meldung

    Hi.
    Ich bastle grade an nem Tool das dem -3 Angriff (arpreplay) von aireplay sehr ähnelt.
    Problem:
    ich bekomme diese Meldung beim Compilen:
    Code:
    In file included from send.h:15,
                     from main.c:1:
    sniff.h:24: error: variably modified ‘pack’ at file scope
    sniff.h sieht so aus:
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <unistd.h>
    #include <netinet/in.h>
    #include <netinet/ip.h>
    #include <netinet/tcp.h>
    #include <arpa/inet.h>
    #include <net/ethernet.h>
    #include <arpa/inet.h>
    #include <errno.h>
    
    //----------------------------------------------------------------------------
    
    void sniff();
    void choosepack();
    
    //----------------------------------------------------------------------------
    
      int packsiz = 12000;
      char pack[packsiz];
    
    //----------------------------------------------------------------------------
    
    void sniff() {
      int sock;
      //this is the raw socket we want to sinff from:
      if((sock = socket(AF_INET, SOCK_PACKET, htons(0x3))) < 0) {
        perror("Couldn't create a socket for sniffing!!!");
        exit(EXIT_FAILURE);
      }
      //now we read from the socket:
      read(sock, pack, packsiz);
    }
    
    //----------------------------------------------------------------------------
    
    void choosepack() {
      struct ether_header *eth = (struct ether_header*)pack;
      struct iphdr *ip = (struct iphdr*)(pack + sizeof(struct ether_header));
      struct tcphdr *tcp = (struct tcphdr*)(pack + sizeof(struct tcphdr) + sizeof(struct iphdr));
      char *pay = (pack + sizeof(struct tcphdr) + sizeof(struct iphdr) + sizeof(struct  tcphdr));
      char yn[0];
      while(1) {
        memset(pack, '\0', packsiz);
        sniff();
        printf("SRC MAC: %x:%x:%x:%x:%x:%x\n", eth -> ether_shost[0], eth -> ether_shost[1], eth -> ether_shost[2], eth -> ether_shost[3], eth -> ether_shost[4], eth -> ether_shost[5]);
        printf("DST MAC: %x:%x:%x:%x:%x:%x\n", eth -> ether_dhost[0], eth -> ether_dhost[1], eth -> ether_dhost[2], eth -> ether_dhost[3], eth -> ether_dhost[4], eth -> ether_dhost[5]);
        printf("SRC IP: %s\n", inet_ntoa(*(struct in_addr*) &ip -> saddr)); //print the source IP
        printf("DST IP: %s\n", inet_ntoa(*(struct in_addr*) &ip -> daddr)); //print the destination IP
        printf("use packet? [y/n]");
        fgets(yn,sizeof(yn),stdin);
        if(strcmp(yn,"y") == 0) {
          return;
        }
      }
    }
    
    //----------------------------------------------------------------------------
    hoffe mir kann da einer Helfen :S

    greez li0n

  2. #2
    The Chosen One oder so Avatar von Apex
    Registriert seit
    16.09.2007
    Beiträge
    1.469

    Standard

    int packsiz = 12000;
    char pack[packsiz];

    Heißt es nicht

    const int PACKSIZ 12000;
    char pack[PACKSIZ];

    ?? Oder täusch ich mich?
    "Die Menschheit wird eines Tages zu Grunde gehen. Vermutlich aus dem gleichen Grund wie die Dinosaurier - zu viel Panzer und zu wenig Hirn."


  3. #3
    Der `Toastflüsterer` Avatar von AlterHacker
    Registriert seit
    27.09.2008
    Beiträge
    690

    Standard

    Hey

    Yep. Array-Größen müssen fest Definiert sein. also entweder ein #define machen oder const int sollte auch noch gehen.
    Falls du variable Arrays brauchst, dann nur mit nem pointer / malloc

    MfG.

    Security is an illusion.
    Cheater : 8=o
    Normaluser : 8=======o
    Ich : 8================o

    BM: (4|2|0)

  4. #4
    The Chosen One oder so Avatar von Apex
    Registriert seit
    16.09.2007
    Beiträge
    1.469

    Standard

    Gut, dann hab ich doch richtig gelegen. Hab mir gedacht, du brauchst vielleicht ein bisschen Hilfe im Bereich Pointer und hab dann 'n interessantes PDF Dokument gefunden:

    http://www.sec.informatik.tu-darmsta...fuehrung_m.pdf

    Weiter unten stehen dann Beiträge zu Pointer, aber ob es dir hilft, weiß ich nicht gibt aber sicherlich bessere / gute "Tutorials" im Internet.
    "Die Menschheit wird eines Tages zu Grunde gehen. Vermutlich aus dem gleichen Grund wie die Dinosaurier - zu viel Panzer und zu wenig Hirn."


  5. #5
    Anfänger Avatar von li0n
    Registriert seit
    31.05.2010
    Beiträge
    12

    Standard

    Ok dankeschön das mit den Arraygrößen war mir neu

    //EDIT: Das mit dem const int arrysiz klappt auch nicht aber ich habe jetzt pack aeifach als pack[12000] definiert.
    Geändert von li0n (01.06.2010 um 16:31 Uhr)

Ähnliche Themen

  1. Keine Fehler meldung
    Von inmate im Forum C, C++
    Antworten: 3
    Letzter Beitrag: 11.08.2009, 16:06
  2. Error meldung:(
    Von Topmaster im Forum PHP
    Antworten: 0
    Letzter Beitrag: 27.10.2007, 09:03

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •