Некорректное регулярное выражение
Есть код, который читает из файла строки последовательно, опираясь на идентификаторы процесса: как только встречается идентификатор, который отличается от предыдущего, программа начинает подсчет системных вызовов текущего и записывает результат в файл следующим образом:
Имя процесса: xrdp-sink
- Идентификатор процесса: 4104
- Системный вызов: ppoll), Количество вызовов: 2
Имя процесса: supervisord
- Идентификатор процесса: 3824
- Системный вызов: poll), Количество вызовов: 2
- Системный вызов: wait4), Количество вызовов: 2
Имя процесса: sshd
- Идентификатор процесса: 7137
- Системный вызов: munmap), Количество вызовов: 16
- Системный вызов: openat), Количество вызовов: 36
- Системный вызов: fstat), Количество вызовов: 26
- Системный вызов: close), Количество вызовов: 64
- Системный вызов: socket), Количество вызовов: 22
- Системный вызов: fcntl), Количество вызовов: 10
- Системный вызов: connect), Количество вызовов: 10
- Системный вызов: bind), Количество вызовов: 6
- Системный вызов: getsockname), Количество вызовов: 6
- Системный вызов: sendto), Количество вызовов: 12
- Системный вызов: recvmsg), Количество вызовов: 18
- Системный вызов: poll), Количество вызовов: 6
- Системный вызов: recvfrom), Количество вызовов: 12
- Системный вызов: getuid), Количество вызовов: 8
- Системный вызов: lseek), Количество вызовов: 32
- Системный вызов: mmap), Количество вызовов: 14
- Системный вызов: getpid), Количество вызовов: 10
- Системный вызов: exit_group), Количество вызовов: 1
- Системный вызов: wait4), Количество вызовов: 3
- Системный вызов: alarm), Количество вызовов: 8
- Системный вызов: rt_sigaction), Количество вызовов: 16
- Системный вызов: capget), Количество вызовов: 6
- Системный вызов: capset), Количество вызовов: 2
- Системный вызов: select), Количество вызовов: 2
- Системный вызов: ftruncate), Количество вызовов: 2
- Системный вызов: getgid), Количество вызовов: 2
- Системный вызов: setregid), Количество вызовов: 4
- Системный вызов: setreuid), Количество вызовов: 4
- Системный вызов: keyctl), Количество вызовов: 1
- Системный вызов: umask), Количество вызовов: 8
- Системный вызов: access), Количество вызовов: 2
- Системный вызов: getsockopt), Количество вызовов: 4
- Системный вызов: setsockopt), Количество вызовов: 8
- Системный вызов: stat), Количество вызовов: 2
- Системный вызов: rt_sigprocmask), Количество вызовов: 4
- Системный вызов: clone), Количество вызовов: 3
- Системный вызов: execve), Количество вызовов: 1
Код python
import sys
import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import LSTM
from keras.layers import Dense
from keras.layers import RepeatVector
from keras.layers import TimeDistributed
import tensorflow as tf
import csv
import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow.keras import layers
from tensorflow.keras.models import load_model
import os, os.path
import re
from keras.layers import TimeDistributed
from sklearn.preprocessing import MinMaxScaler
import sys
import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from keras.layers import LSTM, Dense, RepeatVector, TimeDistributed
import tensorflow as tf
from sklearn.preprocessing import MinMaxScaler
# Параметры
TRAIN_FILE = 'datasets/typeRdpSSH.log'
SYSCALL_FILE = 'syscalls.txt'
TEST_FILE = 'datasets/typeRdpSSH.log'
ROWS = 100
array_size = 100
log_file = 'datasets/typeRdpSSH.log'
def process_log_file(log_file):
"""
Читает файл логов построчно и формирует массивы для каждого процесса,
отслеживая уникальные имена процессов.
Args:
log_file: Имя файла с логами.
Returns:
Словарь, где ключ - имя процесса, а значение - словарь с информацией
о процессе. Вложенный словарь содержит:
- 'process_id': идентификатор процесса
- 'syscalls': список словарей с системными вызовами и их количеством.
Каждый словарь в списке содержит:
- 'syscall': имя системного вызова
- 'count': количество вызовов данного системного вызова
"""
process_data = {}
previous_process_name = None # Начальное значение previous_process_name
with open(log_file, "r") as f:
for line in f:
match = re.search(r'process name=(\S+) process id=(\S+) syscall=(\S+)', line)
if match:
process_name = match.group(1)
process_id = int(match.group(2)) # Преобразуем в целое число
syscall = match.group(3)
# Создаем запись для процесса при первом появлении имени процесса
if process_name != previous_process_name:
current_process_data = {
'process_id': process_id,
'syscalls': []
}
process_data[process_name] = current_process_data
# Обновляем previous_process_name
previous_process_name = process_name
# Проверяем, есть ли уже такой системный вызов в списке
found = False
for syscall_data in current_process_data['syscalls']:
if syscall_data['syscall'] == syscall:
syscall_data['count'] += 1
found = True
break
# Если системный вызов не найден, добавляем его в список
if not found:
current_process_data['syscalls'].append({'syscall': syscall, 'count': 1})
# Обрабатываем записи без идентификатора процесса
else:
print(f"Предупреждение: строка без идентификатора процесса: {line}")
return process_data
# Пример использования:
process_data = process_log_file(log_file)
# Запись результатов в файл
with open('output.txt', 'w') as output_file:
for process_name, process_info in process_data.items():
output_file.write(f"Имя процесса: {process_name}\n")
output_file.write(f" - Идентификатор процесса: {process_info['process_id']}\n")
for syscall_data in process_info['syscalls']:
output_file.write(f" - Системный вызов: {syscall_data['syscall']}, Количество вызовов: {syscall_data['count']}\n")
Файл откуда программа читает
15:55:12.430226160: Warning (user=ubuntu container_id=8a9d84239520 container_name=uxrdp process name=xrdp-sink process id=4104 syscall=ppoll)
15:55:12.430256493: Warning (user=ubuntu container_id=8a9d84239520 container_name=uxrdp process name=xrdp-sink process id=4104 syscall=ppoll)
15:55:12.490035947: Warning (user=ubuntu container_id=8a9d84239520 container_name=uxrdp process name=xrdp-sink process id=4104 syscall=ppoll)
15:55:12.490111860: Warning (user=ubuntu container_id=8a9d84239520 container_name=uxrdp process name=xrdp-sink process id=4104 syscall=ppoll)
15:55:12.500456736: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=supervisord process id=3824 syscall=poll)
15:55:12.500590728: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=supervisord process id=3824 syscall=wait4)
15:55:12.500606184: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=supervisord process id=3824 syscall=wait4)
15:55:12.500968049: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=supervisord process id=3824 syscall=poll)
15:55:12.550031401: Warning (user=ubuntu container_id=8a9d84239520 container_name=uxrdp process name=xrdp-sink process id=4104 syscall=ppoll)
15:55:12.550109148: Warning (user=ubuntu container_id=8a9d84239520 container_name=uxrdp process name=xrdp-sink process id=4104 syscall=ppoll)
15:55:12.567607379: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=select)
15:55:12.567627593: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=accept)
15:55:12.567676669: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=accept)
15:55:12.567692737: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=fcntl)
15:55:12.567700945: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=fcntl)
15:55:12.567796529: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=pipe)
15:55:12.567834391: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=pipe)
15:55:12.567849555: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=socketpair)
15:55:12.567909397: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=socketpair)
15:55:12.567929587: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=clone)
15:55:12.569917451: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=clone)
15:55:12.570045639: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=close)
15:55:12.570053474: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=close)
15:55:12.570464831: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=close)
15:55:12.570469889: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=close)
15:55:12.570474618: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=close)
15:55:12.570476875: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=close)
15:55:12.570481118: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=close)
15:55:12.570483599: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=close)
15:55:12.570493967: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=getpid)
15:55:12.570498002: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=getpid)
15:55:12.570625204: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=getpid)
15:55:12.570629473: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=getpid)
15:55:12.570671139: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=getpid)
15:55:12.570673111: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=getpid)
15:55:12.570782592: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=3909 syscall=select)
15:55:12.570938717: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=clone)
15:55:12.571089643: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=set_robust_list)
15:55:12.571095081: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=set_robust_list)
15:55:12.571582454: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=openat)
15:55:12.576184062: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=openat)
15:55:12.576443785: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=fstat)
15:55:12.576454576: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=fstat)
15:55:12.576481491: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.576487517: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.576546138: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.576550997: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.576556851: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.576559700: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.576563407: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.576564911: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.576708172: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.576713352: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.576803023: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=setsid)
15:55:12.577406679: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=setsid)
15:55:12.577422885: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=dup2)
15:55:12.577431203: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=dup2)
15:55:12.577441593: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=dup2)
15:55:12.577445689: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=dup2)
15:55:12.577451050: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=dup2)
15:55:12.577453004: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=dup2)
15:55:12.577461030: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.577470732: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.577476253: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=dup2)
15:55:12.577479896: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=dup2)
15:55:12.577485065: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.577487041: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.577496708: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=execve)
15:55:12.579099859: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=execve)
15:55:12.579375358: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=brk)
15:55:12.579383713: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=brk)
15:55:12.579510462: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=access)
15:55:12.579545963: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=access)
15:55:12.579574367: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=access)
15:55:12.579588224: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=access)
15:55:12.579622480: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=openat)
15:55:12.579765693: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=openat)
15:55:12.579782324: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=fstat)
15:55:12.579795963: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=fstat)
15:55:12.579804026: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=mmap)
15:55:12.579846088: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=mmap)
15:55:12.579853731: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.579862206: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
15:55:12.579959985: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=access)
15:55:12.579988385: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=access)
15:55:12.580006840: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=openat)
15:55:12.580060797: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=openat)
15:55:12.580091730: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=fstat)
15:55:12.580099115: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=fstat)
15:55:12.580107587: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=mmap)
15:55:12.580142115: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=mmap)
15:55:12.580348774: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=mmap)
15:55:12.580390820: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=mmap)
15:55:12.580400210: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=mprotect)
15:55:12.581246355: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=mprotect)
15:55:12.581258985: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=mmap)
15:55:12.581460847: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=mmap)
15:55:12.581542055: Warning (user=root container_id=8a9d84239520 container_name=uxrdp process name=sshd process id=4449 syscall=close)
При работе программы получаю следующие строки:
Предупреждение: строка без идентификатора процесса: Events detected: 1166424
Предупреждение: строка без идентификатора процесса: Rule counts by severity:
Предупреждение: строка без идентификатора процесса: WARNING: 1166424
Предупреждение: строка без идентификатора процесса: Triggered rules by rule name:
Предупреждение: строка без идентификатора процесса: DescCont: 1166424
Но в файле нет строк идентификатора процесса. Подскажите, в чем может быть проблема?