Autor Beitrag
jaenschi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 89

Win XP, Debian
D7
BeitragVerfasst: Mi 09.03.05 19:48 
Hallo,
ich will ein Programm schreiben, dass mein lokales Netzwerk nach "alive-hosts" durchsucht.
Ich habe das nun mit der idicmp-Komponente gemacht und festgestellt, dass das nur mit Adminrechten
funktioniert. :(
Gibt es noch eine andere Möglichkeit zu pingen?
UC-Chewie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: Mi 09.03.05 20:50 
Um ICMP-Rechte zu versenden, brauchst du Admin-Rechte, da führt kein Weg vorbei.

Wie immer gibt es immer ein Aber: Das Microsoft-Programm "ping.exe" benutzt undokumentierte Funktionen, die ein Pingen ohne Admin-Rechte erlauben. Du könntest also z.B. via Suche im MSDN SHELLEXECUTE das Programm aufrufen und das Ergebnis auswerten.

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
jaenschi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 89

Win XP, Debian
D7
BeitragVerfasst: Mi 09.03.05 21:05 
Hab das jetzt mal mit ping.exe ausprobiert.
Wenn ich aber 255 ips pingen will ist das ja nicht sehr schnell^^
Kann ich als Parameter da auch die Größe, Anzahl und Timeout der Pakete angeben?
WeBsPaCe
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: Mi 09.03.05 21:12 
Tipp doch einfach mal in der Eingabeaufforderung ping /? ein. ;)
jaenschi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 89

Win XP, Debian
D7
BeitragVerfasst: Mi 09.03.05 21:17 
Gute Idee;)
Nächstes Problem: Wie bekomme ich jetzt das Ergebnis des Pings?
Dominique
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 92



BeitragVerfasst: Mi 09.03.05 21:25 
Titel: Alternative geht vieleicht auch ohne "ping.exe"
die ausgabe von ping.exe kannst du ggf. per pipe umleiten,
such mal nach Suche in: Delphi-Forum, Delphi-Library DOSCOMMAND bzw. Suche bei Google TDOSCOMMAND alternativ hier ein artikel:
Implementing PING without using raw sockets
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 09.03.05 21:31 
warum kompliziert wenn es auch einfach geht ? bei meinem open-source programm class c subnet pinger ist eine ping unit dabei.

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Dominique
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 92



BeitragVerfasst: Mi 09.03.05 21:50 
user profile iconretnyg hat folgendes geschrieben:
warum kompliziert wenn es auch einfach geht ? bei meinem open-source programm class c subnet pinger ist eine ping unit dabei.

sieht flott aus, deine unit benutzt aber auch die icmp.dll, oder?
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 09.03.05 21:52 
ja, wieso ?

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Dominique
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 92



BeitragVerfasst: Mi 09.03.05 21:58 
user profile iconretnyg hat folgendes geschrieben:
ja, wieso ?

mich würde interessieren, wie genau ping.exe funktioniert, im gegensatz zur icmp braucht's dafür keine admin-rechte (siehe oben).
habe eine ähnliche aufgabenstellung zu rechnerüberwachung im LAN, da komm ich allerdings nicht mal annähernd (kein ADSI, kein WMI, kein nix) weiter - dank fehlender rechte...
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 09.03.05 22:04 
der unterschied wird sein dass ping.exe die icmp.dll nicht verwendet.
ein ping ohne ICMP ist nämlich nicht möglich...

aber wenn du das mit dem ping kommando lösen willst, empfehle ich mal nach Suche in: Delphi-Forum, Delphi-Library RUNCAPTURED zu suchen.
das ist eine funktion zum ein programm rennen lassen und den rückgabewert in ein memo schreiben.

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...


Zuletzt bearbeitet von retnyg am Mi 09.03.05 22:42, insgesamt 1-mal bearbeitet
jaenschi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 89

Win XP, Debian
D7
BeitragVerfasst: Mi 09.03.05 22:15 
Entweder ich kann nicht Suchen oder es gibt im SwissDelphiCenter kein "runcaptured"!?
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 09.03.05 22:18 
dann Klick auf den DF-Suche link in meinem letzten beitrag.
bei "Warten auf DosCommand" habe ich die procedure mal gepostet

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 09.03.05 22:18 
user profile iconretnyg hat folgendes geschrieben:
der unterschied wird sein dass ping.exe die icmp.dll nicht verwendet.
ein ping ohne ICMP ist nämlich nicht möglich...

Wieso? Ich kann mir das Paket doch selber zusammenbauen und mit RawSockets verschicken. :gruebel: Außerdem widersprichst du dir gerade selber. ;)
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 09.03.05 22:29 
ich dachte eigentlich dass ein user mit 7000 beiträgen den unterschied zwischen ICMP und icmp.dll kennt.
ICMP ist ein Protokoll, icmp.dll eine Datei.

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Dominique
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 92



BeitragVerfasst: Mi 09.03.05 22:56 
...habe mittlerweile mal ein bisserl bei Microdoof gegraben, um herauszufinden, was es mit den Admin-Rechten eigentlich auf sich hat.
(roh übersetzt aus microsoft-knowledge-base q195445)

Zitat:
Problembeschreibung
Wenn sich der Benutzer einen Nicht-Administrator befindet, in einem Windows NT 4.0- oder einem Windows 2000-System angemeldet werden, ist, schlägt ein Aufruf von Sockets oder WSASocket, der den SOCK_RAW-sockentyp angibt, mit der folgenden Winsock-Fehlermeldung (10013 WSAEACCES) fehl:
"wurde, einen Versuch auf ein Sockets auf einer Weise zuzugreifen, die von seiner Zugriffsberechtigungen nicht zugelassen wird vorgenommen".
Status
Es handelt sich hierbei um ein beabsichtigtes Verhalten.
Weitere Informationen
In Windows 2000 gibt es keine Möglichkeit zu dem Deaktivieren dieser Sicherheitsprüfung. Zugriff auf Raw Sockets wird auf einer Per-transport-Basis gewährt. Für die Adressenfamilie AF_INET verfügen nur Mitglieder der Gruppe über den notwendigen, Raw Sockets zu erstellen Zugriff.
Abhilfe
Sie die Sicherheitsprüfung deaktivieren können, um dieses Problem in Windows NT 4.0 umzugehen, auf RAW sockt, indem die folgende Registrierungsvariable erstellt und, seinen Wert zu DWORD 1 festlegt:
ausblenden Quelltext
1:
   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Afd\Parameters\DisableRawSecurity					


Neu müssen Sie ihren Computer starten, nachdem Sie die Registrierung ändern.
WARNUNG bei dem Erfordern von Neu-Installation ihres Betriebssystems Ihrer können schwerwiegende Probleme auftreten, wenn Sie die Registrierung falsch ändern. Microsoft kann dafür nicht garantieren, dass die Probleme behoben werden können. Ändern Sie die Registrierung um eigenes ihr Risiko.

Microsoft empfiehlt, dass Sie die Registrierung sichern, bevor Sie es ändern. Aktualisieren Sie ihre Notfall-Diskette zudem, wenn Sie mit Microsoft Windows NT oder Microsoft Windows 2000 arbeiten.


Zeigen Sie für Information über das Bearbeiten der Registrierung das Hilfethema "Changing Keys And Values" in Registrierungseditor (Regedit.exe) oder "Add and Delete Information in the Registry" und die Hilfethema in Regedt32.exe "Edit Registry Data" an. Es ist Ihr eigenes Risiko, den Windows- oder Windows NT-Registrierungseditor oder ähnliche Werkzeuge zur Manipulation der Windows- oder Windows NT-Registrierung zu verwenden. Wenn Sie mit WINDOWS NT arbeiten, sollten Sie ihre Notfall-Diskette zudem aktualisieren.


was für'n käse....

also doch mal so versuchen: Implementing PING without using raw sockets
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 09.03.05 23:02 
das ist genau die unit die ich in meinem programm verwendet habe. falls mein programm bei dir nicht funktioniert, tut es dieser code auch nicht...

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Dominique
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 92



BeitragVerfasst: Mi 09.03.05 23:08 
user profile iconretnyg hat folgendes geschrieben:
das ist genau die unit die ich in meinem programm verwendet habe. falls mein programm bei dir nicht funktioniert, tut es dieser code auch nicht...


was zu befürchten ist... mal sehen, wie jaenschi das löst...

hier im heimnetz läuft's 'eh tadellos - aber auf der arbeit muß ich's mal versuchen. da bin ich rechtetechnisch irgendwie kastriert (um missverständnissen vorzubeugen: ich meine natürlich im übertragenen sinne!)
jaenschi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 89

Win XP, Debian
D7
BeitragVerfasst: Do 10.03.05 14:59 
Ich hab das jetzt mit der Unit von delphi.about.com/od/...anet/l/aa081503a.htm gemacht.
Funktioniert soweit auch gut:D
Nur zum Pingen von 255 IPs ist es ein bisschen langsam. Aber ich denke, wenn ich das mit Threads mache, dann
müsste das auch eine ganz ordentliche Geschwindigkeit ergeben;)
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 10.03.05 15:36 
wenn die unit funzt, warum verwendest du dann nicht das programm von mir ?? :gruebel:
naja, manchen haben am erfinden spass, da stört es die nicht wenn es das rad schon gibt.

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...