Добавлен режим работы VIEW
This commit is contained in:
11
README.md
11
README.md
@@ -52,7 +52,7 @@ git submodule update --init --recursive
|
|||||||
Он должен называться `.env` и лежать в корневой директории проекта.
|
Он должен называться `.env` и лежать в корневой директории проекта.
|
||||||
|
|
||||||
В файле необходимо прописать:
|
В файле необходимо прописать:
|
||||||
```bash
|
```dotenv
|
||||||
# Локальный IP сервера на указанном интерфейсе или в pcap файле
|
# Локальный IP сервера на указанном интерфейсе или в pcap файле
|
||||||
PACKMATE_LOCAL_IP=192.168.1.124
|
PACKMATE_LOCAL_IP=192.168.1.124
|
||||||
# Имя пользователя для web-авторизации
|
# Имя пользователя для web-авторизации
|
||||||
@@ -62,20 +62,25 @@ PACKMATE_WEB_PASSWORD=SomeSecurePassword
|
|||||||
```
|
```
|
||||||
|
|
||||||
Если мы перехватываем трафик сервера (лучший вариант, если есть возможность):
|
Если мы перехватываем трафик сервера (лучший вариант, если есть возможность):
|
||||||
```bash
|
```dotenv
|
||||||
# Режим работы - перехват
|
# Режим работы - перехват
|
||||||
PACKMATE_MODE=LIVE
|
PACKMATE_MODE=LIVE
|
||||||
# Интерфейс, на котором производится перехват трафика
|
# Интерфейс, на котором производится перехват трафика
|
||||||
PACKMATE_INTERFACE=wlan0
|
PACKMATE_INTERFACE=wlan0
|
||||||
```
|
```
|
||||||
Если мы анализируем pcap дамп:
|
Если мы анализируем pcap дамп:
|
||||||
```bash
|
```dotenv
|
||||||
# Режим работы - анализ файла
|
# Режим работы - анализ файла
|
||||||
PACKMATE_MODE=FILE
|
PACKMATE_MODE=FILE
|
||||||
# Путь до файла от корня проекта
|
# Путь до файла от корня проекта
|
||||||
PACKMATE_PCAP_FILE=dump.pcap
|
PACKMATE_PCAP_FILE=dump.pcap
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Или если мы хотим посмотреть уже обработанный трафик (например, для разбора после игры):
|
||||||
|
```dotenv
|
||||||
|
PACKMATE_MODE=VIEW
|
||||||
|
```
|
||||||
|
|
||||||
Чтобы использовать расшифровку TLS, нужно положить соответствующий приватный ключ, который
|
Чтобы использовать расшифровку TLS, нужно положить соответствующий приватный ключ, который
|
||||||
использовался для генерации сертификата, в папку `rsa_keys`.
|
использовался для генерации сертификата, в папку `rsa_keys`.
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import ru.serega6531.packmate.WebSocketHandler;
|
|||||||
import ru.serega6531.packmate.model.enums.CaptureMode;
|
import ru.serega6531.packmate.model.enums.CaptureMode;
|
||||||
import ru.serega6531.packmate.pcap.FilePcapWorker;
|
import ru.serega6531.packmate.pcap.FilePcapWorker;
|
||||||
import ru.serega6531.packmate.pcap.LivePcapWorker;
|
import ru.serega6531.packmate.pcap.LivePcapWorker;
|
||||||
|
import ru.serega6531.packmate.pcap.NoOpPcapWorker;
|
||||||
import ru.serega6531.packmate.pcap.PcapWorker;
|
import ru.serega6531.packmate.pcap.PcapWorker;
|
||||||
import ru.serega6531.packmate.service.ServicesService;
|
import ru.serega6531.packmate.service.ServicesService;
|
||||||
import ru.serega6531.packmate.service.StreamService;
|
import ru.serega6531.packmate.service.StreamService;
|
||||||
@@ -58,11 +59,11 @@ public class ApplicationConfiguration extends WebSecurityConfigurerAdapter imple
|
|||||||
@Value("${interface-name}") String interfaceName,
|
@Value("${interface-name}") String interfaceName,
|
||||||
@Value("${pcap-file}") String filename,
|
@Value("${pcap-file}") String filename,
|
||||||
@Value("${capture-mode}") CaptureMode captureMode) throws PcapNativeException, UnknownHostException {
|
@Value("${capture-mode}") CaptureMode captureMode) throws PcapNativeException, UnknownHostException {
|
||||||
if(captureMode == CaptureMode.LIVE) {
|
return switch (captureMode) {
|
||||||
return new LivePcapWorker(servicesService, streamService, localIpString, interfaceName);
|
case LIVE -> new LivePcapWorker(servicesService, streamService, localIpString, interfaceName);
|
||||||
} else {
|
case FILE -> new FilePcapWorker(servicesService, streamService, subscriptionService, localIpString, filename);
|
||||||
return new FilePcapWorker(servicesService, streamService, subscriptionService, localIpString, filename);
|
default -> new NoOpPcapWorker();
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|||||||
@@ -2,6 +2,6 @@ package ru.serega6531.packmate.model.enums;
|
|||||||
|
|
||||||
public enum CaptureMode {
|
public enum CaptureMode {
|
||||||
|
|
||||||
LIVE, FILE
|
LIVE, FILE, VIEW
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package ru.serega6531.packmate.service;
|
package ru.serega6531.packmate.service;
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.pcap4j.core.PcapNativeException;
|
import org.pcap4j.core.PcapNativeException;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -8,6 +7,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import ru.serega6531.packmate.model.CtfService;
|
import ru.serega6531.packmate.model.CtfService;
|
||||||
import ru.serega6531.packmate.model.enums.SubscriptionMessageType;
|
import ru.serega6531.packmate.model.enums.SubscriptionMessageType;
|
||||||
import ru.serega6531.packmate.model.pojo.SubscriptionMessage;
|
import ru.serega6531.packmate.model.pojo.SubscriptionMessage;
|
||||||
|
import ru.serega6531.packmate.pcap.NoOpPcapWorker;
|
||||||
import ru.serega6531.packmate.pcap.PcapWorker;
|
import ru.serega6531.packmate.pcap.PcapWorker;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -17,7 +17,6 @@ import java.util.stream.Collectors;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class PcapService {
|
public class PcapService {
|
||||||
|
|
||||||
@Getter
|
|
||||||
private boolean started = false;
|
private boolean started = false;
|
||||||
|
|
||||||
private final SubscriptionService subscriptionService;
|
private final SubscriptionService subscriptionService;
|
||||||
@@ -29,6 +28,10 @@ public class PcapService {
|
|||||||
this.worker = worker;
|
this.worker = worker;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isStarted() {
|
||||||
|
return started || worker instanceof NoOpPcapWorker;
|
||||||
|
}
|
||||||
|
|
||||||
public synchronized void start() throws PcapNativeException {
|
public synchronized void start() throws PcapNativeException {
|
||||||
if(!started) {
|
if(!started) {
|
||||||
started = true;
|
started = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user