Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehlermeldung wenn Host/IP nicht erreichbar? (C)
Immortal
08-11-2002, 14:51
Hi Leute,
also ich habe einen kleinen Portscanner in C geschrieben mit dem ich jedoch ein Problem habe:
Was muss ich machen, wenn ich eine Fehlermeldung ausgeben will, wenn eine IP oder ein Host nicht erreichbar ist?
Quelltext im Anhang.
(Warum kann ich keine Datei mit tar.gz hochladen?)
cya immortal
Immortal
08-11-2002, 19:42
Ok, das klappt jetzt auch, aber nur wenn die IP über 255.255.255.255 liegt! Woran liegt das? Wenn nur eine der vier Teile einen Wert von >= 256 kommt die Fehlermeldung, sonst wieder nur der Prompt!
Irgendwelche Vorschläge?
cya marco
anda_skoa
08-11-2002, 23:26
nur Zahlen bis 255 sind zulässig, wenn das eine IPv4 Adresse ist.
Wenn das letzte Byte 255 ist, bezeichnet das die broadcast Adresse eine Netzes und ist somit auch keine gültige Hostadresse.
Ciao,
_
Immortal
09-11-2002, 12:06
Erstmal Danke für die Antwort anda_skoa!
Angenommen ich bin offline, dann sollte immer eine Fehlermeldung kommen, außer wenn ich:
127.0.0.1 / localhost oder 192.168.100.80 / unreal (<-- also meine IP/hostname)
als erstes Argument angebe. Wie mache ich das? Im Moment habe ich es einfach so gemacht:
if (foo = gethostbyname(argv[1]) == NULL)
{
perror ("cannot resolve host\n")
return(1);
}
Aber wie gesagt kommt die Fehlermeldung nicht unter 255.255.255.255.
Wäre über ein wenig Hilfe erfreut oder habe ich das jetzt nicht ganz verstanden und es geht garnicht ao wie ich mir das denke?
cya marco
anda_skoa
09-11-2002, 12:49
gethostbyname macht eigentlich nur Sinn, wenn der Hostname gegeben ist.
Für eine IP Adresse braucht kein DNSLookup gemacht werden.
Da für wäre gethostbyaddr besser.
In beiden Fällen funktioniert es, wenn der Name oder die Adresse über /etc/hosts oder einen Nameserver aufgelöst werden kann.
Es ist kein Kriterium, ob der Host selbst erreichbar ist.
Dafür mußt du etwas an den Host schicken.
Entweder eine Verbindung aufbauen oder ein ICMP Ping.
nmap prüft, wenn man es nicht abschaltet, mit einem Ping, ob der Host erreichbar ist.
Ciao,
_
Immortal
09-11-2002, 15:19
Danke, ich werde es mal mit verbinden probieren. Also connect() + IP, richtig?
Wie schickt man eigentlich ohne system() ICMP packages (--> man xxx)?
cya marco
anda_skoa
09-11-2002, 15:57
Ich glaube dafür braucht man einen RAW Socket
man 7 raw
Ciao,
_
Immortal
09-11-2002, 16:32
Ok, ich Danke dir und diesem Board! ;)
cya marco
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.