Port loggen mit Java

Post Reply
Message
Author
Descartes

Port loggen mit Java

#1 Post by Descartes »

Suche ein Tool, womit ich den Traffic der über einen bestimmten Port geht.
Am liebsten wäre natürlich Java, damit das ganze dann auch auf verschiedenen Plattformen funktioniert...

Client <---> MeineIP:MeinPort <---> [LoggerProgg] <---> ServerIP:ServerPort <---> Server

Habs schon mal mit Java versucht, allerdings hat sich die Applikation auf dem Client selbst damit zugemüllt.

CrashDump

Re: Port loggen mit Java

#2 Post by CrashDump »

Hallo Descartes,
nimm einfach mal folgenden kleinen Java Hack als Ausgangsbasis.

%> java 2513 192.168.1.10 2540
Listening to local port 2513
Forwarding to 192.168.1.10:2540

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
<font color="00C000">/* ExperimentalServer.java */</font><!--color-->

import java.io.*;
import java.util.*;
import java.net.*;

public class ExperimentalServer
{
public static void main(String args[])
{
if (args.length != 3) {
System.err.println(
"Usage: java ExperimentalServer <local port> <remote IP> <remote port>"
);
System.exit(1);
}
try {
int port = Integer.parseInt(args[<!--no-->0]);
String rip = args[<!--no-->1];
int rport = Integer.parseInt(args[<!--no-->2]);
System.out.println("Listening to local port " + port);
System.out.println("Forwarding to " + rip +":"+ rport);
int calls = 0;
ServerSocket httpd = new ServerSocket(port);
while (true) {
Socket socket = httpd.accept();
Socket socket2 = new Socket(rip, rport);
(new ClientThread(++calls, socket, socket2)).start();
}
} catch (IOException e) {
System.err.println(e.toString());
System.exit(1);
}
}
}

<font color="00C000">/**
* Die Thread-Klasse für die Client-Verbindung.
*/</font><!--color-->
class ClientThread extends Thread
{
private Socket socket;
private Socket socket2;
private int id;
private PrintStream out;
private InputStream in;
private byte[] buff;

<font color="00C000"> /**
* Erzeugt einen neuen Client-Thread mit der angegebenen
* id und dem angegebenen Socket.
*/</font><!--color-->
public ClientThread(int id, Socket socket, Socket socket2)
{
this.id = id;
this.socket = socket;
this.socket2 = socket2;
}

<font color="00C000"> /**
* Hauptschleife für den Thread.
*/</font><!--color-->
public void run()
{
try {
System.out.println(id + ": Incoming call...");
out = new PrintStream(socket2.getOutputStream());
in = socket.getInputStream();
readRequest();
createResponse();
socket.close();
System.out.println(id + ": Closed.");
} catch (IOException e) {
System.out.println(id + ": " + e.toString());
System.out.println(id + ": Aborted.");
}
}

<font color="00C000"> /**
* Liest den nächsten Request
*/</font><!--color-->
private void readRequest() throws IOException
{
buff = new byte[in.available()];
in.read(buff);
System.out.println(buff);
}

<font color="00C000"> /**
* Request bearbeiten
*/</font><!--color-->
private void createResponse()
{
out.print(buff);
}
}
</font><hr></pre></blockquote>

Post Reply