
Давайте посмотрим на проблему, в которой вы можете захватить Tcpdump вывод в вашей программе Java . Вам могут понадобиться данные TCPDump с N количеством возможностей.
Это примеры использования tcpdump Tutorial и Tcpdump и Как создавать дампы пакетов с помощью tcpdump. Вы также узнаете, как установить и использовать TCPdump для захвата пакетов.
Как захватить Tcpdump данные для анализа данных клиентов?
Tcpdump — очень простая команда, и я уверен, что все, возможно, уже использовали ее
Tcpdump обычный анализатор пакетов, работающий в терминале командной строки Это позволяет пользователю перехватывать и отображать TCP/IP и другие пакеты, передаваемые или принимаемые по сети.
Tcpdump нуждается root разрешение пользователя, и вы не сможете запустить его с помощью Eclipse IDE . В этом руководстве мы напишем простые шаги для захвата вывода Tcpdump в Java и запустим его в Mac OS X.
Prerequisite : Убедитесь, что у вас есть pcap или TCPDump установлен в вашей системе.
Для CentOS:
|
1
|
ням установить tcpdump
|
Для Debian и Ubuntu:
|
1
|
apt — получить установку tcpdump
|
Давайте начнем
- Создать файл Java:
CrunchifyExecuteTCPDUMP.java - Команду мы будем использовать:
/usr/sbin/tcpdump -c 2 -v -A dst port 80 - -c опция: выход после получения 2 пакетов
- опция -v: подробный вывод
- -D опция: печать каждого пакета в ASCII
- порт dst
PortNumber: True, если поле IP-адреса пакета является хостом , который может быть либо адресом, либо именем
Эта программа также поможет вам выполнить любые другие команды терминала linux / windows / mac .
- Как запускать внешние программы, используя класс Java ProcessBuilder?
- tcpdump: использование TCPDUMP из Java
- Как запустить Tcpdump из Java
- Java exec — выполнять системные процессы с Java
- java + tcpdump = проблема — давайте решим
Мы используем java.lang.ProcessBuilder класс, который требуется для создания процессов операционной системы . Этот класс не синхронизирован .
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
пакет ком . crunchify. учебник ;
Импортировать Java. Ио. BufferedReader ;
Импортировать Java. Ио. IOException ;
Импортировать Java. Ио. InputStream ;
Импортировать Java. Ио. InputStreamReader ;
Импортировать Java. Ио. Читатель ;
Импортировать Java. Ио. StringWriter ;
Импортировать Java. Ио. Писатель ;
/ **
* @author Crunchify.com
*
* /
общественности учебный класс CrunchifyExecuteTCPDUMP {
общественности статический недействительным main ( Строка [ ] аргументы ) {
строка tcpDumpCmd знак равно / usr / sbin / tcpdump -c 2 -v -A dst порт 80 ;
строка tcpDumpResult знак равно runTCPDUmp ( tcpDumpCmd , правда ) ;
Система. вне. println ( tcpDumpResult ) ;
}
общественности статический строка runTCPDUmp ( String crunchifyCmd , логический waitForResult ) {
Система. вне. println ( inside runTCPDUmp () ) ;
строка tcpdumpCmdResponse знак равно ;
ProcessBuilder crunchifyProcessBuilder знак равно ноль ;
// Найти ОС, работающую на ВМ
строка операционная система знак равно Система. getProperty ( os.name ) ;
если ( operatingSystem . toLowerCase ( ) . содержит ( окно ) ) {
// В случае окон запустить команду, используя crunchifyCmd
crunchifyProcessBuilder знак равно новый ProcessBuilder ( cmd , / c , crunchifyCmd ) ;
} еще {
// В случае Linux / Ubuntu запустите команду, используя / bin / bash
crunchifyProcessBuilder знак равно новый ProcessBuilder ( / bin / bash , -c , crunchifyCmd ) ;
}
crunchifyProcessBuilder . redirectErrorStream ( true ) ;
пытаться {
Процесс процесс знак равно crunchifyProcessBuilder . начало ( ) ;
если ( waitForResult ) {
InputStream crunchifyStream знак равно процесс . getInputStream ( ) ;
tcpdumpCmdResponse знак равно getStringFromStream ( crunchifyStream ) ;
crunchifyStream . закрыть ( ) ;
}
} ловить ( Исключение е ) {
Система. вне. println ( «Ошибка выполнения команды tcpdump» + е ) ;
}
вернуть tcpdumpCmdResponse ;
}
частный статический строка getStringFromStream ( InputStream crunchifyStream ) бросает IOException {
Система. вне. println ( inside getStringFromStream () ) ;
если ( crunchifyStream ! знак равно ноль ) {
Писатель crunchifyWriter знак равно новый StringWriter ( ) ;
символ [ ] crunchifyBuffer знак равно новый символ [ 2048 ] ;
пытаться {
Читатель crunchifyReader знак равно новый BufferedReader ( новый InputStreamReader ( crunchifyStream , UTF-8 ) ) ;
ИНТ считать ;
в то время как ( ( считать знак равно crunchifyReader . читать ( crunchifyBuffer ) ) ! знак равно — 1 ) {
crunchifyWriter . написать ( crunchifyBuffer , 0 , считать ) ;
}
} в конце концов {
crunchifyStream . закрыть ( ) ;
}
вернуть crunchifyWriter . toString ( ) ;
} еще {
вернуть ;
}
}
}
|
Поскольку вы не будете выполнять эту программу через Eclipse, мы будем запускать с Mac Terminal , Затмение выдаст вам это сообщение об ошибке.
Теперь давайте запустим его из командной строки / терминала Mac.
Создайте файл CrunchifyExecuteTCPDUMP.java и сохраните его в ~/Documents и запустить ниже команды.
|
1
2
|
bash — 3.2 # javac CrunchifyExecuteTCPDUMP.java
bash — 3.2 # Java CrunchifyExecuteTCPDUMP
|
Я надеюсь, что вы получите представление о том, как перехватить TCP Dump с помощью программы Java. Вы просто комментарий, если у вас есть какие-либо вопросы.
0.00 (0%) 0 votes








