Ethernet Daten abfangen

Status
Nicht offen für weitere Antworten.

MustiTR

Mitglied
Hallo

wie kann ich in eine laufende Verbindung (Port) mich zwischenschalten,abhören?
Mein Problem ist das ich ein Gerät habe welches mit ein bestimmten Programm über LAN Kabel kommuniziert und Daten an den Rechner schickt. Die Software muss dabei mit dem Gerät in Verbindung bleiben weil es auch Information zum Gerät schickt welches es am laufen hält. Der Datenstrom das vom Gerät kommt hört,solang man vom Software aus nicht abbricht, nicht auf.

Ich dachte mit ein einfachen Socket welches auf dem Port zugreift wohin die Daten fließen könnte man sich zwischenschalten nur Passiert bei mir nichts. Kann es sein das einige Ports keine 2. Anwendung zulassen die mitschneiden möchten? Wenn ja wie umgehe ich es und kann mitschneiden was an Daten rüberkommen.

Ablauf ist folgenderweise:

1- Starte die Software vom Gerät
2- Gerät fängt an Daten an diese Software zu schicken
3- Ich starte mein Java Programm und versuche vom Port wohin die Daten gehen mitzuschneiden.

Mit Wireshark konnte ich überprüfen auch wirklich die Daten an den richtigen Port geschickt werden, der zeigt mir sogar an welche Daten gerade vom Port fließen genau die müsste ich mit mein Java Programm auch abfangen.
Nur mein Java Code tut so als ob er nie Daten bekommt.

Folgenden Code hab ich dazu geschrieben:

Code:
public class Receive {

	ServerSocket socket;
	ODTFilter fil;
	
	Receive(int portNr,String url,int value) throws IOException{
		
		socket = new ServerSocket(portNr);
		fil  = new ODTFilter(url,value);
	} 
	
	public void makeMappa() throws IOException {
		
		boolean start = true;
		byte[] b = new byte[4];
					
		Socket client = serverSocket.accept();
		InputStream input = client.getInputStream(); // Hier bleibt mein Programm stehen		
		while(start) {
			input.read(b); 
			fil.fillMappa(b);
		}
		input.close(); 
	}
 

musiKk

Top Contributor
Ob reines Mitschneiden mit Java moeglich ist, entzieht sich meiner Kenntnis. Du koenntest allerdings eine Art Proxy spielen. D.h. du startest den Server, dann dein Java-Programm und dann verbindest du dich mit dem Client zu deinem Programm und schickst alle Daten, die dir der Client schickt direkt an den Server weiter (und dessen Antworten auch wieder an den Client zurueck). Dadurch muessen alle Daten an deinem Programm vorbei.

Das Ethernet befindet sich uebrigens 2 bis 3 OSI-Schichten unter der Port-Thematik.
 
T

tuxedo

Gast
@Kim
*zustimm*

Wenn du nur analysieren und mitscheiden willst ist WireShark (google) wohl die beste und schnellste Lösung.

Mit Java bricht man sich da nur unnötig einen ab.
 

musiKk

Top Contributor
Wireshark hat der OP ja schon verwendet. Wenn die Daten in einem Java-Programm verwendet werden muessen, dann koennte man auch per Wireshark aufzeichnen und die PCAP-Datei (da gabs auch mal nen Thread hier) verwursten.
 

MustiTR

Mitglied
Mein Problem ist das ich mit den Daten weiter arbeiten muss es sind einfache hexa werte die rüberkommen, die java klasse soll eine schnittstelle für das gerät werden und sie auch anschließen weiterverarbeiten es reicht mir also nicht einfach nur die daten einsehen zu können.
 

Kim Stebel

Bekanntes Mitglied
es wurden doch schon zwei lösungsansätze(sniffer, proxy) genannt, was willst du noch? sniffer scheint in deinem fall nicht geeignet, also schreib nen proxy.
 

MustiTR

Mitglied
ich habe keine ahnung wie so ein proxy geschrieben wird könnte mir einer ein beispiel zeigen/ geben. oder wie sowas funktioniert ??
 
T

tuxedo

Gast
http://de.wikipedia.org/wiki/Proxy_(Rechnernetz)

Für den Anfang sollte das hilfreich sein. Dann schaust du in der Javainsel nach wie man mit der Netzwerkprogrammierung umgeht. Wenn du dann konkrete Fragen hast: Her damit.

Ein Proxy ist eben nichts triviales was man in 2 Zeilen Code gebastelt hat. Da gehört je nach Anforderung schon ein bisschen mehr dazu.

- Alex
 
T

tuxedo

Gast
>> Um effizientes Proxy in Java zu schreiben kommst du an Java NIO nicht vorbei

Ganz so pauschalisieren würde ich das nicht. Viele Anwendungen nutzen das standard IO und sind dennoch effizient.
Wenn der Proxy allerdings tausende Clients bedienen können soll und ein Gigabitnetz exzellent ausnutzen können soll, dann wäre NIO in der Tat nicht schlecht. Aber wenn es nur um eine Hand voll Clients geht die in einem 100Mbit Netzwerk leben, lohnt sich der Aufwand für NIO nicht wirklich. Okay, xsocket nimmt einem viel Arbeit ab, aber vielleicht will man keine Abhängigkeiten zu anderen Libs haben? Dann müsste mans selbst machen, und dann steht man wieder vor dem zusätzlichen Aufwand.

Wie dem auch sei: Man muss es eben abwägen. Aber pauschalisieren würde ich das nicht.

- Alex
 

MustiTR

Mitglied
Hi Leute ich bin es wieder einmal...
Ich habe mich entschlossen die Sache mit Jpcap zu machen.
Kennt sich einer mit Jpcap einigermaßen aus ?

Code:
                ReceiveJpcap recJpcap = new ReceiveJpcap("C:\\Users\\Username\\Desktop");
		NetworkInterface[] devices = JpcapCaptor.getDeviceList(); 
		
		
		try {
			JpcapCaptor jpcap = JpcapCaptor.openDevice(devices[1], 8, false, 0);
			
			jpcap.loopPacket(-1, recJpcap);
			
		} catch (IOException e) {
			System.out.println("Fehler Main Klasse: " +e.getMessage());
		}

hab ich geschrieben.

Diesmal hab ich das Problem das ich irgendwie nicht alle Pakete zum Greifen bekomme. Die Datei dich ich mit reJpcap fülle wächst nicht annährend so schnell wie die Daten die geschickt werden.
Wieso greift jpcap.loopPacket nicht alles auf und speichert es ab ??? Oder kann es daran liegen das mein Algorithmus in ReceiveJpcap nicht schnell genug ist ?
Wenn mir einer weiterhelfen kann würde ich mich freuen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Webserver mit Ethernet-Device verbinden Netzwerkprogrammierung 0
J Ethernet Frames Netzwerkprogrammierung 4
vladimir Java und Echtzeit-Ethernet-Varianten Netzwerkprogrammierung 11
OnDemand Daten per API senden, parallel Netzwerkprogrammierung 9
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
Z Kann nicht Daten vom Server lesen Socket Netzwerkprogrammierung 10
S Daten über TCP/IP senden Netzwerkprogrammierung 3
B Daten an Javaprogramm per URI Aufruf übergeben Netzwerkprogrammierung 7
N websocket - keine Daten mehr nach ca 80 Sekunden Netzwerkprogrammierung 0
C Spezielle Daten aus Website entnehmen Netzwerkprogrammierung 5
H Daten auf einer Webseite eintragen Netzwerkprogrammierung 11
A Socket Daten in Textdokument speichern? Netzwerkprogrammierung 1
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
J Daten von einem HTML-Textfeld abrufen Netzwerkprogrammierung 3
S Fakturierungsprogramm - Daten aktuell halten (blutiger Anfänger) Netzwerkprogrammierung 1
D Mit Server Daten austauschen Netzwerkprogrammierung 4
K Server liest Daten nicht Netzwerkprogrammierung 6
L HTTP Daten an Server übergeben Netzwerkprogrammierung 2
R Daten von Cloud laden Netzwerkprogrammierung 5
fLooojava Daten an ein Arduino im selben Netzwerk senden Netzwerkprogrammierung 1
X Daten können nicht sofort empfangen werden Netzwerkprogrammierung 1
S Server - Mehrere Klassen sollen Daten senden und empfangen Netzwerkprogrammierung 25
P Socket Best Practice: Daten bündeln Netzwerkprogrammierung 5
E Verfügbarkeit von Daten in Streams Netzwerkprogrammierung 4
F Daten aus Internetseiten auslesen Netzwerkprogrammierung 56
S Server Client Daten hin und herschicken Netzwerkprogrammierung 2
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
P Socket Daten senden mit ServerSocket? Netzwerkprogrammierung 2
H Daten an Textfeld einer Webseite schicken Netzwerkprogrammierung 2
A versch. Daten im Stream erkennen Netzwerkprogrammierung 2
D daten per post senden Netzwerkprogrammierung 3
M Senden von Daten nicht direkt möglich? Netzwerkprogrammierung 6
J Applet soll Daten auf Server ablegen - einfachster Weg fuer n00bs? Netzwerkprogrammierung 4
F Socket Daten über verschiedene IP's schicken Netzwerkprogrammierung 5
F UDP Daten kommen nicht an Netzwerkprogrammierung 22
E Socket OutputSream abbruch.Wegen zuviel !empfangener! Daten? Netzwerkprogrammierung 10
C Client zu Client Daten übertragen Netzwerkprogrammierung 13
S Thread, Daten vom Socket lesen Netzwerkprogrammierung 2
S Socket XML-Daten und Parameter an Server schicken Netzwerkprogrammierung 3
M Objekt über Object-Stream, empfange "alte" Daten Netzwerkprogrammierung 2
P HttpClient - Daten einer Website "unvollständig" Netzwerkprogrammierung 5
P Server/Client Daten empfangen, wenn Daten gesendet werden Netzwerkprogrammierung 9
K Socket Daten lesen ohne Längenangabe Netzwerkprogrammierung 19
T RMI Effizenteste Übertragung von Daten Netzwerkprogrammierung 6
A Socket Client Server Connection wird aufgebaut aber keine daten geschickt. Netzwerkprogrammierung 5
B Socket Daten empfangen funktioniert nicht richtig - wo liegt der Fehler? Netzwerkprogrammierung 7
Kr0e Versenden von Daten übers Netzwerk Netzwerkprogrammierung 30
E Daten kommen anders an als gesendert ?! Netzwerkprogrammierung 6
S HttpURLConnection POST splittet Daten in zwei Pakete Netzwerkprogrammierung 9
F POST-Daten sende Netzwerkprogrammierung 3
E HTTPS Debuggen (verschlüsselte Daten anzeigen)? Netzwerkprogrammierung 12
N Per POST -Methode Daten an den Web-Server übertragen. Netzwerkprogrammierung 9
Iron Monkey Große Daten ins Vector füllen Netzwerkprogrammierung 4
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
D Daten, die mit PHP erzeugt werden, mit Java auslesen Netzwerkprogrammierung 8
F Daten senden und empfangen mit Applet Netzwerkprogrammierung 8
I Problem beim empfangen von Daten (Zahlen) Netzwerkprogrammierung 7
S Daten per GET-Methode Netzwerkprogrammierung 2
H Server soll Daten schicken, aber wie? Netzwerkprogrammierung 47
M Socket schließt bevor Daten komplett geladen Netzwerkprogrammierung 5
C Flash Daten an Java senden, wie serialisieren? Netzwerkprogrammierung 3
E rxtx serielles senden von Daten Netzwerkprogrammierung 2
D Socket, Daten über BufferedWriter senden Netzwerkprogrammierung 18
G TCP Verbindung überprüfen OHNE daten zu verschicken Netzwerkprogrammierung 11
M Daten übers Netz verschlüsselt übertragen? Wie? Netzwerkprogrammierung 18
J Post-Daten an URL schicken Netzwerkprogrammierung 2
U Image erzeugen aus empfangenen Daten Netzwerkprogrammierung 7
A Wie werden Daten versendet? "Crashcode" Netzwerkprogrammierung 4
D Frage: Buffered Reader --> Wie komm ich an die Daten (Byt Netzwerkprogrammierung 3
G unvollständige Daten: Http Client-Server-Kommunikation Netzwerkprogrammierung 2
E Multi-Part Form-Daten mit HttpURLConnection Netzwerkprogrammierung 6
A Datenverlust (zuviele Daten!) über Sockets Netzwerkprogrammierung 4
T Daten über GSM verschicken Netzwerkprogrammierung 4
M Einfachste Möglichkeit aus'm Applet Daten an Server senden Netzwerkprogrammierung 6
P Verschiedene Daten über einen Stream Netzwerkprogrammierung 4
M Verliere Daten mit WinXP Netzwerkprogrammierung 10
O eingehende Daten speichern Netzwerkprogrammierung 3
D UDP-Daten anzeigen Netzwerkprogrammierung 2
D Daten per Server- Client nur als byte verschicken? Netzwerkprogrammierung 3
A daten an php script per post senden und ausgabe einlesen Netzwerkprogrammierung 6
M Paktete abfangen und zu eigenem Programm umleiten - wie? Netzwerkprogrammierung 5
Hindi93 Abbruch eines Programmes abfangen Netzwerkprogrammierung 8
J net send Popups abfangen und in eigenem Programm ausgeben. Netzwerkprogrammierung 12
T Wie connection Reset abfragen/abfangen? Netzwerkprogrammierung 10
D SOAP Message abfangen und auslesen Netzwerkprogrammierung 3
D SOAP-Message von ebay abfangen (Notification) Netzwerkprogrammierung 2
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
W UDP Pakete abfangen Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben