ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
437
437
EMPFEHLEN
-
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?
-
27.05.04 00:33 #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.
-
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?
also wie gesagtCode :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); }
wenn ich das pogramm ausführe bekomm ich als Antwort:
SpeicherzugriffsfehlerGeändert von Patrick Kamin (28.05.04 um 17:05 Uhr)
-
27.05.04 10:02 #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ß Homerwe 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
-
[C++] Speicherzugriffsfehler
Von FBIagent im Forum C/C++Antworten: 4Letzter Beitrag: 26.03.08, 13:16 -
Speicherzugriffsfehler
Von NoPanic2007 im Forum C/C++Antworten: 5Letzter Beitrag: 11.09.07, 11:11 -
Speicherzugriffsfehler
Von sunmania im Forum C/C++Antworten: 1Letzter Beitrag: 25.06.07, 10:13 -
C++ SDL Speicherzugriffsfehler
Von kle-ben im Forum C/C++Antworten: 11Letzter Beitrag: 09.12.05, 19:27 -
Cedega - Speicherzugriffsfehler?
Von _henrik im Forum Linux & UnixAntworten: 0Letzter Beitrag: 22.07.05, 13:26





Zitieren
Login






