Autor |
Beitrag |
jaenschi
      
Beiträge: 89
Win XP, Debian
D7
|
Verfasst: 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
      
Beiträge: 531
WinXP
D5 Ent
|
Verfasst: 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 SHELLEXECUTE das Programm aufrufen und das Ergebnis auswerten.
_________________ Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
|
|
jaenschi 
      
Beiträge: 89
Win XP, Debian
D7
|
Verfasst: 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
      
Beiträge: 2322
Erhaltene Danke: 1
FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
|
Verfasst: Mi 09.03.05 21:12
Tipp doch einfach mal in der Eingabeaufforderung ping /? ein. 
|
|
jaenschi 
      
Beiträge: 89
Win XP, Debian
D7
|
Verfasst: Mi 09.03.05 21:17
Gute Idee;)
Nächstes Problem: Wie bekomme ich jetzt das Ergebnis des Pings?
|
|
Dominique
      
Beiträge: 92
|
Verfasst: 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 DOSCOMMAND bzw. TDOSCOMMAND alternativ hier ein artikel:
Implementing PING without using raw sockets
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: 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
      
Beiträge: 92
|
Verfasst: Mi 09.03.05 21:50
sieht flott aus, deine unit benutzt aber auch die icmp.dll, oder?
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: 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
      
Beiträge: 92
|
Verfasst: Mi 09.03.05 21:58
retnyg 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
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: 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 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 
      
Beiträge: 89
Win XP, Debian
D7
|
Verfasst: Mi 09.03.05 22:15
Entweder ich kann nicht Suchen oder es gibt im SwissDelphiCenter kein "runcaptured"!?
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: 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
|
Verfasst: Mi 09.03.05 22:18
retnyg 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.  Außerdem widersprichst du dir gerade selber. 
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: 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
      
Beiträge: 92
|
Verfasst: 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:
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
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: 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
      
Beiträge: 92
|
Verfasst: Mi 09.03.05 23:08
retnyg 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 
      
Beiträge: 89
Win XP, Debian
D7
|
Verfasst: 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
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 10.03.05 15:36
wenn die unit funzt, warum verwendest du dann nicht das programm von mir ??
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...
|
|
|