ping tool
-
hallo hab ein problem ich will mir ein ping tool schreiben so wie es auch in windows schon dabei ist aber habe kaum ahnung wie ich des schreiben soll ich glaub ich muss Raw Socket Feature dafür verwenden wenn einer von euch lust hat kann er mir ja paar tips dazu geben wäre nett
-
-
Hi,
bitte verschieben, denn: C++ kennt keine Sockets
ChrisM
-
hmm hab jetzt was gefunden und mir nen quellcode geschrieben habe aber ein kleines problem:
#include <iostream.h> //fuer cout #include <conio.h> //fuer system #include <windows.h> //fuer Sleep int main() { int ipEINLESEN; cout << "\-------IP--TOOL--V-0.1a---by ThE|NoW------\n"; cout << "Gib IP ein: "; cin >> ipEINLESEN; system ("ping ipEINLESEN -n 5"); Sleep(60000); return 0; }
des programm erkennt nicht in der zeile system ("ping ipEINLESEN -n 5");
dass ipEINLESEN eine variable ist und nicht die ip addresse wie kann ich den fehler beheben ?
-
#include <iostream> #include <cstdlib> #include <string> #include <sstream> using namespace std; int main() { cout << "IP eingeben:"; string ip; cin >> ip; const string command = "PING " + ip + " -n 5"; system(command.c_str()); }
(BTW würd ich das nicht in sicherheitskritischen Umgebungen benutzen)
-
(BTW würd ich das nicht in sicherheitskritischen Umgebungen benutzen)
warum was meinst damit ?
-
Die Commandline wird direkt mit einer Usereingabe zusammengesetzt.
So etwas ist ein typisches potentielles Sicherheitsloch.Eventuell gibt ein fieser User als IP "127.0.0.1 && rm / -rf" oder so ähnlich ein. Wenn das Programm mit root-Rechten läuft, hat der Admin ein Problem.
-
hmm verstehe gibts da nen ausweg damit kein sicherheitsloch entsteht ?
aber wahrscheinlihc muss ich dess dan ohne commandline machen oder ?
-
Bei der IP reicht es vielleicht, wenn man eine gute Funktion zum Validieren schreibt. Terminal-Zeichen wie & und | dürfen darin ja eh nicht vorkommen.
Die sicherste Variante ist es, den ping-Befehl selbst zu senden, ohne den Umweg über system(). Wie das geht, offenbart die Suche im WinAPI- (und evtl. Linux-)Forum.