Домой Учебники по Linux и Unix Как выполнить команду tcpdump Linux с помощью Java Process Class и перехватить...

Как выполнить команду tcpdump Linux с помощью Java Process Class и перехватить пакеты TCP / IP

847
0

Давайте посмотрим на проблему, в которой вы можете захватить 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 класс, который требуется для создания процессов операционной системы . Этот класс не синхронизирован .

CrunchifyExecuteTCPDUMP.java

Джава
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 , Затмение выдаст вам это сообщение об ошибке.

ЧИТАТЬ ТАКЖЕ:  Ansible - Как выполнить Grep (ps -few) и убить любой процесс linux, запущенный на удаленном хосте?

Теперь давайте запустим его из командной строки / терминала Mac.

Создайте файл CrunchifyExecuteTCPDUMP.java и сохраните его в ~/Documents и запустить ниже команды.

команда терминала Mac

1
2
bash3.2 # javac CrunchifyExecuteTCPDUMP.java
bash3.2 # Java CrunchifyExecuteTCPDUMP

Я надеюсь, что вы получите представление о том, как перехватить TCP Dump с помощью программы Java. Вы просто комментарий, если у вас есть какие-либо вопросы.

Как выполнить команду tcpdump Linux с помощью Java Process Class и перехватить пакеты TCP / IP

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь