tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
437
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    vaporizer vaporizer ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    206
    Hallo
    also ich bin grade dabei C zu erlernen
    und hab versucht einen einfachen Portscanner zu programmieren (Tutorial)
    compiliert hab ich es mit gcc was auch wunderbar funktionierte
    nur wenn ich das Programm ausführen möchte kommt folgende Meldung:
    "Speicherzugriffsfehler"
    kann mir jemand sagen warum?
     

  2. #2
    Registriert seit
    Apr 2001
    Ort
    Hamburg
    Beiträge
    1.309
    Ich glaube, hier kann keiner hellsehen, von daher wäre es äußerst hilfreich, wenn du deinen Quellcode mal posten würdest.
     

  3. #3
    vaporizer vaporizer ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    206
    hier ist der Code:
    das idle stand für das Delay hab ich aber rausgelöscht
    da es Probleme mit SDL.h gab
    müßte aber auch ohne Delay gehn schätz ich mal oder?
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    
    #include <sys/socket.h>
    #include <signal.h>
    #include <netinet/in.h>
    #include <string.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <stdio.h>
     
     
    int scann_normal(char *ip, int port);  
    int main(int argc, char *argv[])
    {
      char *ip;
      unsigned int startport = 0;
      unsigned int endport = 0;
      unsigned int idle = 0;
      int i = 0;
      char *tmp;
      int tmp2 = 0;
     
      if (argc < 5)
      {
        printf ("Error : Incorrect usage.\n");
        printf ("Usage : littlescanner -IP -startport -endport -idle [in ms].\n");
        return 0;
      }
      if (strlen(argv[1]) > 15)
      {
        printf ("Error : The IP-Parameter is not a valid IP-adress\n");
        return 0;
      }
      else
      {
        strcpy(ip,argv[1]);
      };
     
      tmp = argv[2];
      tmp2 = atol (tmp);
      if (tmp2 < 65535 && tmp2 > 0)
      {
        startport = tmp2;
      }
      else
      {
        printf ("Startport is not a valid Number.\n");
        return 0;
      }
      tmp = argv[3];
      tmp2 = atol (tmp);
      if (tmp2 < 65535 && tmp2 > 0 && tmp2 > startport)
      {
        endport = tmp2;
      }
      else
      {
        printf ("Endport is not a valid Number. \n");
        return 0;
      }
      idle = atol (argv[4]);
     
      for (i = startport; i <= endport; i++)
      {
        scann_normal(ip,i);
      }
    }
     
    int scann_normal(char *ip, int port)
    {
      int sockfd;                       
      struct sockaddr_in servaddr;              
     
      servaddr.sin_family = AF_INET;            
      AF_INET
      servaddr.sin_port = htons(port);      
      servaddr.sin_addr.s_addr = inet_addr(ip); 
      sockfd = socket(AF_INET, SOCK_STREAM, 0); 
     
      if (connect(sockfd,(struct sockaddr *) &servaddr, sizeof(servaddr)) != -1)    
        printf ("Port %i is open\n",port);
     
      close (sockfd);                   
    }
    also wie gesagt
    wenn ich das pogramm ausführe bekomm ich als Antwort:
    Speicherzugriffsfehler
    Geändert von Patrick Kamin (28.05.04 um 17:05 Uhr)
     

  4. #4
    Registriert seit
    Jan 2002
    Ort
    Bayern
    Beiträge
    1.390
    Also zunächst mal:
    BITTE BITTE CODE-TAGS BENUTZEN
    Dein Fehler ist hier:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    int main(int argc, char *argv[])
    {
       char *ip;  // das ist ein Zeiger der niergendwohin zeigt
       unsigned int startport = 0;
       unsigned int endport = 0;
       unsigned int idle = 0;
       int i = 0;
       char *tmp; // das ist ein Zeiger der niergendwohin zeigt
     
    ...
    ...
    strcpy(ip,argv[1]); // hier gibts einen Absturz, da ip, nicht auf einen Allokierten Speicherbereich zeigt.

    Gruß Homer
     
    we would change the world if god gave us the source code...
    and remember, science is nothing more than reverse engineering nature...

    Current projects:
    - LdrawConverter

Ähnliche Themen

  1. [C++] Speicherzugriffsfehler
    Von FBIagent im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 26.03.08, 13:16
  2. Speicherzugriffsfehler
    Von NoPanic2007 im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 11.09.07, 11:11
  3. Speicherzugriffsfehler
    Von sunmania im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 25.06.07, 10:13
  4. C++ SDL Speicherzugriffsfehler
    Von kle-ben im Forum C/C++
    Antworten: 11
    Letzter Beitrag: 09.12.05, 19:27
  5. Cedega - Speicherzugriffsfehler?
    Von _henrik im Forum Linux & Unix
    Antworten: 0
    Letzter Beitrag: 22.07.05, 13:26