Forum: Mikrocontroller und Digitale Elektronik "Hardware Ethernet Sniffer"


von Thomas Winkel (Gast)


Lesenswert?

Hallo Zusammen,
ich habe vor, mit einer externen Hardware die Netzwerkverbindung eines
PCs zu überwachen (nur mitlesen). Wenn ein bestimmter Code anliegt soll
ein Ausgang gesetzt werden. Ich hab dabei an ne Platine mit zwei RJ45
Buchsen (rein und direkt wieder raus), nen Übertrager, nen RTL8139 und
einen AVR oder PIC gedacht. Die Abschlusswiderstände entfallen hier
natürlich, terminiert wird ja an den beiden Enden.
Da ich mich mit dem ganzen Digitalkram, speziell Netzwerkprotokolle
nicht auskenne wollte ich euch erst einmal fragen, ob das so überhaupt
machbar ist.

Gruß,
Thomas

von Niels H. (monarch)


Lesenswert?

Ist möglich. Ich würde eine von den 1000 verfügbaren embedded
Netzwerkschaltungen nehmen und das Interface zusammen mit dem PC an
einem HUB (kein Switch) hängen. Damit könnte der AVR dann den traffic
mitlesen.

Jedoch ohne jemanden, der sich damit auskennt, sehe ich da wenig
erfolgschancen. Das Ganze ist doch relativ aufwendig.

von Peter (Gast)


Lesenswert?

Da haste dir aber was vorgenommen, wenn du keine Ahnung hast.
Das mit einfach Übertrager und mitlauschen, denke das wird nicht gehen.
Der Übertrager stellt einen komplexen Widerstand dar, der paralell
liegt. Das könnte das Signal unzulässig dämpfen.

Peter

von Thomas Winkel (Gast)


Lesenswert?

Hallo,
danke für eure schnellen Antworten!
An nen Router hab ich auch schon gedacht, nur sollte das schon eine
all-in-one Lösung sein, werd mir aber mal anschauen wie so ein Router
arbeitet, vielleicht reicht es ja aus das Signal mit nem schnellen
OpAmp zu entkoppeln. Wofür ist der Übertrager eigentlich gut? Um den
Gleichanteil rauszufiltern? Hab das nämlich auch schonmal ohne
gesehen.
Wo bekommt man eigentlich den RTL8139 oder einen vergleichbaren Chip
her? Eigentlich reicht mir ja was ganz simples, was mir einfach nen
verwertbaren seriellen Datenstrom erstellt, auf den PCI Controller
könnte ich ja verzichten. Sollte halt billig und einfach zu handeln
sein.
Ich hab auch schonmal an ein FPGA mit dem Ethernet Core von
opencores.org gedacht, da würde ja dann alles draufpassen, nur wäre das
auch wieder völliges Neuland für mich...
Ich muss das übrigens nicht alleine machen, ich bin primär für die
Planung und Hardware zuständig. Das ganze ist ein Projekt was so
nebenbei zur "Kontaktpflege" läuft, ohne besondere Priorität also.
Eigentlich bastel ich grad an meiner Diplomarbeit, ist halt ne gute
gelegenheit mal über den Tellerrand zu schauen und was dazu zu
verdienen.

Rock'n'Roll,
Thomas

von Georg (Gast)


Lesenswert?

Am einfachsten ist es wohl, wenn du (wie schon vorgeschlagen) einen Hub
nimmst. An diesen kannst du einen Mikrochip mit Netzwerkhardware
anschliessen (z.B. AVR mit RTL8139).

Die meisten Netzwerkkarten unterstützen einen "promiscious" mode,
indem sie alle Frames unabhängig von MAC/IP Adresse empfangen. In
diesem Modus ist es möglich, alle Daten zwischen den beiden PCs
mitzuschneiden.

Das ganze ist aber IMHO kein Kindergeburtstag und wenn du keine
speziellen Vorkenntnisse hast, solltest du erstmal Teilprojekte
durchführen und die irgendwann am Ende zusammenfügen
(Netzwerkgrundlagen, Sniffing am PC, Ethernet mit dem Mikrocontroller,
Treibererweiterung für Sniffing)

Georg

von Unbekannter (Gast)


Lesenswert?

Ein Hub geht aber auch nicht völlig transparent. Da der Hub dann aus der
Voll-Duplex-Verbindung zwischen z.B. PC und Switch eine
Halb-Duplex-Verbindung macht.

Es gibt auch schon kleine Switches mit Monitoring-Port. Auf dem Port
kommen dann Kopien des Trafics von anderen Ports an. Funktioniert
natürlich nur solange zuverlässig, wie das Datenvolumen auf der zu
überwachenden Voll-Duplex-Strecke nicht mehr als die Kapazität einer
Halb-Duplex-Verbindung überschreitet.

> Da ich mich mit dem ganzen Digitalkram, speziell
> Netzwerkprotokolle nicht auskenne

Dann solltest Du das jemanden machen lassen, der sich auskennt. Ich
schätze, Du scheiterst an diesem Projekt.

von Thomas Winkel (Gast)


Lesenswert?

Danke für eure Anregungen!
Wie schon gesagt, auf externe Geräte will ich eigentlich verzichten,
hab mich oben übrigens vertippt, meinte natürlich HUB statt Router.
Ziel ist eine PCI Karte, in die Das Netzwerkkabel reinkommt (anstatt in
die Netzwerkkarte) und aus der dann ein kurzes Kabel raus in die
Netzwerkkarte geht. Der PCI Bus dient dabei lediglich als
Spannungsversorgung und Halterung.
Möglicherweise reden wir auch ein wenig aneinander vorbei, ich will ja
nicht den gesamten Netzwerkverkehr analysieren wie z.B. Ethereal. Ich
will lediglich auf eine fest definierte Zeichenfolge warten und darauf
reagieren.
So wie ich das sehe ist mein Hauptproblem erstmal dem Netzwerkverkehr
zu lauschen ohne ihn dabei zu beeinflussen. Referenzdesigns für RTL+AVR
gibts genug im Internet, und wie gesagt, die Software schreibt jemand
anderes (jemand, der sich damit auskennt ;) ).
Im Moment bin ich halt noch in der Planungsphase und versuche dafür
Informationen und Anregungen zu sammeln.
OK, habe mittlerweile rausgefunden, dass die Übertrager tatsächlich den
Gleichanteil rausfiltern sollen, da kann ich also bei langen Leitungen
und Netzgespeisten Geräten nicht drauf verzichten.
Naiverweise würde ich das Signal einfach vorher mit schnellen OPs
entkoppeln, was haltet ihr davon?
Wenn ich mir dieses Bild ansehe:
http://www.reichelt.de/bilder/web/E910/LS803TXR.jpg
könnte ich sogar ernsthaft auf die Idee kommen eine komplette
Netzwerkkarte nachzubauen und meine Funktionen noch zusätzlich zu
implementieren, dann entfällt das Problem mit dem "lauschen" und
sauberer wäre diese Lösung auch, haltet ihr sowas für realistisch? Mit
Platinenlayout hab ich übrigens Erfahrung, auch die kleinen Strukturen
sind kein Problem, ist ja nicht so, dass ich gar nichts kann, nur von
den Netzwerkprotokollen und PC Technik hab ich keine Ahnung.
Das Ganze muss übrigens auf Hardwareebene implementiert werden, das ist
Voraussetzung.
Ist ein AVR überhaupt schnell genug um in einem 100Mbit Netzwerk auf
eine bestimmte Zeichenfolge zu warten? Oder ist ein FPGA dann doch die
bessere Lösung?
So, FEIERABEND jetzt! Ich lunger schon wieder viel zu lange im Labor
rum, seit ich mim Fahrrad zur FH fahre arbeite ich viel länger, weil
ich mich immer drum drücke die 12km wieder nach hause zu radeln... ;)
Also bis dann,
Thomas

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

ein AVR dürfte selbst mit einem ausgelasteten 10MBit Netzwerk so seine
Probleme haben. Sind ja rund 1MByte/s. Da bleiben bei maximalem Takt
von 20MHz gerade mal 20 Takte/Byte. Das kann schon reichlich knapp
werden und erfordert, wenns überhaupt klappt, handoptimierten
Assembler.

Matthias

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.