Hallo.
Ich soll ein java programm implementieren, dass aktive Netztwerkverbindungen und dazugehörigen PID/Programmname des Rechners ausgibt und danach die Aktivitäten eines bestimmten PID's mit tcpdump auf webserver speichert.
mit netstat -antup kann man aktive Verbindungen mit PID und Programmnamen ausgeben lassen z.B.
Qullell-IP/Port Ziel-IP/Port PID/Programmname
127.0.0.1 1000 124.544.55.2 1323 3233 fireworks
127.0.0.1 1000 234.134.57.1 1343 3233 kopete
usw.
wie soll ich jetzt weiter machen, dass ich den PID 3233 mit tcpdump überwache und vondem Netzwerkverkehr aufliste. Auf den Webserver kann ich auch mit java socket und ftp Verbindung speichern.
Danke im voraus.
Meine bisherige Code sah so aus.
Ich soll ein java programm implementieren, dass aktive Netztwerkverbindungen und dazugehörigen PID/Programmname des Rechners ausgibt und danach die Aktivitäten eines bestimmten PID's mit tcpdump auf webserver speichert.
mit netstat -antup kann man aktive Verbindungen mit PID und Programmnamen ausgeben lassen z.B.
Qullell-IP/Port Ziel-IP/Port PID/Programmname
127.0.0.1 1000 124.544.55.2 1323 3233 fireworks
127.0.0.1 1000 234.134.57.1 1343 3233 kopete
usw.
wie soll ich jetzt weiter machen, dass ich den PID 3233 mit tcpdump überwache und vondem Netzwerkverkehr aufliste. Auf den Webserver kann ich auch mit java socket und ftp Verbindung speichern.
Danke im voraus.
Meine bisherige Code sah so aus.
Java:
/*
su
javac NetzwerkTool3.java
java NetzwerkTool3 -1 1
java NetzwerkTool3 PID Zeit
*/
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class NetzwerkTool3{
public static void main(String argv[]) {
if (argv.length == 2) {
while (true) { // wiederhole bis ctrl + c
Netz("/usr/sbin/tcpdump -i eth0 -qn", argv[0]);
try {
Thread.currentThread();
Thread.sleep(Integer.parseInt(arg… * 1000);// Zeitintervall für Capture
} catch (Exception e) {
}
}// end while
}// end if
else {
System.out.println("Usage: PID and TIME(second)");
}
}// end main
public static void Netz(String command, String search) {
try {
String line;
Process p = Runtime.getRuntime().exec(command); // erstelle ein neuer Prozess und führe das Kommando aus
System.out.println("Das Befehl: " + command); // zeige das ausgefügtes Kommando
BufferedReader input = new BufferedReader(new InputStreamReader(p
.getInputStream()));
// lese von ausgeführten Prozess und gib es aus.
while ((line = input.readLine()) != null) { // gib das Ergebnis aus
StringTokenizer st = new StringTokenizer(line, " "); // Zerlege die Strings(line) in Tokens
int counter = 0;
int maxCounter = st.countTokens();
String listArray[] = new String[maxCounter]; // schreib die Tokens in die Array
while (st.hasMoreTokens()) { // bis letztes Token
String tokenString = st.nextToken().toString(); // umwandeln
listArray[counter] = tokenString;
counter++;
}
if (listArray.length > 1) {
if (listArray[listArray.length - 1].equals(search)|| search.equals("-1")) { // wenn die pid gegebene pid oder -1 ist
String datei = "index.htm"; // erzeuge die Dateiname
String newLine = System.getProperty("line.separator");
String tmp = "";
String fullFile = "";
boolean exists = (new File(datei)).exists();
if (exists) { // wenn existiert, lese die Datei
BufferedReader test = new BufferedReader(
new FileReader(datei));
while ((tmp = test.readLine()) != null) { // lese die Datei
fullFile += tmp + newLine; // speichere sie in fullFile
}// end while
}// end if
System.out.println(line);
FileOutputStream ausgabe = new FileOutputStream(datei); // erzeuge die Datei um zu schreiben
DataOutputStream raus = new DataOutputStream(ausgabe);
raus.writeBytes(line + "<br>" + newLine + fullFile); // schreibe sie in die .htm Datei
Uploader();
}// end if
}// end if
}// end while
input.close();
}// end try
catch (Exception err) {
err.printStackTrace();
}
}// end Netz
private static void Uploader() {
try {
SimpleFTPUploader ftp = new SimpleFTPUploader();
// Verbindung zu FTP server mit port 21.
ftp.connect("xxx.xxx.com", 21, "xxxxxx", "xxxxxx"); //host, benutzername und password
// Setze binary mode.
ftp.bin();
// Wechsel des Arbeitsverzeichnisses in FTP Server.
ftp.cwd("");
// Upload Files von InputStream bzw. kopieren zum Server.
ftp.stor(new FileInputStream(new File("index.htm")), "index.htm");
// Trenne verbindung vom Server.
ftp.disconnect();
System.out.println("upload is ok");
} catch (Exception e) {
}
}//end Uploader
}// end NetzwerkTool3