Задача: Ловить трафик и укладывать в небольшие файлы для удобной последующей фильтрацией wireshar-ком. Не загружая компьютер оболочкой программы.
Использована консольная утилита dumpcap входящая в состав wireshark которая с дополнительным ключом позволяет останавливать процесс создания дампа по достижению файла определённого размера "-a filesize:", возможно переделать под определённое время, но тогда возникает трудность с размером файла и его последующей фильтрацией.
UPD: Добавили сжатие взятого дампа в zip. На выхлопе, дамп стал в 5 раз меньше при 500 метровом дампе. С большими файлами профит больше.
UPD: Добавили сжатие взятого дампа в zip. На выхлопе, дамп стал в 5 раз меньше при 500 метровом дампе. С большими файлами профит больше.
Задача написанного скрипта запустить dumpcap с необходимыми параметрами (используемого интерфейса, места хранения, размера файла) по окончании работы сохранить файл с именем формата DD.MM.YEAR-HHMMSS и сделать запись в лог файл о том что файл с определённым именем стартовал работу в такое время, а закончил работу в другое время.
DD.MM.YEAR-HHMMSS.pcapng~start~16.11.201614:24:44,68~finish~16.11.201614:26:14,86
Теперь при возникшей проблеме возможно обратиться к нужному файлу wireshark-ом и соответственно обработать.
Код ddd.bat скрипта
для интерфейса с именем ETH_1 , заменить на своё, так же как и директории расположения dumpcap и места хранения дампов
@echo off
setlocal enabledelayedexpansion
rem Задаем начальные условия: рабочая папка и размер файла для вывода даннных в Кб
set root_path=D:\Wireshark_dump\
set log_file=%root_path%out.csv
rem размер файла дампа
set filesize=500000
rem Максимально допустимое время формирования файла, сек
set max_right_time=120
rem Если файла лога еще нет, то создаем его заголовок
if /i exist %log_file% (
echo
) else (
echo filename;start;finish;exec_time;max_time;pref;file_size>%log_file%
)
:start
rem Для отладки можно менять размер файла для дампа
set filesize=500000
set max_right_time=150
rem Определяем время запуска цикла
set t=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
rem если время до 10 часов то формируем часы рукми (можно бы и получше, но как сделано-так и сделано)
if "%TIME: =0%" lss "10:00:00,00" set t=09%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "09:00:00,00" set t=08%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "08:00:00,00" set t=07%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "07:00:00,00" set t=06%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "06:00:00,00" set t=05%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "05:00:00,00" set t=04%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "04:00:00,00" set t=03%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "03:00:00,00" set t=02%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "02:00:00,00" set t=01%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "01:00:00,00" set t=00%TIME:~3,2%%TIME:~6,2%
rem Определяем дату (для формирования имени файла
set d=%DATE:~0,10%
rem Определяем время начала работы блока (в секундах) - потом будем считать время работы блока
set /a start_time=%TIME:~3,2%*60+%TIME:~6,2%
rem Формируем имя файа для дампа : дата-время+расширение
set dump_file=%d%-%t%.pcapng
rem Дата-время начала захвата пакетов (для лога)
set frm=%date%-%time%
rem Запуск захвата пакетов
"C:\Program Files\Wireshark\dumpcap.exe" -i ETH_1 -w %root_path%%dump_file% -a filesize:%filesize%
rem Дата-время окончания захвата пакетов (для лога)
set till=%date%-%time%
rem Узнаем размер файла (пока не узнаем... не знаем как)
rem for %%I in (%root_path%%dump_file%) do (set /a dump_size=%%~Z1)
rem Определяем время окончания работы блока (в секундах) - потом будем считать время работы блока
set /a till_time=%TIME:~3,2%*60+%TIME:~6,2%
rem Если переход часа (время окончания должно стать меньше времени начал), то добавляем 60 минут ко времени окончания
if /I %till_time% lss %start_time% (
set /a till_time = %till_time%+3600
)
rem Вычисляем разницу - должна быть разница в секундах
set /a diff_time=%till_time%-%start_time%
rem Если файл сформировался слишком быстро - предполагаем, что случилось что то плохое, помечаем дамп префиксом D (danger)
rem если же все хорошо, то префикс - G (good)
set pref=D
if %diff_time% lss %max_right_time% set pref=G
rem Добавляем префикс к файлу
ren %root_path%%dump_file% %pref%%dump_file%
set dump_file=%pref%%dump_file%
rem Вваливаем всю инфу в лог файл
echo %root_path%%dump_file%;%frm%;%till%;%diff_time%;%max_right_time%;%pref%;%dump_size% >>%log_file%
rem Запускаем параллельно сжатие полученного дампа, затем, в том же batнике исходный файл удаляем
start /b %root_path%jmak.bat %dump_file%
rem Зацикливаем процесс
goto start
setlocal enabledelayedexpansion
rem Задаем начальные условия: рабочая папка и размер файла для вывода даннных в Кб
set root_path=D:\Wireshark_dump\
set log_file=%root_path%out.csv
rem размер файла дампа
set filesize=500000
rem Максимально допустимое время формирования файла, сек
set max_right_time=120
rem Если файла лога еще нет, то создаем его заголовок
if /i exist %log_file% (
echo
) else (
echo filename;start;finish;exec_time;max_time;pref;file_size>%log_file%
)
:start
rem Для отладки можно менять размер файла для дампа
set filesize=500000
set max_right_time=150
rem Определяем время запуска цикла
set t=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
rem если время до 10 часов то формируем часы рукми (можно бы и получше, но как сделано-так и сделано)
if "%TIME: =0%" lss "10:00:00,00" set t=09%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "09:00:00,00" set t=08%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "08:00:00,00" set t=07%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "07:00:00,00" set t=06%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "06:00:00,00" set t=05%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "05:00:00,00" set t=04%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "04:00:00,00" set t=03%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "03:00:00,00" set t=02%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "02:00:00,00" set t=01%TIME:~3,2%%TIME:~6,2%
if "%TIME: =0%" lss "01:00:00,00" set t=00%TIME:~3,2%%TIME:~6,2%
rem Определяем дату (для формирования имени файла
set d=%DATE:~0,10%
rem Определяем время начала работы блока (в секундах) - потом будем считать время работы блока
set /a start_time=%TIME:~3,2%*60+%TIME:~6,2%
rem Формируем имя файа для дампа : дата-время+расширение
set dump_file=%d%-%t%.pcapng
rem Дата-время начала захвата пакетов (для лога)
set frm=%date%-%time%
rem Запуск захвата пакетов
"C:\Program Files\Wireshark\dumpcap.exe" -i ETH_1 -w %root_path%%dump_file% -a filesize:%filesize%
rem Дата-время окончания захвата пакетов (для лога)
set till=%date%-%time%
rem Узнаем размер файла (пока не узнаем... не знаем как)
rem for %%I in (%root_path%%dump_file%) do (set /a dump_size=%%~Z1)
rem Определяем время окончания работы блока (в секундах) - потом будем считать время работы блока
set /a till_time=%TIME:~3,2%*60+%TIME:~6,2%
rem Если переход часа (время окончания должно стать меньше времени начал), то добавляем 60 минут ко времени окончания
if /I %till_time% lss %start_time% (
set /a till_time = %till_time%+3600
)
rem Вычисляем разницу - должна быть разница в секундах
set /a diff_time=%till_time%-%start_time%
rem Если файл сформировался слишком быстро - предполагаем, что случилось что то плохое, помечаем дамп префиксом D (danger)
rem если же все хорошо, то префикс - G (good)
set pref=D
if %diff_time% lss %max_right_time% set pref=G
rem Добавляем префикс к файлу
ren %root_path%%dump_file% %pref%%dump_file%
set dump_file=%pref%%dump_file%
rem Вваливаем всю инфу в лог файл
echo %root_path%%dump_file%;%frm%;%till%;%diff_time%;%max_right_time%;%pref%;%dump_size% >>%log_file%
rem Запускаем параллельно сжатие полученного дампа, затем, в том же batнике исходный файл удаляем
start /b %root_path%jmak.bat %dump_file%
rem Зацикливаем процесс
goto start
Код jmak.bat для архивации и последующего удаление исходника.
@echo off
"c:\Program Files\7-Zip\7z.exe" a %1.zip %1
del %1
exit
Комментариев нет:
Отправить комментарий