Добавлен режим работы VIEW

This commit is contained in:
serega6531
2020-12-28 22:34:23 +03:00
parent 033e18e041
commit 39f7496558
4 changed files with 20 additions and 11 deletions

View File

@@ -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`.

View File

@@ -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

View File

@@ -2,6 +2,6 @@ package ru.serega6531.packmate.model.enums;
public enum CaptureMode { public enum CaptureMode {
LIVE, FILE LIVE, FILE, VIEW
} }

View File

@@ -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;