alle computer die im netzwek sind anzeigen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

es geht um ein serverloses protokoll.
ich muss alle computer, die im netzwerk sind einsehen koenen...
ich habe an broadcast pings gedacht, aber ich glaube nicht das windows vista das unterstuetzt?
moeglicher weise kann ich auch das ganze mit udp proadcasts machen, aber wie sicher ist udp in einem lokalen netzwerk? und wie sieht es mit der unterstuezung fuer udp broadcasts aus?

danke im voraus!
cp != mv
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

Hast du evtl daran gedacht in die ARP- Tabelle zu gucken? da werden alle Rechner die im selben Netz wie du sind aufgeführt.
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

ok, gut zu wissen
in der hinsicht habe ich ein paar luecken :roll:

wieso zeigt meine arp tabelle (arp -a) nur manchmal einen anderen computer im netzwerk an? (sowohl unter linux als auch windows zeit arp -a in unregelmaessigen abstaenden den anderen pc nicht an)
cp != mv
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

hmm, da war ich wohl ein wenig zu voreilig mit meinem Beitrag. Das Problem dürfte sein das die Rechner in deinem Netz alle einzeln an nem Router angeschlossen sind, oder? Wenn dem so ist, dann vergiss meine Idee einfach wieder. Der Router sollte dafür sorgen das keine Pakete die für die anderen Rechne sind bei dir ankommen.
Wie genau sieht dein Netz denn aus, und wie viele Rechner musst du finden?
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

Das programm soll auserhalb meines netzwerkes auch funktionieren!

darueber wie die netzwerke aufgebaut sind, auf die es laufen soll habe ich keine angabe
cp != mv
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

nmap -sP -oG -T5 192.168.1.1-255 - Und das du Netzwerke nicht von aussen Scannen können solltest dürfte dir ja klar sein ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

veers hat geschrieben:nmap -sP -oG -T5 192.168.1.1-255 - Und das du Netzwerke nicht von aussen Scannen können solltest dürfte dir ja klar sein ;)
ich denke mal das er 250 Pings wild ins Netz eigentlich durch einen Broadcast unterbinden wollte, aber was anderes würde mir nu auch nich einfallen als alle möglichen Adressen auszuprobieren. Wird aber ein ziemlich nervendes Protokoll, wenn es bei jedem Start erst mal das Netz flutet .... :roll: vor allem wenn man sich überlegt das es sich nicht nur um einen Rechner handelt der das macht.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Ich dachte er will das als Netzwerk Tool o.ä. machen. Für eigene Protokolle gibt es da natürlich effizientere Mittel und Wege ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

Für eigene Protokolle gibt es da natürlich effizientere Mittel und Wege
zum beispiel...
cp != mv
kaschu
User
Beiträge: 25
Registriert: Sonntag 25. Februar 2007, 14:15

Costi hat geschrieben:
Für eigene Protokolle gibt es da natürlich effizientere Mittel und Wege
zum beispiel...
Zum Beispiel: Dein Sender schickt einen UDP Broadcast und Deine Clients antworten (q&d, nur zur Demo):

Code: Alles auswählen

# UDP Sender
import socket, sys
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto("ping!", ('<broadcast>', 12345))

while 1:
    (data, address) = s.recvfrom(2048)
    if len(data) > 0:
        print "Client %s pongt auf Port %s!" % address

und

Code: Alles auswählen

# Responder
import socket, sys
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('',12345))

while 1:
    (data, address) = s.recvfrom(2048)
    if len(data) > 0:
        print "got ping!"
        s.sendto("pong!", address)

Wenn der Responder auf jedem Rechner im Netz läuft (innerhalb der broadcast domain), wird er antworten.

Alles andere (broadcast ping, SYN-connects, usw.) wird entweder nicht funktionieren (z. B. weil die meisten Betriebssysteme nich auf Ping-Broadcasts antworten) oder das NIDS schlägt an und alarmiert den Admin. Und von dem gibt es dann Haue. ;)

Gruß
kaschu
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Ein vollständiges wenn auch nicht sehr effizientes - dafür einfaches - Beispiel findest du im lanshark source code. Funktioniert mehr oder weniger wie das Beispiel von kaschu.

- Jonas
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

guut, dan muss ich das nur noch mit asyncore implementieren...
cp != mv
Antworten