From 18212eab126777f0d0552a9282131aa35115dc1a Mon Sep 17 00:00:00 2001 From: overcuriousity Date: Fri, 5 Sep 2025 22:41:35 +0200 Subject: [PATCH] initial commit --- README.md | 9 + bin/main | Bin 0 -> 1107360 bytes lib/gzunpack.c | 242 ++++ lib/gzunpack.h | 56 + src/main-prod.c | 3201 +++++++++++++++++++++++++++++++++++++++++++++++ src/main.c | 1149 +++++++++++++++++ 6 files changed, 4657 insertions(+) create mode 100755 bin/main create mode 100644 lib/gzunpack.c create mode 100644 lib/gzunpack.h create mode 100644 src/main-prod.c create mode 100644 src/main.c diff --git a/README.md b/README.md index 346915f..55eb82e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,11 @@ # nginx-beleg +Projekt Programmierung I - nginx webserver Log Parser + +Beispiellogs unter +https://cloud.cc24.dev/s/Zexs2NS3EDYNzj2 +abrufbar. + +**ACHTUNG** +Einschränkungen: +- Kann derzeit nur accesslogs und redirect-accesslogs verarbeiten diff --git a/bin/main b/bin/main new file mode 100755 index 0000000000000000000000000000000000000000..67c54200f519640441972b57e3dd44808adeab3a GIT binary patch literal 1107360 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

f%YNwVTRJ=~MIv`8BOz z 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

`XjQv))U!<@ZI=Z7EnB$1pPv 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 z�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 I%q|!I0+)}7i2wiq literal 0 HcmV?d00001 diff --git a/lib/gzunpack.c b/lib/gzunpack.c new file mode 100644 index 0000000..2494f10 --- /dev/null +++ b/lib/gzunpack.c @@ -0,0 +1,242 @@ +/* ---------------------------------------------------------------- +# This source code is an example from my CodeBlog: +# http://codeblog.vurdalakov.net +# +# Copyright (c) 2011 Vurdalakov +# http://www.vurdalakov.net +# vurdalakov@gmail.com +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +---------------------------------------------------------------- */ + +#include "gzunpack.h" + +#include +#include + +#include "zlib.h" + +int readBuffer(FILE* fileHandle, void* buffer, size_t bytesToRead) +{ + size_t bytesRead; + + bytesRead = fread(buffer, 1, bytesToRead, fileHandle); + + if (ferror(fileHandle)) { + return 0; + } + + if (bytesRead != bytesToRead) { + return 0; + } + + return 1; +} + +char* readZeroTerminatedString(FILE* fileHandle) +{ + long filePosition; + int length; + unsigned char byte; + char* string; + + filePosition = ftell(fileHandle); + + if (-1 == filePosition) { + return 0; + } + + length = 0; + while (1) { + byte = fgetc(fileHandle); + if (ferror(fileHandle)) { + return 0; + } + + length++; + + if (0 == byte) { + break; + } + } + + if (fseek(fileHandle, filePosition, SEEK_SET)) { + return 0; + } + + string = malloc(length); + + length = 0; + while (1) { + byte = fgetc(fileHandle); + if (ferror(fileHandle)) { + return 0; + } + + string[length] = byte; + + if (0 == byte) { + break; + } + + length++; + } + + return string; +} + +GzFileHeader *gzUnpackHeader(FILE *packedFileHandle) +{ + unsigned short signature; + GzFileHeader* gzFileHeader; + + if (!readBuffer(packedFileHandle, &signature, 2)) { + return 0; + } + + if (signature != 0x8B1F) { + return 0; + } + + gzFileHeader = malloc(sizeof(GzFileHeader)); + memset(gzFileHeader, 0, sizeof(GzFileHeader)); + + if (!readBuffer(packedFileHandle, &gzFileHeader->compressionMethod, 1)) { + return 0; + } + + if (!readBuffer(packedFileHandle, &gzFileHeader->flags, 1)) { + return 0; + } + + if (!readBuffer(packedFileHandle, &gzFileHeader->modificationTime, 4)) { + return 0; + } + + if (!readBuffer(packedFileHandle, &gzFileHeader->extraFlags, 1)) { + return 0; + } + + if (!readBuffer(packedFileHandle, &gzFileHeader->operatingSystem, 1)) { + return 0; + } + + if (gzFileHeader->flags & 0x04) { + if (!readBuffer(packedFileHandle, &gzFileHeader->extraFieldLength, 2)) { + return 0; + } + + if (!readBuffer(packedFileHandle, &gzFileHeader->extraField, gzFileHeader->extraFieldLength)) { + return 0; + } + } + + if (gzFileHeader->flags & 0x08) { + gzFileHeader->originalFileName = readZeroTerminatedString(packedFileHandle); + } + + if (gzFileHeader->flags & 0x10) { + gzFileHeader->fileComment = readZeroTerminatedString(packedFileHandle); + } + + if (gzFileHeader->flags & 0x02) { + if (!readBuffer(packedFileHandle, &gzFileHeader->headerCrc, 2)) { + return 0; + } + } + + return gzFileHeader; +} + +void gzFreeHeader(GzFileHeader *gzFileHeader) +{ + if (0 == gzFileHeader) { + return; + } + + free(gzFileHeader->extraField); + free(gzFileHeader->originalFileName); + free(gzFileHeader->fileComment); + + free(gzFileHeader); +} + +int gzUnpackFile(FILE *packedFileHandle, FILE *unpackedFileHandle) +{ + z_stream stream; + int result; + unsigned char input_buffer[65536]; + unsigned char output_buffer[65536]; + unsigned int size; + + stream.zalloc = 0; + stream.zfree = 0; + stream.opaque = 0; + stream.next_in = 0; + stream.avail_in = 0; + + result = inflateInit2(&stream, 16 + MAX_WBITS); + if (result != Z_OK) { + return 1; + } + + do + { + stream.avail_in = fread(input_buffer, 1, sizeof(input_buffer), packedFileHandle); + if (ferror(packedFileHandle)) { + (void)inflateEnd(&stream); + return 2; + } + if (0 == stream.avail_in) { + break; + } + stream.next_in = input_buffer; + + do { + stream.avail_out = sizeof(output_buffer); + stream.next_out = output_buffer; + + result = inflate(&stream, Z_NO_FLUSH); + switch (result) + { + case Z_NEED_DICT: + result = Z_DATA_ERROR; + case Z_STREAM_ERROR: + case Z_DATA_ERROR: + case Z_MEM_ERROR: + (void)inflateEnd(&stream); + return 3; + } + + size = sizeof(output_buffer) - stream.avail_out; + if ((fwrite(output_buffer, 1, size, unpackedFileHandle) != size) || ferror(unpackedFileHandle)) { + (void)inflateEnd(&stream); + return 4; + } + } while (0 == stream.avail_out); + + } while (result != Z_STREAM_END); + + inflateEnd(&stream); + + return 0; +} \ No newline at end of file diff --git a/lib/gzunpack.h b/lib/gzunpack.h new file mode 100644 index 0000000..94ec54e --- /dev/null +++ b/lib/gzunpack.h @@ -0,0 +1,56 @@ +/* ---------------------------------------------------------------- +# This source code is an example from my CodeBlog: +# http://codeblog.vurdalakov.net +# +# Copyright (c) 2011 Vurdalakov +# http://www.vurdalakov.net +# vurdalakov@gmail.com +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +---------------------------------------------------------------- */ + +#ifndef GZUNPACK_H +#define GZUNPACK_H + +#include + +typedef struct +{ + unsigned char compressionMethod; + unsigned char flags; + unsigned long modificationTime; + unsigned char extraFlags; + unsigned char operatingSystem; + unsigned short extraFieldLength; + unsigned char *extraField; + char *originalFileName; + char *fileComment; + unsigned short headerCrc; +} GzFileHeader; + +GzFileHeader *gzUnpackHeader(FILE *packedFileHandle); + +void gzFreeHeader(GzFileHeader *gzFileHeader); + +int gzUnpackFile(FILE *packedFileHandle, FILE *unpackedFileHandle); + +#endif \ No newline at end of file diff --git a/src/main-prod.c b/src/main-prod.c new file mode 100644 index 0000000..813acf5 --- /dev/null +++ b/src/main-prod.c @@ -0,0 +1,3201 @@ +/* +Copyright (c) 2025 Mario Stöckl (mstoeck3@hs-mittweida.de). + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +// Abhängigkeiten: +// zlib, gcc (statisch: glibc-static, zlib-static) +// KOMPILIERUNG: +// gcc -o bin/main src/main.c lib/gzunpack.c -Ilib -lz (statisch: gcc -static -o bin/main src/main.c lib/gzunpack.c -Ilib -lz) +// ABHÄNGIGKEITEN: +// gcc, zlib-devel + +#include +#include +#include +#include // library für Interaktion mit Ordnerstrukturen +#include // library für is_directory: Unterscheidung zwischen Dateien und Ordnern +#include // um aktuelle Zeit zu generieren +#include "gzunpack.h" + +#define INITIAL_ENTRIES 1000 // globale Variable zur initialen Speicherallokation in allocate_initial_memory(). Wird falls nötig um GROWTH_FACTOR erweitert +#define GROWTH_FACTOR 1.1 // wird in mem_expand_dynamically() genutzt, um den Speicher zu vergrößern +#define MAX_FILTERS 100 +#define MAX_REQUEST_LENGTH 8192 // das hohe Limit ist erforderlich, da teilweise ausufernde JSON-Requests in nginx auflaufen können. +#define TOP_X 20 // definiert die Anzahl der Einträge, die in den Top-Listen angezeigt werden sollen +#define SUSPICIOUS_REQUEST_LEN_THRESHOLD 256 + +// struct für die Darstellung von Timestamps. Die granulare Trennung in verschiedene int-Werte macht die spätere Verarbeitung modular anpassbar/erweiterbar und erleichtert die Verarbeitung. +struct simple_time { + int day; + int month; + int year; + int hour; + int minute; + int second; +}; + +// Struktur für die Darstellung eines Standard-NGINX-Logeintrags. +struct log_entry { + char ip_address[50]; // ausreichende Längenbegrenzung für IP-Adressen. Könnte theoretisch auch ipv6 (ungetestet) + char request_method[10]; // GET, POST, PUT, DELETE, PROPFIND ... + char url_path[MAX_REQUEST_LENGTH]; // Pfade können lang werden, insbesodere bei base64-Strings wie oft in Malware verwendet + int status_code; + int bytes_sent; + struct simple_time time; + char referrer[128]; + char user_agent[256]; + char source_file[256]; + char parsing_timestamp[32]; + int annotated_flag; + char annotation[64]; +}; + +// Struktur für einen Status-Filtereintrag mit Inhalt & Modus +struct status_filter { + int code; + int filter_exclude_flag; +}; + +struct method_filter { + char pattern[10]; + int filter_exclude_flag; +}; + +// für IP-Adressen +struct ip_filter { + char ip_address[50]; + int filter_exclude_flag; +}; + +// für Zeit, Start- und Endzeit +struct time_filter { + struct simple_time start_time; + struct simple_time end_time; + int filter_exclude_flag; +}; + +// Filter für User-Agent +struct user_agent_filter { + char pattern[256]; + int filter_exclude_flag; +}; + +// Filter für URL-Pfad/Request +struct url_filter { + char pattern[MAX_REQUEST_LENGTH]; + int filter_exclude_flag; +}; + +struct annotation_flag_filter { + int annotation_flag_is_present; + int filter_exclude_flag; +}; + +struct annotation_filter { + char pattern[64]; + int filter_exclude_flag; +}; + +// Struktur zum erhalten aller Filtereinträge, kann im Dialogbetrieb bearbeitet werden. Mit Zähler. +struct filter_system { + struct status_filter status_filters[MAX_FILTERS]; + int status_count; + + struct method_filter method_filters[MAX_FILTERS]; + int method_count; + + struct ip_filter ip_filters[MAX_FILTERS]; + int ip_count; + + struct time_filter time_filters[MAX_FILTERS]; + int time_count; + + struct user_agent_filter user_agent_filters[MAX_FILTERS]; + int user_agent_count; + + struct url_filter url_filters[MAX_FILTERS]; + int url_count; + + struct annotation_flag_filter annotation_flag_filter; + int annotation_flag_filter_enabled; + + struct annotation_filter annotation_filters[MAX_FILTERS]; + int annotation_count; + + int combination_mode; // 0=AND-Filter oder 1=OR-Filter +}; + +// Definition einer Datenstruktur für die IP-Adressen Topliste +struct ip_stat { + char ip_address[50]; + int count; +}; + +// Initialisierung eines Arrays für die Logeinträge und weiterer Startvariablen +struct log_entry *all_entries = NULL; +int max_entries = 0; +int total_entries = 0; +int suspicious_patterns_count = 0; +struct filter_system filters = {0}; +// für -v option +int flag_verbose = 0; + +// Hilfsfunktion für die Erkennung von Leerzeichen +int is_space(char c) { + return (c == ' ' || c == '\t'); +} + +//Hilfsfunktion zum Prüfen, ob ein String mit einem bestimmten Präfix beginnt. Nötig für das Parsen der Filter in der main()-Funktion +int starts_with(char* str, char* prefix) { + //positiver Vergleich gibt bei strncmp 0 aus - daher prüfen ob == 0, um 1 bei positiver Prüfung zu erhalten + // strncmp statt strcmp, da nur die ersten Bytes beider Strings geprüft werden (Anzahl: drittes Argument) + return strncmp(str, prefix, strlen(prefix)) == 0; +} + +// Hilfsfunktion zum Überspringen von Leerzeichen, gibt den Pointer für das nächste nicht-Leerzeichen zurück. Nötig für Parser. +char* skip_spaces(char* str) { + while (is_space(*str)) { + str++; + } + return str; +} + +// Kopiert einen Eingabestring von einem Quellbereich zu einem Zielbereich, bis ein Leerzeichen (oder Nullterminator) erreicht wird oder die max. Zeilenlänge nicht überschritten wird +void copy_until_space(char* destination, char* source, int max_length) { + int i = 0; + while (source[i] != ' ' && source[i] != '\0' && i < max_length - 1) { + destination[i] = source[i]; + i++; + } + destination[i] = '\0'; +} + +// NGINX speichert Timestamps mit Monatskürzel. Umwandlung in Zahlen für maschinelle Verarbeitung. +int month_name_to_number(char* month_name) { + if (strncmp(month_name, "Jan", 3) == 0) return 1; + if (strncmp(month_name, "Feb", 3) == 0) return 2; + if (strncmp(month_name, "Mar", 3) == 0) return 3; + if (strncmp(month_name, "Apr", 3) == 0) return 4; + if (strncmp(month_name, "May", 3) == 0) return 5; + if (strncmp(month_name, "Jun", 3) == 0) return 6; + if (strncmp(month_name, "Jul", 3) == 0) return 7; + if (strncmp(month_name, "Aug", 3) == 0) return 8; + if (strncmp(month_name, "Sep", 3) == 0) return 9; + if (strncmp(month_name, "Oct", 3) == 0) return 10; + if (strncmp(month_name, "Nov", 3) == 0) return 11; + if (strncmp(month_name, "Dec", 3) == 0) return 12; + return 1; +} + +// Vergleich von Zeitstempel-Strukturen - time_checkvalue ist der Prüfwert, time_filtervalue ist der Vergleichswert (Filter) - Funktion wird in time_matches() aufgerufen +int compare_times(struct simple_time time_checkvalue, struct simple_time time_filtervalue) { + /* + Rückgabewert 1 -> Prüfwert ist NACH dem Vergleichswert + Es wird erst das Jahr geprüft, dann der Monat u.s.w. + Ist ein Wert gleich, wird der nächstfeinere Wert geprüft. + Sobald die Werte sich unterscheiden, findet die Prüfung statt und ein Rückgabewert wird ausgegeben. + Gibt 0 zurück, wenn der Wert dem Filter exakt gleicht + */ + if (time_checkvalue.year != time_filtervalue.year) return (time_checkvalue.year < time_filtervalue.year) ? -1 : 1; + if (time_checkvalue.month != time_filtervalue.month) return (time_checkvalue.month < time_filtervalue.month) ? -1 : 1; + if (time_checkvalue.day != time_filtervalue.day) return (time_checkvalue.day < time_filtervalue.day) ? -1 : 1; + if (time_checkvalue.hour != time_filtervalue.hour) return (time_checkvalue.hour < time_filtervalue.hour) ? -1 : 1; + if (time_checkvalue.minute != time_filtervalue.minute) return (time_checkvalue.minute < time_filtervalue.minute) ? -1 : 1; + if (time_checkvalue.second != time_filtervalue.second) return (time_checkvalue.second < time_filtervalue.second) ? -1 : 1; + return 0; +} + +// Standardfunktion zum Leeren des Input-Buffers +void clear_input_buffer(){ + int c; + while ((c = getchar()) != '\n' && c != EOF) { + } +} + +// Hilfsfunktion zum Prüfen, ob die Zahl eine Dezimalzahl ist. Wird im Menu verwendet, um die Nutzereingabe zu prüfen +int read_safe_integer(){ + int number; + int result = scanf("%d", &number); + + if (result != 1) { + clear_input_buffer(); + return -1; // Fehler, wenn die Nutzereingabe kein Integer ist + } + + clear_input_buffer(); + return number; +} + +// Speicher freigeben und mit 0 überschreiben (Prävention von use-after-free-Schwachstelle) +void cleanup_memory(){ + if (all_entries != NULL) { + printf("\nDEBUG: %lu Bytes Speicher werden freigegeben\n", (unsigned long)(max_entries * sizeof(struct log_entry))); + free(all_entries); + all_entries = NULL; + } + max_entries = 0; + total_entries = 0; +} + +// sauberes Schließen und bereinigen bei Fehlerstatus, sofern Speicher nicht alloziert werden kann +void cleanup_and_exit(){ + if (flag_verbose) printf("DEBUG: Programmende. Speicher wird freigegeben und mit NULL überschrieben.\n"); + cleanup_memory(); + exit(1); +} + +// Erweiterung des Speichers für dynamische Speicherallokation +void mem_expand_dynamically(){ + // total_entries werden beim parsen am Anfang gezählt (load_regular_file()), max_entries werden initial festgelegt + if (total_entries >= max_entries) { + int old_max = max_entries; + max_entries = max_entries * GROWTH_FACTOR; + + if (flag_verbose) printf("DEBUG: Dynamische Speichererweiterung von %d auf %d Einträge um Faktor %f\n", old_max, max_entries, GROWTH_FACTOR); + + struct log_entry *new_ptr = realloc(all_entries, max_entries * sizeof(struct log_entry)); + + if (new_ptr == NULL) { + printf("ERROR: Speicher konnte nicht auf %d Einträge erweitert werden, ..\n", max_entries); + printf("ERROR: Benötigter Speicher: %lu Bytes\n", (unsigned long)(max_entries * sizeof(struct log_entry))); + cleanup_and_exit(); + } + + all_entries = new_ptr; + if (flag_verbose) printf("DEBUG: Speicher erfolgreich erweitert auf %lu Bytes\n", (unsigned long)(max_entries * sizeof(struct log_entry))); + } +} + +void allocate_initial_memory(){ + max_entries = INITIAL_ENTRIES; // Startwert 1000, globale Variable + all_entries = malloc(max_entries * sizeof(struct log_entry)); + + if (all_entries == NULL) { + printf("ERROR: Konnte %d Einträge nicht allozieren, ..\n", max_entries); + printf("ERROR: %lu Bytes\n", (unsigned long)(max_entries * sizeof(struct log_entry))); + exit(1); // cleanup_and_exit() nicht nötig, da der Speicherbereich nicht beschrieben wurde - use-after-free unproblematisch + } + + if (flag_verbose) printf("DEBUG: Speicher erfolgreich alloziert für %d Log-Einträge (%lu Bytes)\n", max_entries, (unsigned long)(max_entries * sizeof(struct log_entry))); +} + +void get_current_timestamp(char* buffer, int buffer_size) { + time_t raw_time; + struct tm *time_info; + + time(&raw_time); + time_info = localtime(&raw_time); + + if (time_info != NULL) { + strftime(buffer, buffer_size, "%Y-%m-%d %H:%M:%S", time_info); + } else { + snprintf(buffer, buffer_size, "UNKNOWN"); + } +} + +// Hilfsfunktion zum Prüfen, ob es sich beim Pfad um ein Directory handelt - für rekursives Parsen +int is_directory(char* path) { + struct stat path_stat; + if (stat(path, &path_stat) != 0) { + return 0; + } + return S_ISDIR(path_stat.st_mode); +} + +// Hilfsfunktion zum prüfen, ob es sich um eine plausible nginx-Logdatei handelt (Metrik: Dateiname - BESSER: Regex oder Magic Bytes?) +int is_log_file(char* filename) { + // versteckte Dateien sowie . oder .. überspringen + if (filename[0] == '.') { + return 0; + } + + // Mögliche Bestandteile von NGINX-Logfile-Dateinamen + char* log_patterns[] = { + ".log", + "access", + "error", + "combined", + "redirect", + NULL + }; + + // Vergleich der vorhandenen Dateinamen mit den Suchmustern + for (int i = 0; log_patterns[i] != NULL; i++) { + if (strstr(filename, log_patterns[i]) != NULL) { + if ((strstr(filename, "error")!= NULL)||(strstr(filename, ".gz")!= NULL)) continue; + return 1; + } + } + + return 0; +} + +// Funktion zum suchen eines Suchbegriffs innerhalb eines Strings (lowercase) +int search_in_string(char* raw_string, char* search_string) { + char raw_string_lower[512]; // Puffer zum Speichern des zu durchsuchenden Strings + char search_string_lower[256]; // Puffer zum Speichern des Suchbegriffs + + // Konvertierung des Datensatzes zu Kleinbuchstaben + int i = 0; + // für jeden Buchstaben innerhalb des Datensatzes Verschiebung innerhalb des ASCII-Alphabets um 32 + while (raw_string[i] && i < 511) { + if (raw_string[i] >= 'A' && raw_string[i] <= 'Z') { + raw_string_lower[i] = raw_string[i] + 32; // Verschiebung im ASCII-Alphabet + } else { + raw_string_lower[i] = raw_string[i]; // alles was kein Buchstabe ist, wird beibehalten + } + i++; + } + raw_string_lower[i] = '\0'; // Nullterminator anfügen + + // gleiche Methode mit dem Suchbegriff + i = 0; + while (search_string[i] && i < 255) { + if (search_string[i] >= 'A' && search_string[i] <= 'Z') { + search_string_lower[i] = search_string[i] + 32; // Verschiebung im ASCII-Alphabet + } else { + search_string_lower[i] = search_string[i]; // nicht-Buchstaben beibehalten + } + i++; + } + search_string_lower[i] = '\0'; // Nullterminator anfügen + + // strstr()-Vergleich - gibt NULL zurück wenn nichts gefunden + char* result = strstr(raw_string_lower, search_string_lower); + + // Einfache Rückgabe: 1 wenn gefunden, 0 wenn nicht gefunden + if (result != NULL) { + return 1; + } else { + return 0; + } +} + + +// Fügt eine Annotation zu einem bestimmten Eintrag hinzu +// https://stackoverflow.com/questions/5901181/c-string-append +void annotate_entry(int index, char* annotation_string) { + if (index >= 0 && index < total_entries) { + if (all_entries[index].annotation[0] == '\0'){ + strncpy(all_entries[index].annotation, annotation_string, sizeof(all_entries[index].annotation) - 1); + all_entries[index].annotation[sizeof(all_entries[index].annotation) - 1] = '\0'; + all_entries[index].annotated_flag = 1; + } else { + char * new_str ; + if((new_str = malloc(strlen(all_entries[index].annotation)+strlen(",")+strlen(annotation_string)+1)) != NULL){ + new_str[0] = '\0'; // ensures the memory is an empty string + strcat(new_str, all_entries[index].annotation); + strcat(new_str, ","); + strcat(new_str, annotation_string); + strncpy(all_entries[index].annotation, new_str, sizeof(all_entries[index].annotation) - 1); + all_entries[index].annotation[sizeof(all_entries[index].annotation) - 1] = '\0'; + free(new_str); + new_str=NULL; + } + } + } +} + + + +// TRANSPARENZ: Diese Funktion ist KI-generiert +void annotate_suspicious_entries(struct log_entry* dataset) { + if (flag_verbose) printf("DEBUG: Prüfe %d Einträge auf verdächtige Muster...\n", total_entries); + + for (int i = 0; i < total_entries; i++) { + // Initialisierung der Annotation falls noch nicht gesetzt + if (all_entries[i].annotation[0] == '\0') { + all_entries[i].annotation[0] = '\0'; + } + + // 1. PAYLOAD-GRÖßE: Sehr lange Requests + int url_length = strlen(all_entries[i].url_path); + if (url_length > SUSPICIOUS_REQUEST_LEN_THRESHOLD) { + annotate_entry(i, "Long Payload"); + suspicious_patterns_count++; + } + + // 2. PFAD-BASIERTE ANGRIFFE: Häufige Angriffsziele und sensible Pfade + // Git-Repository Zugriffe (häufig bei Recon) + if (search_in_string(all_entries[i].url_path, ".git/") || + search_in_string(all_entries[i].url_path, "/.git")) { + annotate_entry(i, "Git Access"); + suspicious_patterns_count++; + } + + // Environment-Dateien (kritische Konfigurationsdateien) + if (search_in_string(all_entries[i].url_path, ".env") || + search_in_string(all_entries[i].url_path, ".config") || + search_in_string(all_entries[i].url_path, "config.php")) { + annotate_entry(i, "Config Access"); + suspicious_patterns_count++; + } + + // WordPress Admin-Bereiche (häufig attackiert) + if (search_in_string(all_entries[i].url_path, "wp-admin") || + search_in_string(all_entries[i].url_path, "wp-login") || + search_in_string(all_entries[i].url_path, "wp-config")) { + annotate_entry(i, "WP Attack"); + suspicious_patterns_count++; + } + + // Database Management Tools + if (search_in_string(all_entries[i].url_path, "phpmyadmin") || + search_in_string(all_entries[i].url_path, "phpMyAdmin") || + search_in_string(all_entries[i].url_path, "adminer")) { + annotate_entry(i, "DB Tool Access"); + suspicious_patterns_count++; + } + + // Admin/Management Interfaces + if (search_in_string(all_entries[i].url_path, "/admin") || + search_in_string(all_entries[i].url_path, "/manager") || + search_in_string(all_entries[i].url_path, "/console")) { + annotate_entry(i, "Admin Access"); + suspicious_patterns_count++; + } + + // 3. DIRECTORY TRAVERSAL: Pfad-Traversal Versuche + if (search_in_string(all_entries[i].url_path, "../") || + search_in_string(all_entries[i].url_path, "..\\") || + search_in_string(all_entries[i].url_path, "%2e%2e%2f") || + search_in_string(all_entries[i].url_path, "%2e%2e%5c")) { + annotate_entry(i, "Path Traversal"); + suspicious_patterns_count++; + } + + // 4. SQL INJECTION: SQL-Keywords in URLs + if (search_in_string(all_entries[i].url_path, "select%20") || + search_in_string(all_entries[i].url_path, "union%20") || + search_in_string(all_entries[i].url_path, "insert%20") || + search_in_string(all_entries[i].url_path, "delete%20") || + search_in_string(all_entries[i].url_path, "drop%20") || + search_in_string(all_entries[i].url_path, "' or ") || + search_in_string(all_entries[i].url_path, "' and ") || + search_in_string(all_entries[i].url_path, "1=1") || + search_in_string(all_entries[i].url_path, "1' or '1'='1")) { + annotate_entry(i, "SQL Injection"); + suspicious_patterns_count++; + } + + // 5. XSS ATTEMPTS: Cross-Site-Scripting Versuche + if (search_in_string(all_entries[i].url_path, " 10) { + annotate_entry(i, "Heavy Encoding"); + suspicious_patterns_count++; + } + + // 9. ATYPICAL HTTP METHODS: Ungewöhnliche oder fehlerhafte HTTP-Methoden + if (strcmp(all_entries[i].request_method, "ATYPICAL") == 0) { + annotate_entry(i, "Malformed Request"); + suspicious_patterns_count++; + } + // Seltene aber potentiell gefährliche HTTP-Methoden + else if (strcmp(all_entries[i].request_method, "PROPFIND") == 0 || + strcmp(all_entries[i].request_method, "MKCOL") == 0 || + strcmp(all_entries[i].request_method, "COPY") == 0 || + strcmp(all_entries[i].request_method, "MOVE") == 0 || + strcmp(all_entries[i].request_method, "LOCK") == 0) { + annotate_entry(i, "Rare Method"); + suspicious_patterns_count++; + } + + // 10. STATUS CODE ANOMALIES: Verdächtige Status-Code Muster + // 403 auf sensible Pfade könnte Angriffserkennung bedeuten + if (all_entries[i].status_code == 403 && + (search_in_string(all_entries[i].url_path, "admin") || + search_in_string(all_entries[i].url_path, ".git") || + search_in_string(all_entries[i].url_path, ".env"))) { + annotate_entry(i, "Blocked Access"); + suspicious_patterns_count++; + } + // 429 Too Many Requests - Rate Limiting aktiviert + if (all_entries[i].status_code == 429) { + annotate_entry(i, "Rate Limited"); + suspicious_patterns_count++; + } + + // 11. CREDENTIAL STUFFING: Wiederholte Login-Versuche mit verschiedenen Credentials + if ((search_in_string(all_entries[i].url_path, "login") || + search_in_string(all_entries[i].url_path, "signin") || + search_in_string(all_entries[i].url_path, "auth")) && + (all_entries[i].status_code == 401 || all_entries[i].status_code == 403)) { + annotate_entry(i, "Failed Auth"); + suspicious_patterns_count++; + } + + // 12. SHELL/WEBSHELL ACCESS: Verdächtige Shell-bezogene Pfade + if (search_in_string(all_entries[i].url_path, ".php?") || + search_in_string(all_entries[i].url_path, "shell") || + search_in_string(all_entries[i].url_path, "backdoor") || + search_in_string(all_entries[i].url_path, "cmd=") || + search_in_string(all_entries[i].url_path, "exec=") || + search_in_string(all_entries[i].url_path, "system=")) { + annotate_entry(i, "Shell Access"); + suspicious_patterns_count++; + } + + // 13. API ABUSE: Verdächtige API-Zugriffe + if (search_in_string(all_entries[i].url_path, "/api/") && + (all_entries[i].status_code >= 400 && all_entries[i].status_code < 500)) { + annotate_entry(i, "API Error"); + suspicious_patterns_count++; + } + } + + if (flag_verbose) printf("DEBUG: Analyse abgeschlossen. %d verdächtige Muster erkannt.\n", suspicious_patterns_count); +} + +/* +Parser. Regex Parser und strtok haben sich als schwieriger herausgestellt, da nginx Leerzeichen-getrennte Werte in den Logs hat, aber auch Leerzeichen innerhalb der Werte vorkommen. +Daher ist das Parsing am einfachsten, wenn ein Pointer-basierter Algorithmus die Zeile Stück für Stück einliest und die Erwartungswerte in die struct schreibt. +Fehleranfällig, wenn das Logformat nicht dem Standard entspricht - das gilt aber auch für andere Parser. +*/ +// Standard-nginx-accesslog: +/* + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; +*/ +// 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" +int parse_simple_log_line(char* line, int entry_index, char* source_file) { // Nimmt den Pointer auf die Zeile und einen Index entgegen - dieser ist anfangs 0 (globale Variable) und wird pro Eintrag inkrementiert + all_entries[entry_index].annotated_flag = 0; + char* current_pos = line; + // leere Zeichen am Anfang überspringen + current_pos = skip_spaces(current_pos); + + // kopieren der IP-Adresse in die globale all_entries Struktur unter gegebenen index + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + copy_until_space(all_entries[entry_index].ip_address, current_pos, sizeof(all_entries[entry_index].ip_address)); + + // weiter zum nächsten Leerzeichen + while (*current_pos != ' ' && *current_pos != '\0') current_pos++; + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + // überspringe Leerzeichen + current_pos = skip_spaces(current_pos); + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + // mehrmaliges Überspringen des Wertes, der nicht von Interesse ist, Überspringen des Leerzeichens + while (*current_pos != ' ' && *current_pos != '\0') current_pos++; + current_pos = skip_spaces(current_pos); + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + while (*current_pos != ' ' && *current_pos != '\0') current_pos++; + current_pos = skip_spaces(current_pos); + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + // Timestamp-Parsing + if (*current_pos == '[') { + current_pos++; + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + // es folgt nach und nach das Einlesen von Datum und Uhrzeit, und wiederholtes Verschieben des Pointers + all_entries[entry_index].time.day = 0; + while (*current_pos >= '0' && *current_pos <= '9') {all_entries[entry_index].time.day = all_entries[entry_index].time.day * 10 + (*current_pos - '0'); + current_pos++; + } + + if (*current_pos == '/') current_pos++; + + char month_str[4] = {0}; + int month_pos = 0; + while (*current_pos != '/' && *current_pos != '\0' && month_pos < 3) {month_str[month_pos] = *current_pos; + month_pos++; + current_pos++; + } + all_entries[entry_index].time.month = month_name_to_number(month_str); + + if (*current_pos == '/') current_pos++; + + all_entries[entry_index].time.year = 0; + while (*current_pos >= '0' && *current_pos <= '9') { + all_entries[entry_index].time.year = all_entries[entry_index].time.year * 10 + (*current_pos - '0'); + current_pos++; + } + + if (*current_pos == ':') current_pos++; + + all_entries[entry_index].time.hour = 0; + while (*current_pos >= '0' && *current_pos <= '9') { + all_entries[entry_index].time.hour = all_entries[entry_index].time.hour * 10 + (*current_pos - '0'); + current_pos++; + } + + if (*current_pos == ':') current_pos++; + + all_entries[entry_index].time.minute = 0; + while (*current_pos >= '0' && *current_pos <= '9') { + all_entries[entry_index].time.minute = all_entries[entry_index].time.minute * 10 + (*current_pos - '0'); + current_pos++; + } + + if (*current_pos == ':') current_pos++; + + all_entries[entry_index].time.second = 0; + while (*current_pos >= '0' && *current_pos <= '9') { + all_entries[entry_index].time.second = all_entries[entry_index].time.second * 10 + (*current_pos - '0'); + current_pos++; + } + // der Zeitzonen-Deskriptor wird übersprungen + while (*current_pos != ']' && *current_pos != '\0') current_pos++; + if (*current_pos == ']') current_pos++; + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + } else { + printf("ERROR: Unerwartetes Log-Format. Lediglich mit standard-nginx-accesslog kompatibel.\nDer Fehler ist beim Prüfen des Timestamps aufgetreten, dieser sollte folgendes Format haben:\n[DD/MMM/YYYY:HH:MM:SS +0000]\nLogeintrag: %s\n", line); + cleanup_and_exit(); + } + + current_pos = skip_spaces(current_pos); + // Weiter mit dem String innerhalb "", aus dem die HTTP-Methode und der URL-Pfad zu entnehmen ist + if (*current_pos == '"') { + current_pos++; + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + + // lesen der HTTP-Methode in temporäre Variable + char temp_method[50]; + copy_until_space(temp_method, current_pos, sizeof(temp_method)); + + // Längenprüfung des Methodenstrings + int is_valid_method = 1; + if (strlen(temp_method) == 0 || strlen(temp_method) > 10) { + is_valid_method = 0; + } else { + // prüfen, ob die Methode nur ASCII-Zeichen enthält + for (int i = 0; temp_method[i] != '\0'; i++) { + if (!((temp_method[i] >= 'A' && temp_method[i] <= 'Z') || + (temp_method[i] >= 'a' && temp_method[i] <= 'z'))) { + is_valid_method = 0; + break; + } + } + } + + if (is_valid_method) { + // Normal parsen: HTTP-Methode bis zum nächsten Leerzeichen einlesen und speichern + strcpy(all_entries[entry_index].request_method, temp_method); + while (*current_pos != ' ' && *current_pos != '\0') { + current_pos++; + } + current_pos = skip_spaces(current_pos); + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + // Einlesen des URL-Path bis zum abschließenden " + int i = 0; + while (*current_pos != ' ' && *current_pos != '"' && *current_pos != '\0' && i < sizeof(all_entries[entry_index].url_path) - 1) { + all_entries[entry_index].url_path[i] = *current_pos; + i++; + current_pos++; + } + all_entries[entry_index].url_path[i] = '\0'; + + while (*current_pos != '"' && *current_pos != '\0') current_pos++; + if (*current_pos == '"') { + current_pos++; + } + } else { + // in NGINX treten gelegentlich fehlerhafte Requests auf, die binäre Daten übersenden, sodass normales parsen nicht möglich ist. + // der entsprechende Eintrag wird daher mit dem String "ATYPICAL" repräsentiert + strcpy(all_entries[entry_index].request_method, "ATYPICAL"); + + // Read entire quoted content into url_path for forensic analysis + int i = 0; + while (*current_pos != '"' && *current_pos != '\0' && i < sizeof(all_entries[entry_index].url_path) - 1) { + all_entries[entry_index].url_path[i] = *current_pos; + i++; + current_pos++; + } + all_entries[entry_index].url_path[i] = '\0'; + + // zum Ende des request-strings vorarbeiten, wenn der String zu lang war. + while (*current_pos != '"' && *current_pos != '\0') { + current_pos++; + } + + if (*current_pos == '"') current_pos++; + } + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + } else { + printf("ERROR: Unerwartetes Log-Format. Lediglich mit standard-nginx-accesslog kompatibel.\nDer Fehler ist beim Prüfen der HTTP-Methode aufgetreten. Diese steht innerhalb eines Strings zusammen mit dem URL-Pfad:\n\"GET /.git/config HTTP/1.1\"\nLogeintrag: %s\n", line); + cleanup_and_exit(); + } + + current_pos = skip_spaces(current_pos); + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + // Parsen ded HTTP-Status Codes, der eine Zahl sein muss + all_entries[entry_index].status_code = 0; + while (*current_pos >= '0' && *current_pos <= '9') { + all_entries[entry_index].status_code = all_entries[entry_index].status_code * 10 + (*current_pos - '0'); + current_pos++; + } + + current_pos = skip_spaces(current_pos); + // genauso mit bytegröße der Anfrage + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + all_entries[entry_index].bytes_sent = 0; + while (*current_pos >= '0' && *current_pos <= '9') { + all_entries[entry_index].bytes_sent = all_entries[entry_index].bytes_sent * 10 + (*current_pos - '0'); + current_pos++; + } + current_pos = skip_spaces(current_pos); + + // Parsen des Referrer-Feldes innerhalb "", wird übersprungen da nicht gespeichert + if (*current_pos == '"') { + current_pos++; // öffnendes Anführungszeichen überspringen + // Referrer-Inhalt bis zum schließenden Anführungszeichen überspringen + while (*current_pos != '"' && *current_pos != '\0') { + current_pos++; + } + if (*current_pos == '"') current_pos++; // schließendes Anführungszeichen überspringen + } else { + printf("ERROR: Unerwartetes Log-Format. Lediglich mit standard-nginx-accesslog kompatibel.\nDer Fehler ist beim Prüfen des Referrer-Feldes aufgetreten.\nLogeintrag: %s\n", line); + cleanup_and_exit(); + } + + current_pos = skip_spaces(current_pos); + // parsen des user agents innerhalb "" + if (*current_pos == '"') { + current_pos++; + int i = 0; + while (*current_pos != '"' && *current_pos != '\0' && i < sizeof(all_entries[entry_index].user_agent) - 1) { + all_entries[entry_index].user_agent[i] = *current_pos; + i++; + current_pos++; + } + all_entries[entry_index].user_agent[i] = '\0'; + if (*current_pos == '"') current_pos++; + } else { + printf("ERROR: Unerwartetes Log-Format. Lediglich mit standard-nginx-accesslog kompatibel.\nDer Fehler ist beim Prüfen des User-Agent aufgetreten. Dieser steht innerhalb eines Strings:\n\"Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);\"\nLogeintrag: %s\n", line); + cleanup_and_exit(); + } + get_current_timestamp(all_entries[entry_index].parsing_timestamp, sizeof(all_entries[entry_index].parsing_timestamp)); + // Dateinamen in das Feld schreiben - strncpy um Buffer overflow zu verhindern + strncpy(all_entries[entry_index].source_file, source_file, sizeof(all_entries[entry_index].source_file) - 1); + // strncpy setzt keinen Nullterminator, dieser muss am Ende eingefügt werden + all_entries[entry_index].source_file[sizeof(all_entries[entry_index].source_file) - 1] = '\0'; + + return 1; +} + +void load_regular_file(char* filename) { + FILE* file = fopen(filename, "r"); + if (file == NULL) { + printf("ERROR: Kann Datei '%s' nicht öffnen!\n", filename); + return; + } + printf("INFO: Lade Datei: %s\n", filename); + char line[MAX_REQUEST_LENGTH]; + int loaded_from_this_file = 0; + while (fgets(line, sizeof(line), file) != NULL) { + mem_expand_dynamically(); + if (parse_simple_log_line(line, total_entries, filename)) { + total_entries++; + loaded_from_this_file++; + } + } + fclose(file); + printf(" -> %d Einträge aus dieser Datei geladen.\n", loaded_from_this_file); +} + +// https://stackoverflow.com/questions/15417648/uncompressing-a-gz-string-in-c +void load_gz_file(char* filename) { + FILE *packedFileHandle = fopen(filename, "rb"); + if (packedFileHandle == NULL) { + printf("ERROR: Kann Datei '%s' nicht öffnen!\n", filename); + return; + } + + printf("INFO: Dekomprimiere Datei: %s\n", filename); + + // Temporäre Datei erstellen + FILE *tempFile = tmpfile(); + if (tempFile == NULL) { + printf("ERROR: Kann temporäre Datei nicht erstellen!\n"); + fclose(packedFileHandle); + return; + } + + // FileStream in temporäre Datei schreiben + gzUnpackFile(packedFileHandle, tempFile); + + // Pointer an den Beginn der temporären Datei setzen + rewind(tempFile); + + char line[MAX_REQUEST_LENGTH]; + int loaded_from_this_file = 0; + + while (fgets(line, sizeof(line), tempFile) != NULL) { + mem_expand_dynamically(); + if (parse_simple_log_line(line, total_entries, filename)) { + total_entries++; + loaded_from_this_file++; + } + } + + fclose(tempFile); + fclose(packedFileHandle); + printf(" -> %d Einträge aus dieser Datei geladen.\n", loaded_from_this_file); +} + +void load_log_file(char* path) { + total_entries = 0; + char full_path[512]; + + if (is_directory(path)) { + if (flag_verbose) printf("DEBUG: Verzeichnis erkannt: %s\n", path); + if (flag_verbose) printf("DEBUG: Suche nach .log Dateien...\n"); + + DIR* dir = opendir(path); + if (dir == NULL) { + printf("ERROR: Kann Verzeichnis '%s' nicht öffnen!\n", path); + return; + } + + struct dirent* entry; + int files_found = 0; + while ((entry = readdir(dir)) != NULL) { + char* filename = (*entry).d_name; + if (strcmp(filename, ".") == 0 || strcmp(filename, "..") == 0) { + printf("WARNING: Überspringe Datei %s, unerwartete Dateisignatur\n", filename); + continue; + } + if (strstr(filename, "error")!=NULL){ + printf("WARNING: Überspringe Datei %s, vermutlich Errorlog\n", filename); + printf("INFO: Error-Logs werden in dieser Version nicht unterstützt.\n"); + continue; + } + int path_len = strlen(path); + // Flag, um den Debug Print und den Export zu verbessern, ansonsten können // auftreten + int needs_slash = (path_len > 0 && path[path_len - 1] != '/'); + + if (is_log_file(filename)) { + (needs_slash) ? snprintf(full_path, sizeof(full_path), "%s/%s", path, filename) : snprintf(full_path, sizeof(full_path), "%s%s", path, filename); + load_regular_file(full_path); + files_found++; + } else if (strstr(filename, ".gz") != NULL) { + (needs_slash) ? snprintf(full_path, sizeof(full_path), "%s/%s", path, filename) : snprintf(full_path, sizeof(full_path), "%s%s", path, filename); + load_gz_file(full_path); + files_found++; + } + } + closedir(dir); + + if (files_found == 0) { + printf("WARNING: Keine .log Dateien im Verzeichnis gefunden.\n"); + printf(" Tipp: Für .gz Dateien verwenden Sie 'gunzip *.gz' zum Dekomprimieren\n"); + } else { + printf("INFO: Insgesamt %d .log Dateien verarbeitet.\n", files_found); + } + } else { + if (flag_verbose) printf("DEBUG: Einzelne Datei erkannt: %s\n", path); + if (strstr(path, ".gz") != NULL) { + load_gz_file(path); + } else { + load_regular_file(path); + } + } + + printf("INFO: Erfolgreich %d Einträge insgesamt geladen.\n", total_entries); + // die aufgerufene Funktion ist KI-generiert und annotiert verdächtige Requests automatisch. + annotate_suspicious_entries(all_entries); + if (flag_verbose) printf("DEBUG: Aktueller Speicherverbrauch: %lu Bytes für %d Einträge\n", + (unsigned long)(max_entries * sizeof(struct log_entry)), max_entries); +} + +// Filterfunktion für den User-Agent. Nimmt den Datensatz entgegen und prüft gegen die gesetzten Filter, gibt dann 0 oder 1 zurück +int user_agent_matches(char* user_agent) { + if (filters.user_agent_count == 0) return 1; + // Ausschluss-Filter geht vor + for (int i = 0; i < filters.user_agent_count; i++) { + if (filters.user_agent_filters[i].filter_exclude_flag == 1) { + int pattern_found = search_in_string(user_agent, filters.user_agent_filters[i].pattern); + if (pattern_found) { + return 0; // früheres Verlassen der Schleife, sobald Ausschlussfilter zutrifft + } + } + } + // Prüfung im entsprechenden Modus + int include_count = 0; + int include_matches = 0; + + for (int i = 0; i < filters.user_agent_count; i++) { + if (filters.user_agent_filters[i].filter_exclude_flag == 0) { + include_count++; + int pattern_found = search_in_string(user_agent, filters.user_agent_filters[i].pattern); + if (pattern_found) { + include_matches++; + if (filters.combination_mode == 1) { // OR-Modus + return 1; // Früheres Verlassen der Schleife bei erstem zutreffendem Einschlussfilter im OR-Modus + } + } + } + } + + // Diese Prüfung wird ausgeführt, wenn Einschlussfilter vorhanden sind + if (include_count > 0) { + if (filters.combination_mode == 0) { // AND-Modus + return include_matches == include_count; // Alle Einschlussfilter müssen zutreffen, die Treffer müssen Anzahl der Filter entsprechen + } else { // OR-Modus + return include_matches > 0; // Ausschlussfilter im ODER-Modus - wenn ein beliebiger Eintrag zum Ausschlussfilter passt, wird 0=negativ zurückgegeben + } + } + + return 1; // Keine Einschlussfilter, keine zutreffenden Ausschlussfilter, positiver Rückgabewert =1 +} + +// Filterfunktion für URL-Pfad. Nimmt den Datensatz entgegen und prüft gegen die gesetzten Filter, gibt dann 0 oder 1 zurück +int url_matches(char* url_path) { + if (filters.url_count == 0) return 1; + // Ausschluss-Filter geht vor + for (int i = 0; i < filters.url_count; i++) { + if (filters.url_filters[i].filter_exclude_flag == 1) { + int pattern_found = search_in_string(url_path, filters.url_filters[i].pattern); + if (pattern_found) { + return 0; // früheres Verlassen der Schleife, sobald Ausschlussfilter zutrifft + } + } + } + // Prüfung im entsprechenden Modus + int include_count = 0; + int include_matches = 0; + + for (int i = 0; i < filters.url_count; i++) { + if (filters.url_filters[i].filter_exclude_flag == 0) { + include_count++; + int pattern_found = search_in_string(url_path, filters.url_filters[i].pattern); + if (pattern_found) { + include_matches++; + if (filters.combination_mode == 1) { // OR-Modus + return 1; // Früheres Verlassen der Schleife bei erstem zutreffendem Einschlussfilter im OR-Modus + } + } + } + } + + // Diese Prüfung wird ausgeführt, wenn Einschlussfilter vorhanden sind + if (include_count > 0) { + if (filters.combination_mode == 0) { // AND-Modus + return include_matches == include_count; // Alle Einschlussfilter müssen zutreffen, die Treffer müssen Anzahl der Filter entsprechen + } else { // OR-Modus + return include_matches > 0; // Ausschlussfilter im ODER-Modus - wenn ein beliebiger Eintrag zum Ausschlussfilter passt, wird 0=negativ zurückgegeben + } + } + + return 1; // Keine Einschlussfilter, keine zutreffenden Ausschlussfilter, positiver Rückgabewert =1 +} + +// Filterfunktion für Zugriffsmethode. Nimmt den Datensatz entgegen und prüft gegen die gesetzten Filter, gibt dann 0 oder 1 zurück +int method_matches(char* request_method) { + if (filters.method_count == 0) return 1; + // Ausschluss-Filter geht vor + for (int i = 0; i < filters.method_count; i++) { + if (filters.method_filters[i].filter_exclude_flag == 1) { + int pattern_found = search_in_string(request_method, filters.method_filters[i].pattern); + if (pattern_found) { + return 0; // früheres Verlassen der Schleife, sobald Ausschlussfilter zutrifft + } + } + } + // Prüfung im entsprechenden Modus + int include_count = 0; + int include_matches = 0; + + for (int i = 0; i < filters.method_count; i++) { + if (filters.method_filters[i].filter_exclude_flag == 0) { + include_count++; + int pattern_found = search_in_string(request_method, filters.method_filters[i].pattern); + if (pattern_found) { + include_matches++; + if (filters.combination_mode == 1) { // OR-Modus + return 1; // Früheres Verlassen der Schleife bei erstem zutreffendem Einschlussfilter im OR-Modus + } + } + } + } + + // Diese Prüfung wird ausgeführt, wenn Einschlussfilter vorhanden sind + if (include_count > 0) { + if (filters.combination_mode == 0) { // AND-Modus + return include_matches == include_count; // Alle Einschlussfilter müssen zutreffen, die Treffer müssen Anzahl der Filter entsprechen + } else { // OR-Modus + return include_matches > 0; + } + } + + return 1; // Keine Einschlussfilter, keine zutreffenden Ausschlussfilter, positiver Rückgabewert =1 +} + +int status_code_matches(int status_code) { + if (filters.status_count == 0) return 1; + // Ausschluss-Filter prüfen: immer übergeordnet gültig + for (int i = 0; i < filters.status_count; i++) { + if (filters.status_filters[i].filter_exclude_flag == 1) { + if (filters.status_filters[i].code == status_code) { + return 0; + } + } + } + + // Filter prüfen in entsprechendem Modus + int include_count = 0; + int include_matches = 0; + + for (int i = 0; i < filters.status_count; i++) { + if (filters.status_filters[i].filter_exclude_flag == 0) { + include_count++; + if (filters.status_filters[i].code == status_code) { + include_matches++; + if (filters.combination_mode == 1) { // OR-Modus + return 1; // positiver Rückgabewert, Schleife wird verlassen sobald erster Treffer im OR-Modus + } + } + } + } + + // Diese Prüfung wird ausgeführt, wenn Einschlussfilter vorhanden sind + if (include_count > 0) { + if (filters.combination_mode == 0) { // UND-Modus + return include_matches == include_count; // Filter-Treffer müssen der Anzahl der Statuscode-Filter entsprechen + } else { // OR-Modus + return include_matches > 0; // Ausschlussfilter im ODER-Modus - wenn ein beliebiger Eintrag zum Ausschlussfilter passt, wird 0=negativ zurückgegeben + } + } + return 1; // Keine Einschlussfilter, keine Treffer in den Ausschlussfiltern, positiver Rückgabewert = 1 +} + +int ip_address_matches(char* ip_address) { + if (filters.ip_count == 0) return 1; + + // Prüfen der Ausschlussfilter, sind dem Rest vorgelagert + for (int i = 0; i < filters.ip_count; i++) { + if (filters.ip_filters[i].filter_exclude_flag == 1) { + if (strcmp(filters.ip_filters[i].ip_address, ip_address) == 0) { + return 0; // zutreffender Ausschlussfilter führt zu negativem Rückgabewert + } + } + } + + // Prüfung im AND oder im OR-Modus + int include_count = 0; + int include_matches = 0; + + for (int i = 0; i < filters.ip_count; i++) { + if (filters.ip_filters[i].filter_exclude_flag == 0) { + include_count++; + if (strcmp(filters.ip_filters[i].ip_address, ip_address) == 0) { + include_matches++; + if (filters.combination_mode == 1) { // OR-Modus + return 1; // Früheres Verlassen der Schleife, sofern erster Filter im OR-Modus zutrifft + } + } + } + } + + // Diese Prüfung wird ausgeführt, wenn Einschlussfilter vorhanden sind + if (include_count > 0) { + if (filters.combination_mode == 0) { // UND-Modus + return include_matches == include_count; // Filter-Treffer müssen der Anzahl der IP-Adressen-Filter entsprechen + } else { // OR-Modus + return include_matches > 0; // zutreffender Ausschlussfilter führt zu negativem Rückgabewert + } + } + return 1; // Keine Einschlussfilter, keine Treffer in den Ausschlussfiltern, positiver Rückgabewert = 1 +} + +int is_annotated(int annotated_flag){ + if (filters.annotation_flag_filter.filter_exclude_flag == 1 && filters.annotation_flag_filter_enabled == 1 && annotated_flag == 1) { + return 0; // zutreffender Ausschlussfilter führt zu negativem Rückgabewert + } + else if (filters.annotation_flag_filter.filter_exclude_flag == 0 && filters.annotation_flag_filter_enabled == 1 && annotated_flag == 1) { + return 1; // zutreffender Einschlussfilter führt zu positivem Rückgabewert + } + // nichtannotiert, aber inklusiver Filter aktiv -> Eintrag nicht anzeigen + else if (annotated_flag == 0 && filters.annotation_flag_filter.filter_exclude_flag == 0 && filters.annotation_flag_filter_enabled == 1){ + return 0; + } + // Filter nicht aktiv, positiver Rückgabewert + return 1; +} + + +int annotation_matches(char* annotation) { + if (filters.annotation_count == 0) return 1; + // Ausschluss-Filter geht vor + for (int i = 0; i < filters.annotation_count; i++) { + if (filters.annotation_filters[i].filter_exclude_flag == 1) { + int pattern_found = search_in_string(annotation, filters.annotation_filters[i].pattern); + if (pattern_found) { + return 0; // früheres Verlassen der Schleife, sobald Ausschlussfilter zutrifft + } + } + } + // Prüfung im entsprechenden Modus + int include_count = 0; + int include_matches = 0; + + for (int i = 0; i < filters.annotation_count; i++) { + if (filters.annotation_filters[i].filter_exclude_flag == 0) { + include_count++; + int pattern_found = search_in_string(annotation, filters.annotation_filters[i].pattern); + if (pattern_found) { + include_matches++; + if (filters.combination_mode == 1) { // OR-Modus + return 1; // Früheres Verlassen der Schleife bei erstem zutreffendem Einschlussfilter im OR-Modus + } + } + } + } + + // Diese Prüfung wird ausgeführt, wenn Einschlussfilter vorhanden sind + if (include_count > 0) { + if (filters.combination_mode == 0) { // AND-Modus + return include_matches == include_count; // Alle Einschlussfilter müssen zutreffen, die Treffer müssen Anzahl der Filter entsprechen + } else { // OR-Modus + return 0; + } + } + + return 1; // Keine Einschlussfilter, keine zutreffenden Ausschlussfilter, positiver Rückgabewert =1 +} + +// Vergleicht einen übergebenen Prüfwert für einen Zeitstempel mit dem aktuell gesetzten Filter. Wenn der Prüfwert im Filterbereich ist,wird 1 zurückgegeben. +int time_matches(struct simple_time entry_time) { + if (filters.time_count == 0) return 1; + + // Übergeordneter Ausschlussfilter + for (int i = 0; i < filters.time_count; i++) { + if (filters.time_filters[i].filter_exclude_flag == 1) { + int in_range = (compare_times(entry_time, filters.time_filters[i].start_time) >= 0 && + compare_times(entry_time, filters.time_filters[i].end_time) <= 0); + if (in_range) { + return 0; // zutreffender Ausschlussfilter führt zu negativem Rückgabewert, ist den Einschlussfiltern übergeordnet + } + } + } + + // Prüfung im entsprechenden Modus + int include_count = 0; + int include_matches = 0; + for (int i = 0; i < filters.time_count; i++) { + if (filters.time_filters[i].filter_exclude_flag == 0) { + include_count++; + int in_range = (compare_times(entry_time, filters.time_filters[i].start_time) >= 0 && + compare_times(entry_time, filters.time_filters[i].end_time) <= 0); + if (in_range) { + include_matches++; + if (filters.combination_mode == 1) { // OR-Modus + return 1; // Sobald der erste Zeitraum im OR-Modus zutrifft, wird die Schleife verlassen + } + } + } + } + + // Diese Prüfung wird ausgeführt, wenn Einschlussfilter vorhanden sind + if (include_count > 0) { + if (filters.combination_mode == 0) { // AND-Modus + return include_matches == include_count; // Filter-Treffer müssen der Anzahl der Zeitraum-Filter entsprechen + } else { // OR-Modus + return include_matches > 0; // zutreffender Ausschlussfilter führt zu negativem Rückgabewert + } + } + return 1; // keine Einschlussfilter und keine zutreffenden Ausschlussfilter - positiver Rückgabewert +} + +// Prüfen aller Filter im AND-Modus oder OR-Modus (combination_mode) pro Log-Eintrag +int passes_filter(int entry_index) { + if (filters.combination_mode == 0) { // AND-Modus + // alle AND-verknüpften Filter müssen zutreffen + int status_match = status_code_matches(all_entries[entry_index].status_code); + int method_match = method_matches(all_entries[entry_index].request_method); + int ip_match = ip_address_matches(all_entries[entry_index].ip_address); + int time_match = time_matches(all_entries[entry_index].time); + int user_agent_match = user_agent_matches(all_entries[entry_index].user_agent); + int url_match = url_matches(all_entries[entry_index].url_path); + int has_annotation = is_annotated(all_entries[entry_index].annotated_flag); + int annotation_match = annotation_matches(all_entries[entry_index].annotation); + + return status_match && ip_match && time_match && user_agent_match && method_match && url_match && has_annotation && annotation_match; + } else { // OR-Modus + // für den geprüften Eintrag muss mindestens eine der Filterkategorien zutreffen. + // Eine Prüfung über Filter1 || Filter2 || etc ist nicht möglich, da auch + // nicht gesetzte Filter hier keine Einschränkng bilden. Daher muss jede KAtegorie einzeln geprüft werden. + int total_filters = filters.status_count + filters.method_count + filters.ip_count + filters.time_count + filters.user_agent_count + filters.url_count + filters.annotation_flag_filter_enabled + filters.annotation_count; + if (total_filters == 0) return 1; + + int has_passing_filter = 0; + + // Jede Filterkategorie wird nur geprüft, wenn auch entsprechende Filter gesetzt sind. + if (filters.status_count > 0) { + if (status_code_matches(all_entries[entry_index].status_code)) { + has_passing_filter = 1; + } + } + if (filters.method_count > 0) { + if (method_matches(all_entries[entry_index].request_method)) { + has_passing_filter = 1; + } + } + if (filters.ip_count > 0) { + if (ip_address_matches(all_entries[entry_index].ip_address)) { + has_passing_filter = 1; + } + } + if (filters.time_count > 0) { + if (time_matches(all_entries[entry_index].time)) { + has_passing_filter = 1; + } + } + if (filters.user_agent_count > 0) { + if (user_agent_matches(all_entries[entry_index].user_agent)) { + has_passing_filter = 1; + } + } + if (filters.url_count > 0) { + if (url_matches(all_entries[entry_index].url_path)) { + has_passing_filter = 1; + } + } + if (filters.annotation_flag_filter_enabled){ + if (is_annotated(all_entries[entry_index].annotated_flag)) { + has_passing_filter = 1; + } + } + if (filters.annotation_count > 0){ + if (annotation_matches(all_entries[entry_index].annotation)){ + has_passing_filter = 1; + } + } + return has_passing_filter; + } +} + +// Einfacher Zähler für alle Einträge, die die Filterfunktionen bestehen +int count_filtered_entries(){ + int count = 0; + for (int i = 0; i < total_entries; i++) { + if (passes_filter(i)) { + count++; + } + } + return count; +} + +// notwendig, um konformes Timestamp-Format aus simple_time struct zu generieren. Unterstützt derzeit nur UTC +void format_iso8601_time(struct simple_time time, char* buffer, int buffer_size) { + snprintf(buffer, buffer_size, "%04d-%02d-%02dT%02d:%02d:%02d+00:00", + time.year, time.month, time.day, time.hour, time.minute, time.second); +} + +//Export in Timesketch-kompatiblem Format +void write_csv_field(FILE* file, const char* field) { + fprintf(file, "\""); + for (const char* p = field; *p; p++) { + if (*p == '"') { + fprintf(file, "\"\""); + } else { + fprintf(file, "%c", *p); + } + } + fprintf(file, "\""); +} + +void export_filtered_entries(char *filepath) { + // 90 chars +delimiter + char filename[91]; + if (filepath == NULL) { + printf("Dateiname für Timesketch-Export eingeben (ohne .csv): "); + if (scanf("%90s", filename) != 1) { + printf("ERROR: Ungültiger Dateiname!\n"); + clear_input_buffer(); + return; + } + } else { + strncpy(filename, filepath, sizeof(filename) - 1); + filename[sizeof(filename) - 1] = '\0'; + } + + strcat(filename, ".csv"); + printf("\nINFO: Schreibe Datei %s...\n", filename); + FILE* file = fopen(filename, "w"); + if (file == NULL) { + printf("ERROR: Kann Datei '%s' nicht erstellen!\n", filename); + return; + } + + // CSV-Kopfzeile für Timesketch-Kompatibilität + fprintf(file, "datetime,message,timestamp_desc,ip_address,method,url_path,status_code,bytes_sent,user_agent,parsing_timestamp,tag\n"); + + int exported_count = 0; + char iso_datetime[32]; + + for (int i = 0; i < total_entries; i++) { + if (passes_filter(i)) { + format_iso8601_time(all_entries[i].time, iso_datetime, sizeof(iso_datetime)); + + // Tags werden von Timesketch in diesem Format erwartet: [ "tag1","tag2" ] + char tag_str[256] = ""; + if (strlen(all_entries[i].annotation) > 0) { + // Create a working copy for strtok (it modifies the string) + char annotation_copy[64]; + strncpy(annotation_copy, all_entries[i].annotation, sizeof(annotation_copy) - 1); + annotation_copy[sizeof(annotation_copy) - 1] = '\0'; + + strcat(tag_str, "[ "); + // https://stackoverflow.com/questions/5901181/c-string-append + // https://www.quora.com/How-can-we-count-the-number-of-special-characters-in-a-string-in-the-C-language-using-fgets + char* token = strtok(annotation_copy, ","); + int first = 1; + while (token != NULL) { + if (!first) { + strcat(tag_str, ","); + } + strcat(tag_str, "\""); + strncat(tag_str, token, sizeof(tag_str) - strlen(tag_str) - 3); + strcat(tag_str, "\""); + first = 0; + token = strtok(NULL, ","); + } + strcat(tag_str, " ]"); + } + + write_csv_field(file, iso_datetime); + fprintf(file, ","); + write_csv_field(file, all_entries[i].source_file); + fprintf(file, ","); + write_csv_field(file, "NGINX Audit Log"); + fprintf(file, ","); + write_csv_field(file, all_entries[i].ip_address); + fprintf(file, ","); + write_csv_field(file, all_entries[i].request_method); + fprintf(file, ","); + write_csv_field(file, all_entries[i].url_path); + fprintf(file, ","); + fprintf(file, "%d", all_entries[i].status_code); + fprintf(file, ","); + fprintf(file, "%d", all_entries[i].bytes_sent); + fprintf(file, ","); + write_csv_field(file, all_entries[i].user_agent); + fprintf(file, ","); + write_csv_field(file, all_entries[i].parsing_timestamp); + fprintf(file, ","); + if (strlen(all_entries[i].annotation) > 0) { + write_csv_field(file, tag_str); + } + fprintf(file, "\n"); + + exported_count++; + } + } + + fclose(file); + printf("INFO: %d Logeinträge erfolgreich als Timesketch-kompatible CSV-Datei nach '%s' exportiert.\n", exported_count, filename); +} + + +// zeigt alle annotierten Einträge detailliert an +void show_annotated_entries() { + printf("\nLOGEINTRÄGE MIT ANNOTATION\n"); + printf("IP-Adresse | Methode | URL | Status | Bytes | User Agent | Zeit | Annotation\n"); + printf("-----------------|---------|------------------------|--------|-------|--------------------------------------|------------------|--------------------\n"); + + int shown_count = 0; + + for (int i = 0; i < total_entries; i++) { + if (!passes_filter(i)) continue; + + if (all_entries[i].annotated_flag == 1) { + printf("%-16s | %-7s | %-22s | %-6d | %-5d | %-36s | %02d.%02d.%d %02d:%02d:%02d | %-18s\n", + all_entries[i].ip_address, + all_entries[i].request_method, + all_entries[i].url_path, + all_entries[i].status_code, + all_entries[i].bytes_sent, + all_entries[i].user_agent, + all_entries[i].time.day, + all_entries[i].time.month, + all_entries[i].time.year, + all_entries[i].time.hour, + all_entries[i].time.minute, + all_entries[i].time.second, + all_entries[i].annotation + ); + shown_count++; + } + } + + if (shown_count == 0) { + printf("Keine annotierten Einträge gefunden, die dem Filter entsprechen.\n"); + } else { + printf("\nInsgesamt %d annotierte Einträge angezeigt.\n", shown_count); + } +} + +// top-IP-Adressen sortieren nach Aufkommen und anzeigen +void show_top_x_ips(){ + // initialisieren von 1000 Datenstrukturen mit einem char ip_address[50] und int count (oben definiert) + struct ip_stat ip_stats[1000]; + // lokaler Zähler + int unique_ips = 0; + + // iterieren über alle IP-Adressen, die im Filterset sind + for (int i = 0; i < total_entries; i++) { + if (!passes_filter(i)) continue; + + // IP lokal speichern + char* current_ip = all_entries[i].ip_address; + + // initialisieren des Index - -1 heißt bisher nie aufgetreten + int found_index = -1; + for (int j = 0; j < unique_ips; j++) { + // Wenn die IP-Adresse im Vergeichsdatensatz gefunden wird, wird der index entsprechend gesetzt/erstellt + if (strcmp(ip_stats[j].ip_address, current_ip) == 0) { + found_index = j; + break; + } + } + + // wenn ein neuer index erstellt wurde (IP-Adresse war noch nicht in der Datenstruktur) oder gefunden wurde... + if (found_index >= 0) { + // inkrementieren des counters für Anzahl wie oft gefunden + ip_stats[found_index].count++; + } else { + // wenn nicht gefunden (found_index == -1) wird die IP mit count = 1 neu angelegt + if (unique_ips < 1000) { + strcpy(ip_stats[unique_ips].ip_address, current_ip); + ip_stats[unique_ips].count = 1; + unique_ips++; + } + } + } + + // iterieren über alle unique ips + // Bubble sort: https://www.proggen.org/doku.php?id=training:sorting:bubblesort:solution + for (int i = 0; i < unique_ips - 1; i++) { + for (int j = 0; j < unique_ips - i - 1; j++) { + if (ip_stats[j].count < ip_stats[j + 1].count) { + struct ip_stat temp = ip_stats[j]; + ip_stats[j] = ip_stats[j + 1]; + ip_stats[j + 1] = temp; + } + } + } + + // visuelle Darstellung + printf("\nTOP %d IP-ADRESSEN\n", TOP_X); + printf("Rang | IP-Adresse | Anzahl Anfragen\n"); + printf("-----|------------------|----------------\n"); + + int show_count = (unique_ips < TOP_X) ? unique_ips : TOP_X; + for (int i = 0; i < show_count; i++) { + printf("%-4d | %-16s | %d\n", i + 1, ip_stats[i].ip_address, ip_stats[i].count); + } + + if (unique_ips == 0) { + printf("Keine IP-Adressen in den gefilterten Daten gefunden.\n"); + } else { + printf("\nInsgesamt %d verschiedene IP-Adressen gefunden.\n", unique_ips); + } +} + +// gleiche Mechanik wie in show_top_x_ips - könnte wahrscheinlich vereinheitlicht werden +void show_top_user_agents(){ + struct user_agent_stat { + char user_agent[256]; + int count; + }; + + struct user_agent_stat agent_stats[1000]; + int unique_agents = 0; + + for (int i = 0; i < total_entries; i++) { + if (!passes_filter(i)) continue; + + char* current_agent = all_entries[i].user_agent; + int found_index = -1; + + for (int j = 0; j < unique_agents; j++) { + if (strcmp(agent_stats[j].user_agent, current_agent) == 0) { + found_index = j; + break; + } + } + + if (found_index >= 0) { + agent_stats[found_index].count++; + } else { + if (unique_agents < 1000) { + strcpy(agent_stats[unique_agents].user_agent, current_agent); + agent_stats[unique_agents].count = 1; + unique_agents++; + } + } + } + + for (int i = 0; i < unique_agents - 1; i++) { + for (int j = 0; j < unique_agents - i - 1; j++) { + if (agent_stats[j].count < agent_stats[j + 1].count) { + struct user_agent_stat temp = agent_stats[j]; + agent_stats[j] = agent_stats[j + 1]; + agent_stats[j + 1] = temp; + } + } + } + + printf("\nTOP %d USER AGENTS\n", TOP_X); + printf("Rang | User Agent | Anzahl Anfragen\n"); + printf("-----|--------------------------------------|----------------\n"); + + int show_count = (unique_agents < TOP_X) ? unique_agents : TOP_X; + for (int i = 0; i < show_count; i++) { + printf("%-4d | %-34s | %d\n", i + 1, agent_stats[i].user_agent, agent_stats[i].count); + } + + if (unique_agents == 0) { + printf("Keine User Agents in den gefilterten Daten gefunden.\n"); + } else { + printf("\nInsgesamt %d verschiedene User Agents gefunden.\n", unique_agents); + } +} + +// Zeigt jeden Eintrag, der den Filter besteht. Wird ein int !=0 übergeben, wird nur die spezifizierte Anzahl an Einträgen dargestellt. +// Verwendung in einer Komplettausgabe sowie im Preview +void show_filtered_entries(int num_shown) { + int shown_count = 0; + + printf("\nLOGDATEN:\n"); + printf("IP-Adresse | Methode | URL | Status | Bytes | User Agent | Zeit | Annotation\n"); + printf("-----------------|---------|------------------------|--------|-------|--------------------------------------|---------------------|--------------------\n"); + + for (int i = 0; i < total_entries; i++) { + if (!passes_filter(i)) continue; + + printf("%-16s | %-7s | %-22s | %-6d | %-5d | %-36s | %02d.%02d.%d %02d:%02d:%02d | %31s\n", + all_entries[i].ip_address, + all_entries[i].request_method, + all_entries[i].url_path, + all_entries[i].status_code, + all_entries[i].bytes_sent, + all_entries[i].user_agent, + all_entries[i].time.day, + all_entries[i].time.month, + all_entries[i].time.year, + all_entries[i].time.hour, + all_entries[i].time.minute, + all_entries[i].time.second, + all_entries[i].annotation + ); + + shown_count++; + if (num_shown != 0 && shown_count >= num_shown) break; // für Preview: abbrechen wenn num_shown erreicht + } + + if (num_shown != 0) { + printf("\nInsgesamt %d Einträge in der Vorschau.\n", shown_count); + } else { + printf("\nInsgesamt %d Einträge gefunden.\n", shown_count); + } + + if (shown_count == 0) { + printf("Keine Einträge gefunden, die dem Filter entsprechen.\n"); + } +} + +// Diese Funktion zeigt stets die gesetzten Filter in einem Format an, das aus dem interaktiven Modus reproduzierbar im cli-Modus wiederverwendet werden kann +void print_filter_args(){ + int total_filters = filters.status_count + filters.method_count + filters.ip_count + filters.time_count + filters.user_agent_count + filters.url_count + filters.annotation_flag_filter_enabled + filters.annotation_count; + + if (total_filters == 0) { + return; + } + + printf("-f "); + + if (filters.status_count > 0) { + printf("--status="); + for (int i = 0; i < filters.status_count; i++) { + if (i > 0) {printf(",");}; + if (filters.status_filters[i].filter_exclude_flag == 1) printf("!"); + printf("%d", filters.status_filters[i].code); + } + printf(" "); + } + + if (filters.method_count > 0) { + printf("--method="); + for (int i = 0; i < filters.method_count; i++) { + if (i > 0) {printf(",");} + if (filters.method_filters[i].filter_exclude_flag == 1) printf("!"); + printf("%s", filters.method_filters[i].pattern); + } + printf(" "); + } + + if (filters.ip_count > 0) { + printf("--ip="); + for (int i = 0; i < filters.ip_count; i++) { + if (i > 0) {printf(",");}; + if (filters.ip_filters[i].filter_exclude_flag == 1) printf("!"); + printf("%s", filters.ip_filters[i].ip_address); + } + printf(" "); + } + + if (filters.user_agent_count > 0) { + printf("--useragent="); + for (int i = 0; i < filters.user_agent_count; i++) { + if (i > 0) {printf(",");}; + if (filters.user_agent_filters[i].filter_exclude_flag == 1) printf("!"); + printf("%s", filters.user_agent_filters[i].pattern); + } + printf(" "); + } + + if (filters.url_count > 0) { + printf("--url="); + for (int i = 0; i < filters.url_count; i++) { + if (i > 0) {printf(",");}; + if (filters.url_filters[i].filter_exclude_flag == 1) printf("!"); + printf("%s", filters.url_filters[i].pattern); + } + printf(" "); + } + + if (filters.time_count >0){ + printf("--timerange="); + for(int i =0; i < filters.time_count;i++){ + if(i > 0) {printf(",");}; + if (filters.time_filters[i].filter_exclude_flag == 1) {printf("!");}; + // die führenden 0 sind hier wichtig + printf("%04d-%02d-%02d-%02d-%02d-%02d:%04d-%02d-%02d-%02d-%02d-%02d ", + filters.time_filters[i].start_time.year, + filters.time_filters[i].start_time.month, + filters.time_filters[i].start_time.day, + filters.time_filters[i].start_time.hour, + filters.time_filters[i].start_time.minute, + filters.time_filters[i].start_time.second, + filters.time_filters[i].end_time.year, + filters.time_filters[i].end_time.month, + filters.time_filters[i].end_time.day, + filters.time_filters[i].end_time.hour, + filters.time_filters[i].end_time.minute, + filters.time_filters[i].end_time.second); + } + } + + // macht nicht viel Sinn, diese hier zu integrieren, so lang der User nicht weiß, wie die Annotationen lauten + if (filters.annotation_flag_filter_enabled) { + printf("--annotated="); + if (filters.annotation_flag_filter.filter_exclude_flag == 1) printf("!"); + printf("true "); + } + + if (filters.annotation_count > 0) { + printf("--annotation="); + for (int i = 0; i < filters.annotation_count; i++) { + if (i > 0) printf(","); + if (filters.annotation_filters[i].filter_exclude_flag == 1) printf("!"); + printf("%s", filters.annotation_filters[i].pattern); + } + printf(" "); + } + + if (filters.combination_mode == 1) { + printf("--mode=or "); + }else { + printf("--mode=and "); + } + + printf("\n"); + +} + +// Status-Anzeige, die in jedem Bildschirm dynamisch eine Vorschau des gefilterten Datensatzes, sowie eine Übersicht über die gesetzten Filter anzeigt. +void show_status(){ + printf("\nPREVIEW:\n"); + // diese Funktion wird auch an anderer Stelle mit Parameter 0 verwendet und zeigt dann alles an + show_filtered_entries(10); + printf("\nSTATUS\n"); + + if (total_entries > 0) { + printf(" %d Logzeilen in Datenstruktur\n", total_entries); + //nicht verifiziert? + printf(" Speicherbelegung: %lu Bytes\n", (unsigned long)(max_entries * sizeof(struct log_entry))); + } else { + printf(" ERROR: Keine Einträge in Datenstruktur!\n"); + } + + printf("\n Aktive Filter:\n"); + int total_filters = filters.status_count + filters.method_count + filters.ip_count + filters.time_count + filters.user_agent_count + filters.url_count + filters.annotation_flag_filter_enabled + filters.annotation_count; + + if (total_filters == 0) { + printf(" -> keine Filter gesetzt\n"); + } else { + printf("\n "); + print_filter_args(); + printf("\n \n"); + printf(" Ausschlussfilter (!) haben Vorrang, dann Einschlussfilter\n"); + + int active_types = (filters.status_count > 0) + (filters.method_count > 0) + (filters.ip_count > 0) + (filters.user_agent_count > 0) + (filters.time_count > 0) + (filters.url_count > 0) + (filters.annotation_flag_filter_enabled > 0) + (filters.annotation_count > 0); + if (active_types > 1) { + printf(" %s-Verknüpfung (nur Einschlussfilter, Ausschlussfilter sind stets ODER-verknüpft)\n", filters.combination_mode == 0 ? "UND" : "ODER"); + } + } + + if (total_entries > 0) { + int filtered_count = count_filtered_entries(); + printf("\n DATENSATZ: \n %d von %d Einträgen entsprechen den Filtern\n", filtered_count, total_entries); + printf(" Außergewöhnliche Muster gefunden: %d\n", suspicious_patterns_count); + + } +} + +// TRANSPARENZ: Dies wurde KI-generiert +void print_filter_examples(){ + printf("\nFILTER-DOKUMENTATION\n"); + printf("===================\n\n"); + + printf("GRUNDLEGENDE SYNTAX:\n"); + printf(" --filtertyp=wert1,wert2,wert3 Mehrere Werte kommagetrennt\n"); + printf(" --filtertyp=!wert Ausschluss (mit ! Präfix)\n"); + printf(" --filtertyp=wert1,!wert2 Gemischt: wert1 einschließen, wert2 ausschließen\n"); + printf(" --mode=and UND-Verknüpfung (Standard)\n"); + printf(" --mode=or ODER-Verknüpfung\n\n"); + + printf("VERFÜGBARE FILTER:\n"); + printf(" --status=200,404,500 HTTP-Status-Codes\n"); + printf(" --ip=192.168.1.100,10.0.0.5 IP-Adressen (exakt)\n"); + printf(" --method=GET,POST,ATYPICAL HTTP-Methoden\n"); + printf(" --useragent=bot,crawler,scanner User-Agent Teilstrings\n"); + printf(" --url=.git,.env,wp-admin URL-Pfad Teilstrings\n"); + printf(" --annotated=true Nur annotierte Einträge\n"); + printf(" --annotation=SQL,XSS Annotations-Teilstrings\n"); + printf(" --timerange=START:END Zeiträume (siehe unten)\n\n"); + + printf("ZEITRAUM-SYNTAX:\n"); + printf(" Format: YYYY-MM-DD-HH-MM-SS:YYYY-MM-DD-HH-MM-SS\n"); + printf(" Beispiel: 2025-08-31-08-00-00:2025-08-31-18-00-00\n"); + printf(" Ausschluss: !2025-08-31-02-00-00:2025-08-31-06-00-00\n\n"); + + printf("FILTER-LOGIK:\n"); + printf(" 1. Ausschlussfilter (!) haben IMMER Vorrang\n"); + printf(" 2. Bei mehreren Filtern verschiedener Typen: Kombination nach --mode\n"); + printf(" 3. Bei mehreren Filtern gleichen Typs: Kombination nach --mode\n\n"); + + printf("PRAKTISCHE BEISPIELE:\n\n"); + + printf("SICHERHEITSANALYSE:\n"); + printf("Verdächtige Pfad-Zugriffe finden:\n"); + printf(" --url=.git,.env,wp-admin,phpmyadmin --mode=or\n"); + printf(" > Zeigt Zugriffe auf Git-Repos, Config-Dateien oder Admin-Bereiche\n\n"); + + printf("SQL-Injection Versuche:\n"); + printf(" --annotation=SQL --url=select,union,drop --mode=or\n"); + printf(" > Kombiniert automatische Erkennung mit manuellen Mustern\n\n"); + + printf("Bot-Traffic ausschließen:\n"); + printf(" --useragent=!bot,!crawler,!spider --status=200 --mode=and\n"); + printf(" > Nur erfolgreiche Requests ohne Bot-Traffic\n\n"); + + printf("PERFORMANCE-ANALYSE:\n"); + printf("Server-Fehler in Geschäftszeiten:\n"); + printf(" --timerange=2025-08-31-08-00-00:2025-08-31-18-00-00 --status=500,502,503 --mode=and\n"); + printf(" > 5xx Fehler nur während Arbeitszeit\n\n"); + + printf("Wartungszeit ausschließen:\n"); + printf(" --timerange=!2025-08-31-02-00-00:2025-08-31-06-00-00 --status=!200\n"); + printf(" > Alle Fehler außerhalb der Wartungszeit\n\n"); + + printf("ANOMALIE-ERKENNUNG:\n"); + printf("Alle verdächtigen Aktivitäten:\n"); + printf(" --annotated=true\n"); + printf(" > Zeigt alle automatisch erkannten Anomalien\n\n"); + + printf("Lange Payloads von bestimmten IPs:\n"); + printf(" --annotation=Long --ip=!192.168.1.0 --mode=and\n"); + printf(" > Verdächtig lange Requests von externen IPs\n\n"); + + printf("FORENSIK:\n"); + printf("Angriffsmuster in kritischem Zeitfenster:\n"); + printf(" --timerange=2025-08-31-14-30-00:2025-08-31-15-30-00 --status=403,404 --annotation=Scanner,SQL,XSS --mode=and\n"); + printf(" > Detaillierte Analyse eines Sicherheitsvorfalls\n\n"); + + printf("Fehlgeschlagene Login-Versuche:\n"); + printf(" --url=login,signin,auth --status=401,403 --annotation=Failed --mode=and\n"); + printf(" > Brute-Force Angriffe auf Login-Bereiche\n\n"); + + printf("TRAFFIC-BEREINIGUNG:\n"); + printf("Nur menschlicher Traffic:\n"); + printf(" --useragent=!bot,!crawler,!scanner --method=!PROPFIND --status=200,304 --mode=and\n"); + printf(" > Erfolgreiche Requests ohne automatisierten Traffic\n\n"); + + printf("Administrative Zugriffe ausschließen:\n"); + printf(" --ip=!192.168.1.10,!10.0.0.100 --url=!admin,!manager --mode=and\n"); + printf(" > Traffic ohne Admin-IPs und Admin-Bereiche\n\n"); + + printf("HÄUFIGE KOMBINATIONEN:\n"); + printf("DDoS-Verdacht:\n"); + printf(" --status=429,503,502 --annotation=Rate --mode=or\n"); + printf(" > Überlastungsindikationen und Rate-Limiting\n\n"); + + printf("Webshell-Suche:\n"); + printf(" --url=.php,cmd=,exec= --annotation=Shell --method=POST,GET --mode=or\n"); + printf(" > Verdächtige PHP-Aufrufe und Shell-Aktivitäten\n\n"); + + printf("Normale Website-Nutzung:\n"); + printf(" --status=200,304 --method=GET,POST --useragent=!bot --annotated=!true --mode=and\n"); + printf(" > Sauberer, erfolgreicher Website-Traffic ohne Anomalien\n\n"); + + printf("ANNOTATIONEN (automatisch erkannt):\n"); + printf(" Long Payload - Verdächtig lange Anfragen\n"); + printf(" Git Access - Zugriff auf .git Verzeichnisse\n"); + printf(" Config Access - Zugriff auf Konfigurationsdateien\n"); + printf(" WP Attack - WordPress-spezifische Angriffe\n"); + printf(" SQL Injection - SQL-Injection Versuche\n"); + printf(" XSS Attempt - Cross-Site-Scripting Versuche\n"); + printf(" Scanner/Bot - Automatisierte Scanner\n"); + printf(" Path Traversal - Directory-Traversal Angriffe\n"); + printf(" Failed Auth - Fehlgeschlagene Authentifizierung\n"); + printf(" Shell Access - Webshell-Zugriffe\n"); +} + +int handle_menu_shortcuts(int choice) { + if (choice == -2) { + return -2; + } else if (choice == -3) { + return -3; + } else if (choice == -4) { + printf("Programmende\n"); + cleanup_memory(); + exit(0); + } + return choice; +} + +// überall wo integer aus String-Input gelesen werden müssen. basiert auf strtol, was gegen Buffer Overflow sicher sein soll +int safe_read_integer(char* prompt, int min_val, int max_val) { + char input[50]; + int value; + char *endptr; + // endlos + while (1) { + printf("%s", prompt); + // scanf liest den Input in einen pointer ein, daher nicht &input. Die Usereingabe ist ein String, also ein Array + if (scanf("%49s", input) != 1) { + clear_input_buffer(); + printf("ERROR: Ungültige Eingabe. Bitte erneut versuchen.\n"); + continue; + } + clear_input_buffer(); + // Standard Rückgabewerte für die Menünavigation, die Werte werden für die choice-Variable genutzt + if (strcmp(input, "b") == 0 || strcmp(input, "B") == 0) return -2; + if (strcmp(input, "m") == 0 || strcmp(input, "M") == 0) return -3; + if (strcmp(input, "q") == 0 || strcmp(input, "Q") == 0) return -4; + + // Konvertierung der Eingabe in einen Long-Integer der Basis 10. Der endptr speichert einen Pointer auf das erste ungültige Zeichen nach einlesen des Lon-Integer + value = strtol(input, &endptr, 10); + // wenn der endptr der Nullterminator ist, handelte es sich bei der Eingabe sicher um einen Long-Integer. + if (*endptr != '\0') { + printf("ERROR: '%s' ist keine gültige Zahl. Bitte erneut versuchen.\n", input); + continue; + } + // Prüfen, ob sich der Wert im Erwartungsbereich befindet + if (value < min_val || value > max_val) { + printf("ERROR: Wert muss zwischen %d und %d liegen. Bitte erneut versuchen.\n", min_val, max_val); + continue; + } + + return value; + } +} + +int safe_read_string(char* prompt, char* buffer, int buffer_size) { + while (1) { + printf("%s", prompt); + if (scanf("%s", buffer) != 1) { + clear_input_buffer(); + printf("ERROR: Ungültige Eingabe. Bitte erneut versuchen.\n"); + continue; + } + clear_input_buffer(); + + if (strlen(buffer) >= buffer_size - 1) { + printf("ERROR: Eingabe zu lang. Bitte erneut versuchen.\n"); + continue; + } + + if (strcmp(buffer, "b") == 0 || strcmp(buffer, "B") == 0) return -2; + if (strcmp(buffer, "m") == 0 || strcmp(buffer, "M") == 0) return -3; + if (strcmp(buffer, "q") == 0 || strcmp(buffer, "Q") == 0) return -4; + + return 0; + } +} + +// Menü mit standardisierter Navigation +int read_menu_input(){ + char input[10]; + // scanf braucht eine Begrenzung, %s würde alle Zeichen in stdin lesen - buffer overflow + if (scanf("%5s", input) != 1) { + clear_input_buffer(); + return -1; + } + clear_input_buffer(); + + if (strcmp(input, "b") == 0 || strcmp(input, "B") == 0) return -2; + if (strcmp(input, "m") == 0 || strcmp(input, "M") == 0) return -3; + if (strcmp(input, "q") == 0 || strcmp(input, "Q") == 0) return -4; + + char *endptr; + //string to long + long number = strtol(input, &endptr, 10); + // Prüfen, ob Eingabe erfolgreich zu Zahl umgewandelt werden konnte - endptr speichert das Zeichen, das nicht mehr gepasst hat - muss also Nullterminator sein + if (*endptr != '\0' || number < 0 || number > 999) { + return -1; + } + return (int)number; +} + + +// Transparenz: Die visuelle Darstellung der Menus und dessen Formatierung, sowie repetitive schriftliche Wiedergabe wie etwa die interaktive Eingabe der Zeiträume ist teilweise KI-generiert. +void show_main_menu(){ + printf("\nHAUPTMENÜ\n"); + printf("1. Filter verwalten\n"); + printf("2. Daten anzeigen und exportieren\n"); + printf("3. Export (CSV, Timesketch-kompatibel)\n"); + printf("4. Programm beenden\n"); + printf("Navigation: [b]Zurück [m]Hauptmenü [q]Beenden\n"); + printf("Auswahl: "); +} + +int menu_set_filters(){ + int choice = 0; + // Standardnavigation aus read_menu_input + while (choice != -2 && choice != -3) { + show_status(); + + printf("\nFILTER HINZUFÜGEN\n"); + printf("1. Status-Code (exakte Suche)\n"); + printf("2. IP-Adresse (exakte Suche)\n"); + printf("3. Zeitraum (Start- und Endzeit)\n"); + printf("4. User-Agent (Teilstring-Suche)\n"); + printf("5. HTTP-Methode (Teilstring-Suche)\n"); + printf("6. URL-Pfad (Teilstring-Suche)\n"); + printf("7. Hat Annotation\n"); + printf("8. Annotation (Teilstring-Suche)\n"); + printf("Navigation: [b]Zurück [m]Hauptmenü [q]Beenden\n"); + printf("Auswahl: "); + + choice = read_menu_input(); + choice = handle_menu_shortcuts(choice); + + if (choice == 1) { + if (filters.status_count >= MAX_FILTERS) { + printf("ERROR: Maximale Anzahl Status-Code Filter erreicht (%d)!\n", MAX_FILTERS); + continue; + } + + int status = safe_read_integer("Status Code eingeben (z.B. 200, 404, 500): ", 100, 599); + if (status < 0) continue; + + printf("\nFilter-Typ wählen:\n"); + printf("1. Einschließen (nur Status %d anzeigen)\n", status); + printf("2. Ausschließen (Status %d NICHT anzeigen)\n", status); + + int filter_type = safe_read_integer("Auswahl: ", 1, 2); + if (filter_type < 0) continue; + + filters.status_filters[filters.status_count].code = status; + filters.status_filters[filters.status_count].filter_exclude_flag = (filter_type == 2) ? 1 : 0; + filters.status_count++; + printf("Status-Code Filter hinzugefügt. Gesamt: %d\n", filters.status_count); + + } else if (choice == 2) { + if (filters.ip_count >= MAX_FILTERS) { + printf("ERROR: Maximale Anzahl IP-Filter erreicht (%d)!\n", MAX_FILTERS); + continue; + } + + char ip[50]; + int result = safe_read_string("IP-Adresse eingeben: ", ip, sizeof(ip)); + if (result < 0) continue; + + printf("\nFilter-Typ wählen:\n"); + printf("1. Einschließen (nur IP %s anzeigen)\n", ip); + printf("2. Ausschließen (IP %s NICHT anzeigen)\n", ip); + + int filter_type = safe_read_integer("Auswahl: ", 1, 2); + if (filter_type < 0) continue; + + strcpy(filters.ip_filters[filters.ip_count].ip_address, ip); + filters.ip_filters[filters.ip_count].filter_exclude_flag = (filter_type == 2) ? 1 : 0; + filters.ip_count++; + printf("IP-Filter hinzugefügt. Gesamt: %d\n", filters.ip_count); + + } else if (choice == 3) { + if (filters.time_count >= MAX_FILTERS) { + printf("ERROR: Maximale Anzahl Zeitraum-Filter erreicht (%d)!\n", MAX_FILTERS); + continue; + } + + printf("\nZEITRAUM FILTER HINZUFÜGEN\n"); + struct time_filter new_time_filter = {0}; + + printf("STARTZEIT:\n"); + int start_year = safe_read_integer("Jahr (z.B. 2025): ", 1970, 2100); + if (start_year < 0) continue; + + int start_month = safe_read_integer("Monat (1-12): ", 1, 12); + if (start_month < 0) continue; + + int start_day = safe_read_integer("Tag (1-31): ", 1, 31); + if (start_day < 0) continue; + + int start_hour = safe_read_integer("Stunde (0-23): ", 0, 23); + if (start_hour < 0) continue; + + int start_minute = safe_read_integer("Minute (0-59): ", 0, 59); + if (start_minute < 0) continue; + + int start_second = safe_read_integer("Sekunde (0-59): ", 0, 59); + if (start_second < 0) continue; + + printf("\nENDZEIT:\n"); + int end_year = safe_read_integer("Jahr (z.B. 2023): ", 1970, 2100); + if (end_year < 0) continue; + + int end_month = safe_read_integer("Monat (1-12): ", 1, 12); + if (end_month < 0) continue; + + int end_day = safe_read_integer("Tag (1-31): ", 1, 31); + if (end_day < 0) continue; + + int end_hour = safe_read_integer("Stunde (0-23): ", 0, 23); + if (end_hour < 0) continue; + + int end_minute = safe_read_integer("Minute (0-59): ", 0, 59); + if (end_minute < 0) continue; + + int end_second = safe_read_integer("Sekunde (0-59): ", 0, 59); + if (end_second < 0) continue; + + printf("\nFilter-Typ wählen:\n"); + printf("1. Einschließen (nur Ereignisse IN diesem Zeitraum)\n"); + printf("2. Ausschließen (Ereignisse in diesem Zeitraum NICHT anzeigen)\n"); + + int filter_type = safe_read_integer("Auswahl: ", 1, 2); + if (filter_type < 0) continue; + + new_time_filter.start_time.year = start_year; + new_time_filter.start_time.month = start_month; + new_time_filter.start_time.day = start_day; + new_time_filter.start_time.hour = start_hour; + new_time_filter.start_time.minute = start_minute; + new_time_filter.start_time.second = start_second; + + new_time_filter.end_time.year = end_year; + new_time_filter.end_time.month = end_month; + new_time_filter.end_time.day = end_day; + new_time_filter.end_time.hour = end_hour; + new_time_filter.end_time.minute = end_minute; + new_time_filter.end_time.second = end_second; + + new_time_filter.filter_exclude_flag = (filter_type == 2) ? 1 : 0; + + filters.time_filters[filters.time_count] = new_time_filter; + filters.time_count++; + + printf("Zeitraum-Filter hinzugefügt. Gesamt: %d\n", filters.time_count); + + } else if (choice == 4) { + if (filters.user_agent_count >= MAX_FILTERS) { + printf("ERROR: Maximale Anzahl User-Agent Filter erreicht (%d)!\n", MAX_FILTERS); + continue; + } + + char pattern[256]; + int result = safe_read_string("User-Agent Suchtext eingeben (z.B. 'chrome', 'bot', 'scanner'): ", pattern, sizeof(pattern)); + if (result < 0) continue; + + printf("\nFilter-Typ wählen:\n"); + printf("1. Einschließen (nur User-Agents mit '%s')\n", pattern); + printf("2. Ausschließen (User-Agents mit '%s' NICHT anzeigen)\n", pattern); + + int filter_type = safe_read_integer("Auswahl: ", 1, 2); + if (filter_type < 0) continue; + + strcpy(filters.user_agent_filters[filters.user_agent_count].pattern, pattern); + filters.user_agent_filters[filters.user_agent_count].filter_exclude_flag = (filter_type == 2) ? 1 : 0; + filters.user_agent_count++; + printf("User-Agent Filter hinzugefügt. Gesamt: %d\n", filters.user_agent_count); + + } else if (choice == 5) { + if (filters.method_count >= MAX_FILTERS) { + printf("ERROR: Maximale Anzahl Method-Filter erreicht (%d)!\n", MAX_FILTERS); + continue; + } + + char pattern[10]; + int result = safe_read_string("HTTP-Methode eingeben (z.B. 'GET', 'POST', 'PUT', Sonderwert: 'ATYPICAL'): ", pattern, sizeof(pattern)); + if (result < 0) continue; + + printf("\nFilter-Typ wählen:\n"); + printf("1. Einschließen (nur Methode '%s')\n", pattern); + printf("2. Ausschließen (Methode '%s' NICHT anzeigen)\n", pattern); + + int filter_type = safe_read_integer("Auswahl: ", 1, 2); + if (filter_type < 0) continue; + + strcpy(filters.method_filters[filters.method_count].pattern, pattern); + filters.method_filters[filters.method_count].filter_exclude_flag = (filter_type == 2) ? 1 : 0; + filters.method_count++; + printf("Method-Filter hinzugefügt. Gesamt: %d\n", filters.method_count); + + } else if (choice == 6) { + if (filters.url_count >= MAX_FILTERS) { + printf("ERROR: Maximale Anzahl URL-Filter erreicht (%d)!\n", MAX_FILTERS); + continue; + } + + char pattern[MAX_REQUEST_LENGTH]; + int result = safe_read_string("URL-Pfad Suchtext eingeben (z.B. '.git', '.php', '/admin', 'wp-'): ", pattern, sizeof(pattern)); + if (result < 0) continue; + + printf("\nFilter-Typ wählen:\n"); + printf("1. Einschließen (nur URLs mit '%s')\n", pattern); + printf("2. Ausschließen (URLs mit '%s' NICHT anzeigen)\n", pattern); + + int filter_type = safe_read_integer("Auswahl: ", 1, 2); + if (filter_type < 0) continue; + + strcpy(filters.url_filters[filters.url_count].pattern, pattern); + filters.url_filters[filters.url_count].filter_exclude_flag = (filter_type == 2) ? 1 : 0; + filters.url_count++; + printf("URL-Filter hinzugefügt. Gesamt: %d\n", filters.url_count); + } else if (choice == 7) { + printf("\nFilter-Typ wählen:\n"); + printf("1. Einschließen (nur Einträge mit Annotationen)\n"); + printf("2. Ausschließen (Einträge mit Annotationen NICHT anzeigen)\n"); + + int filter_type = safe_read_integer("Auswahl: ", 1, 2); + if (filter_type < 0) continue; + filters.annotation_flag_filter.filter_exclude_flag = (filter_type == 2) ? 1 : 0; + filters.annotation_flag_filter_enabled = 1; + } else if (choice == 8) { + if (filters.annotation_count >= MAX_FILTERS) { + printf("ERROR: Maximale Anzahl Annotations-Filter erreicht (%d)!\n", MAX_FILTERS); + continue; + } + + char pattern[MAX_REQUEST_LENGTH]; + int result = safe_read_string("Annotations-Suchtext eingeben (z.B. 'long request'): ", pattern, sizeof(pattern)); + if (result < 0) continue; + + printf("\nFilter-Typ wählen:\n"); + printf("1. Einschließen (nur Annotationen mit '%s')\n", pattern); + printf("2. Ausschließen (Annotationen mit '%s' NICHT anzeigen)\n", pattern); + + int filter_type = safe_read_integer("Auswahl: ", 1, 2); + if (filter_type < 0) continue; + + strcpy(filters.annotation_filters[filters.annotation_count].pattern, pattern); + filters.annotation_filters[filters.annotation_count].filter_exclude_flag = (filter_type == 2) ? 1 : 0; + filters.annotation_count++; + printf("Annotations-Filter hinzugefügt. Gesamt: %d\n", filters.annotation_count); + } else if (choice == -2) { + return -2; + } else if (choice == -3) { + return -3; + } else if (choice != -1) { + printf("ERROR: Ungültige Auswahl! Bitte wählen Sie 1-6 oder b/m/q.\n"); + } + } + return choice; +} + +void menu_delete_filters(){ + int total_filters = filters.status_count + filters.ip_count + filters.time_count + filters.user_agent_count + filters.method_count + filters.url_count + filters.annotation_flag_filter_enabled + filters.annotation_count; + + if (total_filters == 0) { + printf("Keine Filter gesetzt zum Löschen.\n"); + return; + } + + printf("\nFILTER LÖSCHEN\n"); + printf("Aktuelle Filter:\n\n"); + + int filter_index = 1; + + for (int i = 0; i < filters.status_count; i++) { + char* mode_str = (filters.status_filters[i].filter_exclude_flag == 1) ? "ausschließen" : "einschließen"; + printf("%2d. Status-Code: %d (%s)\n", filter_index++, filters.status_filters[i].code, mode_str); + } + + for (int i = 0; i < filters.method_count; i++) { + char* mode_str = (filters.method_filters[i].filter_exclude_flag == 1) ? "ausschließen" : "einschließen"; + printf("%2d. HTTP-Methode: \"%s\" (%s)\n", filter_index++, filters.method_filters[i].pattern, mode_str); + } + + for (int i = 0; i < filters.ip_count; i++) { + char* mode_str = (filters.ip_filters[i].filter_exclude_flag == 1) ? "ausschließen" : "einschließen"; + printf("%2d. IP-Adresse: %s (%s)\n", filter_index++, filters.ip_filters[i].ip_address, mode_str); + } + + for (int i = 0; i < filters.user_agent_count; i++) { + char* mode_str = (filters.user_agent_filters[i].filter_exclude_flag == 1) ? "ausschließen" : "einschließen"; + printf("%2d. User-Agent: \"%s\" (%s)\n", filter_index++, filters.user_agent_filters[i].pattern, mode_str); + } + + for (int i = 0; i < filters.url_count; i++) { + char* mode_str = (filters.url_filters[i].filter_exclude_flag == 1) ? "ausschließen" : "einschließen"; + printf("%2d. URL-Pfad: \"%s\" (%s)\n", filter_index++, filters.url_filters[i].pattern, mode_str); + } + + for (int i = 0; i < filters.time_count; i++) { + char* mode_str = (filters.time_filters[i].filter_exclude_flag == 1) ? "ausschließen" : "einschließen"; + printf("%2d. Zeitraum: %02d.%02d.%d %02d:%02d:%02d - %02d.%02d.%d %02d:%02d:%02d (%s)\n", + filter_index++, + filters.time_filters[i].start_time.day, + filters.time_filters[i].start_time.month, + filters.time_filters[i].start_time.year, + filters.time_filters[i].start_time.hour, + filters.time_filters[i].start_time.minute, + filters.time_filters[i].start_time.second, + filters.time_filters[i].end_time.day, + filters.time_filters[i].end_time.month, + filters.time_filters[i].end_time.year, + filters.time_filters[i].end_time.hour, + filters.time_filters[i].end_time.minute, + filters.time_filters[i].end_time.second, + mode_str); + } + + if (filters.annotation_flag_filter_enabled){ + char* mode_str = (filters.annotation_flag_filter.filter_exclude_flag == 1) ? "ausschließen" : "einschließen"; + printf("%2d. Annotierte Einträge %s", filter_index++, mode_str); + } + + for (int i = 0; i < filters.annotation_count; i++) { + char* mode_str = (filters.annotation_filters[i].filter_exclude_flag == 1) ? "ausschließen" : "einschließen"; + printf("%2d. Annotations-Filter: \"%s\" (%s)\n", filter_index++, filters.annotation_filters[i].pattern, mode_str); + } + + int choice = safe_read_integer("Filter zum Löschen auswählen (1-%d) oder 0 für Abbrechen: ", 0, total_filters); + if (choice < 0) return; + + if (choice == 0) { + return; + } + + int current_index = 1; + + for (int i = 0; i < filters.status_count; i++) { + if (current_index == choice) { + for (int j = i; j < filters.status_count - 1; j++) { + filters.status_filters[j] = filters.status_filters[j + 1]; + } + filters.status_count--; + printf("Status-Code Filter gelöscht.\n"); + return; + } + current_index++; + } + + for (int i = 0; i < filters.method_count; i++) { + if (current_index == choice) { + for (int j = i; j < filters.method_count - 1; j++) { + filters.method_filters[j] = filters.method_filters[j + 1]; + } + filters.method_count--; + printf("Method-Filter gelöscht.\n"); + return; + } + current_index++; + } + + for (int i = 0; i < filters.ip_count; i++) { + if (current_index == choice) { + for (int j = i; j < filters.ip_count - 1; j++) { + filters.ip_filters[j] = filters.ip_filters[j + 1]; + } + filters.ip_count--; + printf("IP-Filter gelöscht.\n"); + return; + } + current_index++; + } + + for (int i = 0; i < filters.user_agent_count; i++) { + if (current_index == choice) { + for (int j = i; j < filters.user_agent_count - 1; j++) { + filters.user_agent_filters[j] = filters.user_agent_filters[j + 1]; + } + filters.user_agent_count--; + printf("User-Agent Filter gelöscht.\n"); + return; + } + current_index++; + } + + for (int i = 0; i < filters.url_count; i++) { + if (current_index == choice) { + for (int j = i; j < filters.url_count - 1; j++) { + filters.url_filters[j] = filters.url_filters[j + 1]; + } + filters.url_count--; + printf("URL-Filter gelöscht.\n"); + return; + } + current_index++; + } + + for (int i = 0; i < filters.time_count; i++) { + if (current_index == choice) { + for (int j = i; j < filters.time_count - 1; j++) { + filters.time_filters[j] = filters.time_filters[j + 1]; + } + filters.time_count--; + printf("Zeitraum-Filter gelöscht.\n"); + return; + } + current_index++; + } + + if (filters.annotation_flag_filter_enabled) { + if (current_index == choice) { + filters.annotation_flag_filter_enabled = 0; + printf("Annotations-Filter gelöscht.\n"); + return; + } + current_index++; + } + + for (int i = 0; i < filters.annotation_count; i++) { + if (current_index == choice) { + for (int j = i; j < filters.annotation_count - 1; j++) { + filters.annotation_filters[j] = filters.annotation_filters[j + 1]; + } + filters.annotation_count--; + printf("Annotations-Filter gelöscht.\n"); + return; + } + current_index++; + } +} + +void menu_filter_mode(){ + printf("\nFILTER-MODUS ÄNDERN\n"); + printf("Aktueller Modus: %s\n\n", filters.combination_mode == 0 ? "AND (alle müssen zutreffen)" : "OR (einer muss zutreffen)"); + + printf("HINWEIS: Der Modus gilt nur für Einschluss-Filter der gleichen Kategorie.\n"); + printf("Ausschluss-Filter arbeiten immer im OR-Modus und haben Vorrang.\n\n"); + + printf("1. AND-Modus (alle Einschluss-Filter müssen zutreffen)\n"); + printf("2. OR-Modus (mindestens ein Einschluss-Filter muss zutreffen)\n"); + printf("Navigation: [b]Zurück [m]Hauptmenü [q]Beenden\n"); + printf("Auswahl: "); + + int choice = read_menu_input(); + choice = handle_menu_shortcuts(choice); + + if (choice == 1) { + filters.combination_mode = 0; + printf("Filter-Modus auf AND gesetzt.\n"); + } else if (choice == 2) { + filters.combination_mode = 1; + printf("Filter-Modus auf OR gesetzt.\n"); + } else if (choice == -2 || choice == -3) { + return; + } else if (choice != -1) { + printf("ERROR: Ungültige Auswahl! Bitte wählen Sie 1-3 oder b/m/q.\n"); + } +} + +void menu_reset_filters(){ + printf("\nFILTER ZURÜCKSETZEN\n"); + + int total_filters = filters.status_count + filters.method_count + filters.ip_count + + filters.time_count + filters.user_agent_count + filters.url_count; + + if (total_filters == 0) { + printf("Keine Filter gesetzt zum Zurücksetzen.\n"); + return; + } + + printf("WARNING: Alle %d Filter werden gelöscht!\n\n", total_filters); + printf("1. Ja, alle Filter löschen\n"); + printf("2. Abbrechen\n"); + printf("Navigation: [b]Zurück [m]Hauptmenü [q]Beenden\n"); + printf("Auswahl: "); + + int choice = read_menu_input(); + choice = handle_menu_shortcuts(choice); + + if (choice == 1) { + filters.status_count = 0; + filters.method_count = 0; + filters.ip_count = 0; + filters.time_count = 0; + filters.user_agent_count = 0; + filters.url_count = 0; + filters.combination_mode = 0; + filters.annotation_flag_filter_enabled = 0; + filters.annotation_count = 0; + + printf("Alle Filter zurückgesetzt.\n"); + } else if (choice == 2) { + printf("Zurücksetzen abgebrochen.\n"); + } else if (choice == -2 || choice == -3) { + return; + } else if (choice != -1) { + printf("ERROR: Ungültige Auswahl! Bitte wählen Sie 1-2 oder b/m/q.\n"); + } +} + +void menu_filter_management(){ + int choice = 0; + int supress_preview = 0; + // Standardnavigation aus read_menu_input + while (choice != -2 && choice != -3) { + if (supress_preview==0){ + show_status(); + } + supress_preview = 0; + + printf("\nFILTER VERWALTEN\n"); + printf("1. Filter hinzufügen\n"); + printf("2. Filter löschen\n"); + printf("3. Filter-Modus ändern (AND/OR)\n"); + printf("4. Alle Filter zurücksetzen\n"); + printf("5. Filter-Dokumentation anzeigen\n"); + printf("Navigation: [b]Zurück [m]Hauptmenü [q]Beenden\n"); + printf("Auswahl: "); + + choice = read_menu_input(); + choice = handle_menu_shortcuts(choice); + + if (choice == 1) { + int sub_result = menu_set_filters(); + if (sub_result == -3) return; + } else if (choice == 2) { + menu_delete_filters(); + } else if (choice == 3) { + menu_filter_mode(); + } else if (choice == 4) { + menu_reset_filters(); + } else if (choice == 5) { + print_filter_examples(); + supress_preview = 1; + } else if (choice == -2) { + return; + } else if (choice == -3) { + return; + } else if (choice != -1) { + printf("ERROR: Ungültige Auswahl! Bitte wählen Sie 1-5 oder b/m/q.\n"); + } + } +} + +void menu_show_entries(){ + int choice = 0; + int supress_preview = 0; + // Standardnavigation aus read_menu_input() + while (choice != -2 && choice != -3) { + if (supress_preview == 0) { + show_status(); + } + supress_preview = 0; + + int filtered_count = count_filtered_entries(); + printf("\nDATEN ANZEIGEN UND EXPORTIEREN\n"); + printf("Verfügbare Einträge: %d (gefiltert von %d)\n\n", filtered_count, total_entries); + + printf("1. Alle gefilterten Einträge anzeigen\n"); + printf("2. Als CSV exportieren (Timesketch-kompatibel)\n"); + printf("3. Top %d IP-Adressen anzeigen\n", TOP_X); + printf("4. Top %d User-Agents anzeigen\n", TOP_X); + printf("5. Annotierte Einträge anzeigen (temporär)\n"); + printf("Navigation: [b]Zurück [m]Hauptmenü [q]Beenden\n"); + printf("Auswahl: "); + + choice = read_menu_input(); + choice = handle_menu_shortcuts(choice); + + if (choice == 1 ) { + if (filtered_count > 1000) { + printf("\nWARNING: Die Anzeige von %d Einträgen in der Kommandozeile ist unübersichtlich.\n", filtered_count); + printf("Empfehlung: Verwenden Sie den CSV-Export für große Datenmengen.\n\n"); + printf("1. Trotzdem anzeigen\n"); + printf("2. Abbrechen\n"); + + int confirm = safe_read_integer("Auswahl: ", 1, 2); + if (confirm != 1) { + printf("Anzeige abgebrochen.\n"); + continue; + } + } + supress_preview = 1; + show_filtered_entries(0); + } else if (choice == 2) { + export_filtered_entries(0); + } else if (choice == 3) { + show_top_x_ips(); + supress_preview = 1; + } else if (choice == 4) { + show_top_user_agents(); + supress_preview = 1; + } else if (choice == 5){ + show_annotated_entries(); + supress_preview = 1; + } else if (choice == -2) { + return; + } else if (choice == -3) { + return; + } else if (choice != -1) { + printf("ERROR: Ungültige Auswahl! Bitte wählen Sie 1-4 oder b/m/q.\n"); + } + } +} + +// Funktionen zum setzen der Filter (existierende Datenstrukturen) +void add_parsed_status_filter(char* value, int filter_exclude_flag) { + if (filters.status_count >= MAX_FILTERS) { + printf("WARNING: MAX_FILTERS überschritten, ignoriere: %s\n", value); + return; + } + // Kovertierung des Statuscodes zu long mit Error handling + char* endptr; + int status_code = strtol(value, &endptr, 10); + if (*endptr != '\0'){ + printf("ERROR: Ungültiger Wert im Statuscode-Filter: %s", value); + } + if (status_code < 100 || status_code > 599) { + printf("WARNING: Invalid status code: %s (must be 100-599)\n", value); + return; + } + + // setzen des Filters + filters.status_filters[filters.status_count].code = status_code; + filters.status_filters[filters.status_count].filter_exclude_flag = filter_exclude_flag; + filters.status_count++; + + if (flag_verbose) printf("DEBUG: Filter hinzugefügt: %s%d\n", filter_exclude_flag == 1 ? "!" : "", status_code); +} + +void add_parsed_ip_filter(char* value, int filter_exclude_flag) { + if (filters.ip_count >= MAX_FILTERS) { + printf("WARNING: MAX_FILTERS überschritten, ignoriere: %s\n", value); + return; + } + + // einfache Plausibilitätsprüfung hinsichtlich der Länge + if (strlen(value) >= sizeof(filters.ip_filters[0].ip_address)) { + printf("WARNING: IP-Adresse zu lang: %s\n", value); + return; + } + + // setzen des Filters + strcpy(filters.ip_filters[filters.ip_count].ip_address, value); + filters.ip_filters[filters.ip_count].filter_exclude_flag = filter_exclude_flag; + filters.ip_count++; + + if (flag_verbose) printf("DEBUG: IP-Adressfilter hinzugefügt: %s%s\n", filter_exclude_flag == 1 ? "!" : "", value); +} + +// gleiche Mechanik wie bei IP-Adresse +void add_parsed_method_filter(char* value, int filter_exclude_flag) { + if (filters.method_count >= MAX_FILTERS) { + printf("WARNING: MAX_FILTERS überschritten, ignoriere: %s\n", value); + return; + } + + if (strlen(value) >= sizeof(filters.method_filters[0].pattern)) { + printf("WARNING: Methoden-Filterwert zu lang: %s\n", value); + return; + } + + strcpy(filters.method_filters[filters.method_count].pattern, value); + filters.method_filters[filters.method_count].filter_exclude_flag = filter_exclude_flag; + filters.method_count++; + + if (flag_verbose) printf("DEBUG: Methoden-Filter hinzugefügt: %s%s\n", filter_exclude_flag == 1 ? "!" : "", value); +} + +// gleiche Mechanik wie bei IP-Adresse +void add_parsed_useragent_filter(char* value, int filter_exclude_flag) { + if (filters.user_agent_count >= MAX_FILTERS) { + printf("WARNING: MAX_FILTERS überschritten, ignoriere: %s\n", value); + return; + } + + if (strlen(value) >= sizeof(filters.user_agent_filters[0].pattern)) { + printf("WARNING: User agent Filterwert zu lang: %s\n", value); + return; + } + + strcpy(filters.user_agent_filters[filters.user_agent_count].pattern, value); + filters.user_agent_filters[filters.user_agent_count].filter_exclude_flag = filter_exclude_flag; + filters.user_agent_count++; + + if (flag_verbose) printf("DEBUG: User Agent Filter hinzugefügt: %s%s\n", filter_exclude_flag == 1 ? "!" : "", value); +} + +// gleiche Mechanik wie bei IP-Adresse +void add_parsed_url_filter(char* value, int filter_exclude_flag) { + if (filters.url_count >= MAX_FILTERS) { + printf("WARNING: MAX_FILTERS überschritten, ignoriere: %s\n", value); + return; + } + + if (strlen(value) >= sizeof(filters.url_filters[0].pattern)) { + printf("WARNING: URL/Payload Filterwert zu lang: %s\n", value); + return; + } + + strcpy(filters.url_filters[filters.url_count].pattern, value); + filters.url_filters[filters.url_count].filter_exclude_flag = filter_exclude_flag; + filters.url_count++; + + if (flag_verbose) printf("DEBUG: URL/Payload-Filter hinzugefügt: %s%s\n", filter_exclude_flag == 1 ? "!" : "", value); +} + +// Parsen des Timestamp-Filters ist etwas komplexer, da er in die Datenstruktur geschrieben werden muss. +void add_parsed_timerange_filter(char* value, int filter_exclude_flag) { + if (filters.time_count >= MAX_FILTERS) { + printf("WARNING: MAX_FILTERS überschritten, ignoriere: %s\n", value); + return; + } + //lokale Kopie + struct time_filter new_time_filter = {0}; + //Zur Position des :, der die Startzeit von der Endzeit trennt + char* colon_pos = strchr(value, ':'); + if (colon_pos == NULL) { + printf("ERROR: Missing ':' separator\n"); + return; + } + // ERsteze : durch Nullterminator. Das ist notwendig, damit strtok den Timestamp problemlos einlesen kann + *colon_pos = '\0'; + //Für jeden Datenpunkt: Einlesen bis zum -, sowie Error handling, da atoi gar nix macht, wenn das Token nicht geparsed werden konnte + char* token = strtok(value, "-"); + if (!token) return; + int start_year = atoi(token); + if (start_year < 1970 || start_year > 2100) { + printf("ERROR: Startjahr außerhalb des möglichen Bereichs: %d\n", start_year); + return; + } + + token = strtok(NULL, "-"); + if (!token) return; + int start_month = atoi(token); + if (start_month < 1 || start_month > 12) { + printf("ERROR: Startmonat außerhalb des möglichen Bereichs: %d\n", start_month); + return; + } + + token = strtok(NULL, "-"); + if (!token) return; + int start_day = atoi(token); + if (start_day < 1 || start_day > 31) { + printf("ERROR: Starttag außerhalb des möglichen Bereichs: %d\n", start_day); + return; + } + + token = strtok(NULL, "-"); + if (!token) return; + int start_hour = atoi(token); + if (start_hour < 0 || start_hour > 23) { + printf("ERROR: Startstunde außerhalb des möglichen Bereichs: %d\n", start_hour); + return; + } + + token = strtok(NULL, "-"); + if (!token) return; + int start_minute = atoi(token); + if (start_minute < 0 || start_minute > 59) { + printf("ERROR: Startminute außerhalb des möglichen Bereichs: %d\n", start_minute); + return; + } + + token = strtok(NULL, "-"); + if (!token) return; + int start_second = atoi(token); + if (start_second < 0 || start_second > 59) { + printf("ERROR: Startsekunde außerhalb des möglichen Bereichs: %d\n", start_second); + return; + } + + token = strtok(colon_pos+1, "-"); + if (!token) return; + int end_year = atoi(token); + if (end_year < 1970 || end_year > 2100) { + printf("ERROR: Endjahr außerhalb des möglichen Bereichs: %d\n", end_year); + return; + } + + token = strtok(NULL, "-"); + if (!token) return; + int end_month = atoi(token); + if (end_month < 1 || end_month > 12) { + printf("ERROR: Endmonat außerhalb des möglichen Bereichs: %d\n", end_month); + return; + } + + token = strtok(NULL, "-"); + if (!token) return; + int end_day = atoi(token); + if (end_day < 1 || end_day > 31) { + printf("ERROR: Endtag außerhalb des möglichen Bereichs: %d\n", end_day); + return; + } + + token = strtok(NULL, "-"); + if (!token) return; + int end_hour = atoi(token); + if (end_hour < 0 || end_hour > 23) { + printf("ERROR: Endstunde außerhalb des möglichen Bereichs: %d\n", end_hour); + return; + } + + token = strtok(NULL, "-"); + if (!token) return; + int end_minute = atoi(token); + if (end_minute < 0 || end_minute > 59) { + printf("ERROR: Endminute außerhalb des möglichen Bereichs: %d\n", end_minute); + return; + } + + token = strtok(NULL, "-"); + if (!token) return; + int end_second = atoi(token); + if (end_second < 0 || end_second > 59) { + printf("ERROR: Endsekunde außerhalb des möglichen Bereichs: %d\n", end_second); + return; + } + + // integer-Variablen in die lokale Datenstruktur schreiben + new_time_filter.start_time.year = start_year; + new_time_filter.start_time.month = start_month; + new_time_filter.start_time.day = start_day; + new_time_filter.start_time.hour = start_hour; + new_time_filter.start_time.minute = start_minute; + new_time_filter.start_time.second = start_second; + + new_time_filter.end_time.year = end_year; + new_time_filter.end_time.month = end_month; + new_time_filter.end_time.day = end_day; + new_time_filter.end_time.hour = end_hour; + new_time_filter.end_time.minute = end_minute; + new_time_filter.end_time.second = end_second; + + new_time_filter.filter_exclude_flag = filter_exclude_flag; + + // Logik hier: der neue Filter wird stets an einen neuen Index geschrieben. Dieser ergibt sich aus der aktuellen ANZAHL der existierenden Zeitfilter. Das funktioniert, weil der index bei 0 beginnt + filters.time_filters[filters.time_count] = new_time_filter; + filters.time_count++; + + if (flag_verbose) printf("DEBUG: Zeitraum-Filter hinzugefügt (%s): %04d-%02d-%02d %02d:%02d:%02d bis %04d-%02d-%02d %02d:%02d:%02d\n", + filter_exclude_flag == 1 ? "ausschließen" : "einschließen", + new_time_filter.start_time.year, new_time_filter.start_time.month, new_time_filter.start_time.day, + new_time_filter.start_time.hour, new_time_filter.start_time.minute, new_time_filter.start_time.second, + new_time_filter.end_time.year, new_time_filter.end_time.month, new_time_filter.end_time.day, + new_time_filter.end_time.hour, new_time_filter.end_time.minute, new_time_filter.end_time.second); +} + +// recht einfache Mechanik für den Bool´schen Filter für annotierte Einträge +void add_parsed_annotated_filter(char* value, int filter_exclude_flag) { + if (strcmp(value, "true") == 0) { + filters.annotation_flag_filter.annotation_flag_is_present = 1; + filters.annotation_flag_filter.filter_exclude_flag = filter_exclude_flag; + filters.annotation_flag_filter_enabled = 1; + if (flag_verbose) printf("DEBUG: Annotations-Flag-Filter hinzugefügt: %s%s\n", filter_exclude_flag == 1 ? "!" : "", value); + // falls doch mal jemand false eingibt + } else if (strcmp(value, "false") == 0) { + filters.annotation_flag_filter.annotation_flag_is_present = 0; + filters.annotation_flag_filter.filter_exclude_flag = filter_exclude_flag; + filters.annotation_flag_filter_enabled = 1; + if (flag_verbose) printf("DEBUG: Annotations-Flag-Filter hinzugefügt: %s%s\n", filter_exclude_flag == 1 ? "!" : "", value); + } else { + printf("WARNING: Ungültiger Wert für --annotated Filter: %s (nur 'true' unterstützt)\n", value); + } +} + +// Wieder gleiche Mechanik wie beim User Agent etc +void add_parsed_annotation_filter(char* value, int filter_exclude_flag) { + if (filters.annotation_count >= MAX_FILTERS) { + printf("WARNING: MAX_FILTERS überschritten, ignoriere: %s\n", value); + return; + } + + if (strlen(value) >= sizeof(filters.annotation_filters[0].pattern)) { + printf("WARNING: Annotations-Filterwert zu lang: %s\n", value); + return; + } + + strcpy(filters.annotation_filters[filters.annotation_count].pattern, value); + filters.annotation_filters[filters.annotation_count].filter_exclude_flag = filter_exclude_flag; + filters.annotation_count++; + + if (flag_verbose) printf("DEBUG: Annotations-Filter hinzugefügt: %s%s\n", + filter_exclude_flag == 1 ? "!" : "", value); +} + +// Funktion zum Parsen der Filter-Werte, die mit --= übergeben werden. +// values_str sind die Werte hinter dem =, filter_type die Werte vor dem = +// filter_type wird von parse_filter_argument() übergeben +void parse_filter_values(char* values_str, char* filter_type) { + char values_local[1024]; + // Werte in lokale Variable einlesen, Nullterminator setzen + strncpy(values_local, values_str, sizeof(values_local) - 1); + values_local[sizeof(values_local) - 1] = '\0'; + + // Einlesen der Werte mit strtok. Hier wird das erste Token gesetzt, damit die exit condition der while-Schleife nicht triggert. + // strtok liest einen string in einen Pointer bis zu einem spezifizierten Delimiter ein. Die gelesenen Bytes werden aus dem Input entfernt. + char* token = strtok(values_local, ","); + while (token != NULL) { + // Sollte der Nutzer Leerzeichen verwendet haben, müssen diese übersprungen werden + while (*token == ' ') token++; + // setzen des Modus, Standard inklusiv + int filter_exclude_flag = 0; + // ..mit !-Präfix exklusiv. + if (*token == '!') { + filter_exclude_flag = 1; + token++; // den Pointer vom ! weiteriterieren, dieser ist nicht Teil des Filters + } + + if (strlen(token) > 0) { + // wenn das token Werte hat, werden die entsprechenden Funktionen aufgerufen, die die Filter setzen + if (strcmp(filter_type, "status") == 0) { + add_parsed_status_filter(token, filter_exclude_flag); + } else if (strcmp(filter_type, "ip") == 0) { + add_parsed_ip_filter(token, filter_exclude_flag); + } else if (strcmp(filter_type, "method") == 0) { + add_parsed_method_filter(token, filter_exclude_flag); + } else if (strcmp(filter_type, "useragent") == 0) { + add_parsed_useragent_filter(token, filter_exclude_flag); + } else if (strcmp(filter_type, "url") == 0) { + add_parsed_url_filter(token, filter_exclude_flag); + } else if (strcmp(filter_type, "timerange") == 0) { + add_parsed_timerange_filter(token, filter_exclude_flag); + } else if (strcmp(filter_type, "annotated") == 0) { + add_parsed_annotated_filter(token, filter_exclude_flag); + } else if (strcmp(filter_type, "annotation") == 0) { + add_parsed_annotation_filter(token, filter_exclude_flag); + } + } + // nächste Iteration - nächstes token einlesen, damit die while-Schleife weiteriteriert + token = strtok(NULL, ","); + } +} + +// Filter-Argument Parser +int parse_filter_argument(char* arg) { + if (!starts_with(arg, "--")) { + return 0; + } + + // = finden, strchr gibt den Pointer auf das = zurück + char* equals_pos = strchr(arg, '='); + if (equals_pos == NULL) { + printf("WARNING: Ungültiges Filter-Format, kein '=' gefunden: %s\n", arg); + return 0; + } + + //int filterstr_start = arg -2; + // filter-Typ parsen: 1. Länge des Strings errechnen (Position des '=' abzüglich Startposition des Strings, abzüglich 2 (für die '--' am Anfang)) + int filterstr_length = equals_pos - arg -2; + // 2. + char filter_type[50]; + strncpy(filter_type, arg +2, filterstr_length); + filter_type[filterstr_length] = '\0'; + + // Filter-Werte (nach den =) + char* values = equals_pos + 1; + + if (strstr(filter_type, "status") != NULL) { + parse_filter_values(values, "status"); + } else if (strstr(filter_type, "ip") != NULL) { + parse_filter_values(values, "ip"); + } else if (strstr(filter_type, "method") != NULL) { + parse_filter_values(values, "method"); + } else if (strstr(filter_type, "useragent") != NULL) { + parse_filter_values(values, "useragent"); + } else if (strstr(filter_type, "url") != NULL) { + parse_filter_values(values, "url"); + } else if (strstr(filter_type, "timerange") != NULL) { + parse_filter_values(values, "timerange"); + } else if (strstr(filter_type, "annotated") != NULL) { + parse_filter_values(values, "annotated"); + } else if (strstr(filter_type, "annotation") != NULL) { + parse_filter_values(values, "annotation"); + } else if (strstr(filter_type, "mode") != NULL) { + if (strstr(values, "and") != NULL || strstr(values, "AND") != NULL) { + filters.combination_mode = 0; + if (flag_verbose) printf("DEBUG: AND-Modus gesetzt\n"); + } else if (strstr(values, "or") != NULL || strstr(values, "OR") != NULL) { + filters.combination_mode = 1; + if (flag_verbose) printf("DEBUG: OR-Modus gesetzt\n"); + } else { + printf("WARNING: ungültiger Modus-Wert: %s ('and' oder 'oder' möglich)\n", values); + } + } else { + printf("WARNING: Unbekannter Filtertyp: %s\n", filter_type); + return 0; + } + + return 1; +} + + +// DISCLAIMER: KI-generiert +void print_help(char* binary) { + printf("\nNGINX EXAMINATOR\n"); + printf("Verwendung:\n"); + printf(" %s -i Interaktiver Modus (Filter/Analyse/Export)\n", binary); + printf(" %s -e Export generieren\n", binary); + printf(" %s -f [FILTER...] Mit Kommandozeilen-Filtern\n", binary); + printf(" %s -h Diese Hilfe anzeigen\n", binary); + + printf("\nArgumente:\n"); + printf(" Pfad zu einer einzelnen *.log Datei ODER zu einem Ordner,\n"); + printf(" der eine oder mehrere *.log / *.log.N Dateien enthält.\n"); + + printf("\nFlags:\n"); + printf(" -i Startet interaktiven Modus mit Filtern (Status, Methode, IP, Zeitraum,\n"); + printf(" User-Agent, URL-Teilstring, Annotationen), Vorschau, Statistiken und CSV-Export (Timesketch).\n"); + printf(" -e Generiert Timesketch-kompatible CSV-Datei, nimmt optional Dateinamen entgegen.\n"); + printf(" -f Aktiviert Kommandozeilen-Filter. Muss von Filter-Argumenten gefolgt werden.\n"); + printf(" -h Zeigt diese Hilfe an.\n"); + + printf("\nKOMMNDOZEILEN-FILTER (nur mit -f Flag):\n"); + printf(" --status=CODE[,CODE...] HTTP-Status-Codes (z.B. 200,404,500)\n"); + printf(" --ip=ADRESSE[,ADRESSE...] IP-Adressen (exakte Übereinstimmung)\n"); + printf(" --method=METHODE[,METHODE...] HTTP-Methoden (z.B. GET,POST,ATYPICAL)\n"); + printf(" --useragent=TEXT[,TEXT...] User-Agent Teilstrings (z.B. bot,crawler)\n"); + printf(" --url=PFAD[,PFAD...] URL-Pfad Teilstrings (z.B. .git,.php,wp-)\n"); + printf(" --annotated=true Einträge mit/ohne Annotationen (true oder !true)\n"); + printf(" --annotation=TEXT[,TEXT...] Annotations-Teilstrings (z.B. 'Long Payload')\n"); + printf(" --timerange=START:END[,...] Zeiträume (Format: YYYY-MM-DD-HH-MM-SS:YYYY-MM-DD-HH-MM-SS)\n"); + printf(" --mode=MODE Filtermodus: 'and' oder 'or' (Standard: and)\n"); + + printf("\nFILTER-SYNTAX:\n"); + printf(" Einschluss: Wert (nur Einträge MIT diesem Wert)\n"); + printf(" Ausschluss: !Wert (alle Einträge OHNE diesen Wert)\n"); + printf(" Mehrere: Wert1,Wert2 (kommagetrennt, keine Leerzeichen)\n"); + printf(" Gemischt: Wert1,!Wert2 (Wert1 einschließen, Wert2 ausschließen)\n"); + + printf("\nZEITRAUM-SYNTAX:\n"); + printf(" Format: YYYY-MM-DD-HH-MM-SS:YYYY-MM-DD-HH-MM-SS\n"); + printf(" Beispiel: 2025-08-31-08-00-00:2025-08-31-18-00-00\n"); + printf(" Ausschluss: !2025-08-31-02-00-00:2025-08-31-06-00-00\n"); + printf(" Mehrere: Start1:End1,!Start2:End2,Start3:End3\n"); + + printf("\nFILTER-LOGIK:\n"); + printf(" - Ausschluss-Filter (!) haben IMMER Vorrang vor Einschluss-Filtern\n"); + printf(" - AND-Modus: ALLE Einschluss-Filter pro Kategorie müssen zutreffen\n"); + printf(" - OR-Modus: MINDESTENS EIN Einschluss-Filter pro Kategorie muss zutreffen\n"); + printf(" - Ausschluss-Filter arbeiten kategorie-intern immer im OR-Modus\n"); + + printf("\nUnterstützte Eingaben:\n"); + printf(" - Normale NGINX-Access-Logs: *.log\n"); + printf(" - Rotierte Logs: *.log.1, *.log.2, ... (rein textbasiert)\n"); + printf(" - GZIP-Archive (*.gz) werden automatisch dekomprimiert\n"); + + printf("\nErwartetes NGINX-Logformat (default `log_format main`):\n"); + printf(" log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n"); + printf(" '$status $body_bytes_sent \"$http_referer\" '\n"); + printf(" '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n"); + + printf("\nBeispielzeile (eine Zeile pro Request):\n"); + printf(" 0.0.0.0 - - [31/Aug/2025:00:11:42 +0000] \"GET /.git/config HTTP/1.1\" 400 255 \"-\" \"Mozilla/5.0\" \"-\"\n"); + + printf("\nCSV-Export (Timesketch-kompatibel):\n"); + printf(" Spalten: datetime, message timestamp_desc, ip_address, method, url_path, status_code,\n"); + printf(" bytes_sent, user_agent, source_file, parsing_timestamp, tag\n"); + + printf("\nAnnotationen:\n"); + printf(" - Automatische Erkennung verdächtiger Muster (z.B. 'Long Payload')\n"); + printf(" - Filterbar über --annotated und --annotation Parameter\n"); + printf(" - Sichtbar in interaktivem Modus und CSV-Export\n"); + + printf("\nHinweise & Einschränkungen:\n"); + printf(" - Parser erwartet das obige Standardformat. Abweichungen können zum Abbruch führen.\n"); + printf(" - Zeitzone aus dem Log wird gelesen, aber intern als einfache Felder verarbeitet.\n"); + printf(" - ATYPICAL-Methode: für fehlerhafte/binäre Requests innerhalb der \"request\"-Spalte.\n"); +} + +int main(int argc, char* argv[]) { + if (argc < 2) { + print_help(argv[0]); + return 1; + } + + printf("\nNGINX EXAMINATOR\n"); + + // Dateipfad: wenn nicht angegeben, wird /var/log/nginx (Standardpfad) untersucht + char* input_path; + int arg_offset = 1; // Offset für die args + + // Prüfen des ersten Zeichens des ersten Arguments - Pfad oder Flag? + if (argv[1][0] == '-') { + // Ist ein Flag - Standardpfad, Offset bleibt bei 1 + input_path = "/var/log/nginx/"; + arg_offset = 1; + } else { + input_path = argv[1]; + arg_offset = 2; // Offset inkrementieren, Dateipfad schiebt die args nach hinten + } + + + int flag_interactive = 0; + int flag_export = 0; + int flag_help = 0; + // int flag_verbose = 0; - global definiert + + char export_filename[90]; + int flag_has_filename = 0; + + allocate_initial_memory(); + + if (argc >= 2){ + // hier wird das offset angewendet + for (int i=arg_offset; i +#include +#include +#include // library für Interaktion mit Ordnerstrukturen +#include // library für is_directory: Unterscheidung zwischen Dateien und Ordnern +#include // um aktuelle Zeit zu generieren +#include "gzunpack.h" + +#define INITIAL_ENTRIES 1000 // globale Variable zur initialen Speicherallokation in allocate_initial_memory(). Wird falls nötig um GROWTH_FACTOR erweitert +#define GROWTH_FACTOR 1.1 // wird in mem_expand_dynamically() genutzt, um den Speicher zu vergrößern +#define MAX_FILTERS 100 +#define MAX_REQUEST_LENGTH 8192 // das hohe Limit ist erforderlich, da teilweise ausufernde JSON-Requests in nginx auflaufen können. + +// struct für die Darstellung von Timestamps. Die granulare Trennung in verschiedene int-Werte macht die spätere Verarbeitung modular anpassbar/erweiterbar und erleichtert die Verarbeitung. +struct simple_time { + int day; + int month; + int year; + int hour; + int minute; + int second; +}; + +// Struktur für die Darstellung eines Standard-NGINX-Logeintrags. +struct log_entry { + char ip_address[50]; // ausreichende Längenbegrenzung für IP-Adressen. Könnte theoretisch auch ipv6 (ungetestet) + char request_method[10]; // GET, POST, PUT, DELETE, PROPFIND ... + char url_path[MAX_REQUEST_LENGTH]; // Pfade können lang werden, insbesodere bei base64-Strings wie oft in Malware verwendet + int status_code; + int bytes_sent; + struct simple_time time; + char referrer[128]; + char user_agent[256]; + char source_file[256]; + char parsing_timestamp[32]; +}; + +// Struktur für einen Status-Filtereintrag mit Inhalt & Modus +struct status_filter { + int code; + int filter_exclude_flag; +}; + +struct method_filter { + char pattern[10]; + int filter_exclude_flag; +}; + +// für IP-Adressen +struct ip_filter { + char ip_address[50]; + int filter_exclude_flag; +}; + +// Filter für User-Agent +struct user_agent_filter { + char pattern[256]; + int filter_exclude_flag; +}; + +// Filter für URL-Pfad/Request +struct url_filter { + char pattern[MAX_REQUEST_LENGTH]; + int filter_exclude_flag; +}; + +// Struktur zum erhalten aller Filtereinträge, kann im Dialogbetrieb bearbeitet werden. Mit Zähler. +struct filter_system { + struct status_filter status_filters[MAX_FILTERS]; + int status_count; + + struct method_filter method_filters[MAX_FILTERS]; + int method_count; + + struct ip_filter ip_filters[MAX_FILTERS]; + int ip_count; + + struct user_agent_filter user_agent_filters[MAX_FILTERS]; + int user_agent_count; + + struct url_filter url_filters[MAX_FILTERS]; + int url_count; +}; + +// Initialisierung eines Arrays für die Logeinträge und weiterer Startvariablen +struct log_entry *all_entries = NULL; +int max_entries = 0; +int total_entries = 0; +struct filter_system filters = {0}; +// für -v option +int flag_verbose = 0; + +// Hilfsfunktion für die Erkennung von Leerzeichen +int is_space(char c) { + return (c == ' ' || c == '\t'); +} + +//Hilfsfunktion zum Prüfen, ob ein String mit einem bestimmten Präfix beginnt. Nötig für das Parsen der Filter in der main()-Funktion +int starts_with(char* str, char* prefix) { + //positiver Vergleich gibt bei strncmp 0 aus - daher prüfen ob == 0, um 1 bei positiver Prüfung zu erhalten + // strncmp statt strcmp, da nur die ersten Bytes beider Strings geprüft werden (Anzahl: drittes Argument) + return strncmp(str, prefix, strlen(prefix)) == 0; +} + +// Hilfsfunktion zum Überspringen von Leerzeichen, gibt den Pointer für das nächste nicht-Leerzeichen zurück. Nötig für Parser. +char* skip_spaces(char* str) { + while (is_space(*str)) { + str++; + } + return str; +} + +// Kopiert einen Eingabestring von einem Quellbereich zu einem Zielbereich, bis ein Leerzeichen (oder Nullterminator) erreicht wird oder die max. Zeilenlänge nicht überschritten wird +void copy_until_space(char* destination, char* source, int max_length) { + int i = 0; + while (source[i] != ' ' && source[i] != '\0' && i < max_length - 1) { + destination[i] = source[i]; + i++; + } + destination[i] = '\0'; +} + +// NGINX speichert Timestamps mit Monatskürzel. Umwandlung in Zahlen für maschinelle Verarbeitung. +int month_name_to_number(char* month_name) { + if (strncmp(month_name, "Jan", 3) == 0) return 1; + if (strncmp(month_name, "Feb", 3) == 0) return 2; + if (strncmp(month_name, "Mar", 3) == 0) return 3; + if (strncmp(month_name, "Apr", 3) == 0) return 4; + if (strncmp(month_name, "May", 3) == 0) return 5; + if (strncmp(month_name, "Jun", 3) == 0) return 6; + if (strncmp(month_name, "Jul", 3) == 0) return 7; + if (strncmp(month_name, "Aug", 3) == 0) return 8; + if (strncmp(month_name, "Sep", 3) == 0) return 9; + if (strncmp(month_name, "Oct", 3) == 0) return 10; + if (strncmp(month_name, "Nov", 3) == 0) return 11; + if (strncmp(month_name, "Dec", 3) == 0) return 12; + return 1; +} + +// Speicher freigeben und mit 0 überschreiben (Prävention von use-after-free-Schwachstelle) +void cleanup_memory(){ + if (all_entries != NULL) { + printf("\nDEBUG: %lu Bytes Speicher werden freigegeben\n", (unsigned long)(max_entries * sizeof(struct log_entry))); + free(all_entries); + all_entries = NULL; + } + max_entries = 0; + total_entries = 0; +} + +// Standardfunktion zum Leeren des Input Buffers +void clear_input_buffer(){ + int c; + while ((c = getchar()) != '\n' && c != EOF) { + } +} + +// sauberes Schließen und bereinigen bei Fehlerstatus, sofern Speicher nicht alloziert werden kann +void cleanup_and_exit(){ + if (flag_verbose) printf("DEBUG: Programmende. Speicher wird freigegeben und mit NULL überschrieben.\n"); + cleanup_memory(); + exit(1); +} + +// Erweiterung des Speichers für dynamische Speicherallokation +void mem_expand_dynamically(){ + // total_entries werden beim parsen am Anfang gezählt (load_regular_file()), max_entries werden initial festgelegt + if (total_entries >= max_entries) { + int old_max = max_entries; + max_entries = max_entries * GROWTH_FACTOR; + + if (flag_verbose) printf("DEBUG: Dynamische Speichererweiterung von %d auf %d Einträge um Faktor %f\n", old_max, max_entries, GROWTH_FACTOR); + + struct log_entry *new_ptr = realloc(all_entries, max_entries * sizeof(struct log_entry)); + + if (new_ptr == NULL) { + printf("ERROR: Speicher konnte nicht auf %d Einträge erweitert werden, ..\n", max_entries); + printf("ERROR: Benötigter Speicher: %lu Bytes\n", (unsigned long)(max_entries * sizeof(struct log_entry))); + cleanup_and_exit(); + } + + all_entries = new_ptr; + if (flag_verbose) printf("DEBUG: Speicher erfolgreich erweitert auf %lu Bytes\n", (unsigned long)(max_entries * sizeof(struct log_entry))); + } +} + +void allocate_initial_memory(){ + max_entries = INITIAL_ENTRIES; // Startwert 1000, globale Variable + all_entries = malloc(max_entries * sizeof(struct log_entry)); + + if (all_entries == NULL) { + printf("ERROR: Konnte %d Einträge nicht allozieren, ..\n", max_entries); + printf("ERROR: %lu Bytes\n", (unsigned long)(max_entries * sizeof(struct log_entry))); + exit(1); // cleanup_and_exit() nicht nötig, da der Speicherbereich nicht beschrieben wurde - use-after-free unproblematisch + } + + if (flag_verbose) printf("DEBUG: Speicher erfolgreich alloziert für %d Log-Einträge (%lu Bytes)\n", max_entries, (unsigned long)(max_entries * sizeof(struct log_entry))); +} + +void get_current_timestamp(char* buffer, int buffer_size) { + time_t raw_time; + struct tm *time_info; + + time(&raw_time); + time_info = localtime(&raw_time); + + if (time_info != NULL) { + strftime(buffer, buffer_size, "%Y-%m-%d %H:%M:%S", time_info); + } else { + snprintf(buffer, buffer_size, "UNKNOWN"); + } +} + +// Hilfsfunktion zum Prüfen, ob es sich beim Pfad um ein Directory handelt - für rekursives Parsen +int is_directory(char* path) { + struct stat path_stat; + if (stat(path, &path_stat) != 0) { + return 0; + } + return S_ISDIR(path_stat.st_mode); +} + +// Hilfsfunktion zum prüfen, ob es sich um eine plausible nginx-Logdatei handelt (Metrik: Dateiname - BESSER: Regex oder Magic Bytes?) +int is_log_file(char* filename) { + // versteckte Dateien sowie . oder .. überspringen + if (filename[0] == '.') { + return 0; + } + + // Mögliche Bestandteile von NGINX-Logfile-Dateinamen + char* log_patterns[] = { + ".log", + "access", + "error", + "combined", + "redirect", + NULL + }; + + // Vergleich der vorhandenen Dateinamen mit den Suchmustern + for (int i = 0; log_patterns[i] != NULL; i++) { + if (strstr(filename, log_patterns[i]) != NULL) { + if ((strstr(filename, "error")!= NULL)||(strstr(filename, ".gz")!= NULL)) continue; + return 1; + } + } + + return 0; +} + +// Funktion zum suchen eines Suchbegriffs innerhalb eines Strings (lowercase) +int search_in_string(char* raw_string, char* search_string) { + char raw_string_lower[512]; // Puffer zum Speichern des zu durchsuchenden Strings + char search_string_lower[256]; // Puffer zum Speichern des Suchbegriffs + + // Konvertierung des Datensatzes zu Kleinbuchstaben + int i = 0; + // für jeden Buchstaben innerhalb des Datensatzes Verschiebung innerhalb des ASCII-Alphabets um 32 + while (raw_string[i] && i < 511) { + if (raw_string[i] >= 'A' && raw_string[i] <= 'Z') { + raw_string_lower[i] = raw_string[i] + 32; // Verschiebung im ASCII-Alphabet + } else { + raw_string_lower[i] = raw_string[i]; // alles was kein Buchstabe ist, wird beibehalten + } + i++; + } + raw_string_lower[i] = '\0'; // Nullterminator anfügen + + // gleiche Methode mit dem Suchbegriff + i = 0; + while (search_string[i] && i < 255) { + if (search_string[i] >= 'A' && search_string[i] <= 'Z') { + search_string_lower[i] = search_string[i] + 32; // Verschiebung im ASCII-Alphabet + } else { + search_string_lower[i] = search_string[i]; // nicht-Buchstaben beibehalten + } + i++; + } + search_string_lower[i] = '\0'; // Nullterminator anfügen + + // strstr()-Vergleich - gibt NULL zurück wenn nichts gefunden + char* result = strstr(raw_string_lower, search_string_lower); + + // Einfache Rückgabe: 1 wenn gefunden, 0 wenn nicht gefunden + if (result != NULL) { + return 1; + } else { + return 0; + } +} + +/* +Parser. Regex Parser und strtok haben sich als schwieriger herausgestellt, da nginx Leerzeichen-getrennte Werte in den Logs hat, aber auch Leerzeichen innerhalb der Werte vorkommen. +Daher ist das Parsing am einfachsten, wenn ein Pointer-basierter Algorithmus die Zeile Stück für Stück einliest und die Erwartungswerte in die struct schreibt. +Fehleranfällig, wenn das Logformat nicht dem Standard entspricht - das gilt aber auch für andere Parser. +*/ +// Standard-nginx-accesslog: +/* + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; +*/ +// 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" +int parse_simple_log_line(char* line, int entry_index, char* source_file) { // Nimmt den Pointer auf die Zeile und einen Index entgegen - dieser ist anfangs 0 (globale Variable) und wird pro Eintrag inkrementiert + char* current_pos = line; + // leere Zeichen am Anfang überspringen + current_pos = skip_spaces(current_pos); + + // kopieren der IP-Adresse in die globale all_entries Struktur unter gegebenen index + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + copy_until_space(all_entries[entry_index].ip_address, current_pos, sizeof(all_entries[entry_index].ip_address)); + + // weiter zum nächsten Leerzeichen + while (*current_pos != ' ' && *current_pos != '\0') current_pos++; + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + // überspringe Leerzeichen + current_pos = skip_spaces(current_pos); + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + // mehrmaliges Überspringen des Wertes, der nicht von Interesse ist, Überspringen des Leerzeichens + while (*current_pos != ' ' && *current_pos != '\0') current_pos++; + current_pos = skip_spaces(current_pos); + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + while (*current_pos != ' ' && *current_pos != '\0') current_pos++; + current_pos = skip_spaces(current_pos); + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + // Timestamp-Parsing + if (*current_pos == '[') { + current_pos++; + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + // es folgt nach und nach das Einlesen von Datum und Uhrzeit, und wiederholtes Verschieben des Pointers + all_entries[entry_index].time.day = 0; + while (*current_pos >= '0' && *current_pos <= '9') {all_entries[entry_index].time.day = all_entries[entry_index].time.day * 10 + (*current_pos - '0'); + current_pos++; + } + + if (*current_pos == '/') current_pos++; + + char month_str[4] = {0}; + int month_pos = 0; + while (*current_pos != '/' && *current_pos != '\0' && month_pos < 3) {month_str[month_pos] = *current_pos; + month_pos++; + current_pos++; + } + all_entries[entry_index].time.month = month_name_to_number(month_str); + + if (*current_pos == '/') current_pos++; + + all_entries[entry_index].time.year = 0; + while (*current_pos >= '0' && *current_pos <= '9') { + all_entries[entry_index].time.year = all_entries[entry_index].time.year * 10 + (*current_pos - '0'); + current_pos++; + } + + if (*current_pos == ':') current_pos++; + + all_entries[entry_index].time.hour = 0; + while (*current_pos >= '0' && *current_pos <= '9') { + all_entries[entry_index].time.hour = all_entries[entry_index].time.hour * 10 + (*current_pos - '0'); + current_pos++; + } + + if (*current_pos == ':') current_pos++; + + all_entries[entry_index].time.minute = 0; + while (*current_pos >= '0' && *current_pos <= '9') { + all_entries[entry_index].time.minute = all_entries[entry_index].time.minute * 10 + (*current_pos - '0'); + current_pos++; + } + + if (*current_pos == ':') current_pos++; + + all_entries[entry_index].time.second = 0; + while (*current_pos >= '0' && *current_pos <= '9') { + all_entries[entry_index].time.second = all_entries[entry_index].time.second * 10 + (*current_pos - '0'); + current_pos++; + } + // der Zeitzonen-Deskriptor wird übersprungen + while (*current_pos != ']' && *current_pos != '\0') current_pos++; + if (*current_pos == ']') current_pos++; + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + } else { + printf("ERROR: Unerwartetes Log-Format. Lediglich mit standard-nginx-accesslog kompatibel.\nDer Fehler ist beim Prüfen des Timestamps aufgetreten, dieser sollte folgendes Format haben:\n[DD/MMM/YYYY:HH:MM:SS +0000]\nLogeintrag: %s\n", line); + cleanup_and_exit(); + } + + current_pos = skip_spaces(current_pos); + // Weiter mit dem String innerhalb "", aus dem die HTTP-Methode und der URL-Pfad zu entnehmen ist + if (*current_pos == '"') { + current_pos++; + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + + // lesen der HTTP-Methode in temporäre Variable + char temp_method[50]; + copy_until_space(temp_method, current_pos, sizeof(temp_method)); + + // Längenprüfung des Methodenstrings + int is_valid_method = 1; + if (strlen(temp_method) == 0 || strlen(temp_method) > 10) { + is_valid_method = 0; + } else { + // prüfen, ob die Methode nur ASCII-Zeichen enthält + for (int i = 0; temp_method[i] != '\0'; i++) { + if (!((temp_method[i] >= 'A' && temp_method[i] <= 'Z') || + (temp_method[i] >= 'a' && temp_method[i] <= 'z'))) { + is_valid_method = 0; + break; + } + } + } + + if (is_valid_method) { + // Normal parsen: HTTP-Methode bis zum nächsten Leerzeichen einlesen und speichern + strcpy(all_entries[entry_index].request_method, temp_method); + while (*current_pos != ' ' && *current_pos != '\0') { + current_pos++; + } + current_pos = skip_spaces(current_pos); + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + // Einlesen des URL-Path bis zum abschließenden " + int i = 0; + while (*current_pos != ' ' && *current_pos != '"' && *current_pos != '\0' && i < sizeof(all_entries[entry_index].url_path) - 1) { + all_entries[entry_index].url_path[i] = *current_pos; + i++; + current_pos++; + } + all_entries[entry_index].url_path[i] = '\0'; + + while (*current_pos != '"' && *current_pos != '\0') current_pos++; + if (*current_pos == '"') { + current_pos++; + } + } else { + // in NGINX treten gelegentlich fehlerhafte Requests auf, die binäre Daten übersenden, sodass normales parsen nicht möglich ist. + // der entsprechende Eintrag wird daher mit dem String "ATYPICAL" repräsentiert + strcpy(all_entries[entry_index].request_method, "ATYPICAL"); + + // Read entire quoted content into url_path for forensic analysis + int i = 0; + while (*current_pos != '"' && *current_pos != '\0' && i < sizeof(all_entries[entry_index].url_path) - 1) { + all_entries[entry_index].url_path[i] = *current_pos; + i++; + current_pos++; + } + all_entries[entry_index].url_path[i] = '\0'; + + // zum Ende des request-strings vorarbeiten, wenn der String zu lang war. + while (*current_pos != '"' && *current_pos != '\0') { + current_pos++; + } + + if (*current_pos == '"') current_pos++; + } + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + } else { + printf("ERROR: Unerwartetes Log-Format. Lediglich mit standard-nginx-accesslog kompatibel.\nDer Fehler ist beim Prüfen der HTTP-Methode aufgetreten. Diese steht innerhalb eines Strings zusammen mit dem URL-Pfad:\n\"GET /.git/config HTTP/1.1\"\nLogeintrag: %s\n", line); + cleanup_and_exit(); + } + + current_pos = skip_spaces(current_pos); + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + // Parsen ded HTTP-Status Codes, der eine Zahl sein muss + all_entries[entry_index].status_code = 0; + while (*current_pos >= '0' && *current_pos <= '9') { + all_entries[entry_index].status_code = all_entries[entry_index].status_code * 10 + (*current_pos - '0'); + current_pos++; + } + + current_pos = skip_spaces(current_pos); + // genauso mit bytegröße der Anfrage + // 107.170.27.248 - - [31/Aug/2025:00:11:42 +0000] "GET /.git/config HTTP/1.1" 400 255 "-" "Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);" "-" + // ^ + all_entries[entry_index].bytes_sent = 0; + while (*current_pos >= '0' && *current_pos <= '9') { + all_entries[entry_index].bytes_sent = all_entries[entry_index].bytes_sent * 10 + (*current_pos - '0'); + current_pos++; + } + current_pos = skip_spaces(current_pos); + + // Parsen des Referrer-Feldes innerhalb "", wird übersprungen da nicht gespeichert + if (*current_pos == '"') { + current_pos++; // öffnendes Anführungszeichen überspringen + // Referrer-Inhalt bis zum schließenden Anführungszeichen überspringen + while (*current_pos != '"' && *current_pos != '\0') { + current_pos++; + } + if (*current_pos == '"') current_pos++; // schließendes Anführungszeichen überspringen + } else { + printf("ERROR: Unerwartetes Log-Format. Lediglich mit standard-nginx-accesslog kompatibel.\nDer Fehler ist beim Prüfen des Referrer-Feldes aufgetreten.\nLogeintrag: %s\n", line); + cleanup_and_exit(); + } + + current_pos = skip_spaces(current_pos); + // parsen des user agents innerhalb "" + if (*current_pos == '"') { + current_pos++; + int i = 0; + while (*current_pos != '"' && *current_pos != '\0' && i < sizeof(all_entries[entry_index].user_agent) - 1) { + all_entries[entry_index].user_agent[i] = *current_pos; + i++; + current_pos++; + } + all_entries[entry_index].user_agent[i] = '\0'; + if (*current_pos == '"') current_pos++; + } else { + printf("ERROR: Unerwartetes Log-Format. Lediglich mit standard-nginx-accesslog kompatibel.\nDer Fehler ist beim Prüfen des User-Agent aufgetreten. Dieser steht innerhalb eines Strings:\n\"Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);\"\nLogeintrag: %s\n", line); + cleanup_and_exit(); + } + get_current_timestamp(all_entries[entry_index].parsing_timestamp, sizeof(all_entries[entry_index].parsing_timestamp)); + // Dateinamen in das Feld schreiben - strncpy um Buffer overflow zu verhindern + strncpy(all_entries[entry_index].source_file, source_file, sizeof(all_entries[entry_index].source_file) - 1); + // strncpy setzt keinen Nullterminator, dieser muss am Ende eingefügt werden + all_entries[entry_index].source_file[sizeof(all_entries[entry_index].source_file) - 1] = '\0'; + + return 1; +} + +void load_regular_file(char* filename) { + FILE* file = fopen(filename, "r"); + if (file == NULL) { + printf("ERROR: Kann Datei '%s' nicht öffnen!\n", filename); + return; + } + printf("INFO: Lade Datei: %s\n", filename); + char line[MAX_REQUEST_LENGTH]; + int loaded_from_this_file = 0; + while (fgets(line, sizeof(line), file) != NULL) { + mem_expand_dynamically(); + if (parse_simple_log_line(line, total_entries, filename)) { + total_entries++; + loaded_from_this_file++; + } + } + fclose(file); + printf(" -> %d Einträge aus dieser Datei geladen.\n", loaded_from_this_file); +} + +// https://stackoverflow.com/questions/15417648/uncompressing-a-gz-string-in-c +void load_gz_file(char* filename) { + FILE *packedFileHandle = fopen(filename, "rb"); + if (packedFileHandle == NULL) { + printf("ERROR: Kann Datei '%s' nicht öffnen!\n", filename); + return; + } + + printf("INFO: Dekomprimiere Datei: %s\n", filename); + + // Temporäre Datei erstellen + FILE *tempFile = tmpfile(); + if (tempFile == NULL) { + printf("ERROR: Kann temporäre Datei nicht erstellen!\n"); + fclose(packedFileHandle); + return; + } + + // FileStream in temporäre Datei schreiben + gzUnpackFile(packedFileHandle, tempFile); + + // Pointer an den Beginn der temporären Datei setzen + rewind(tempFile); + + char line[MAX_REQUEST_LENGTH]; + int loaded_from_this_file = 0; + + while (fgets(line, sizeof(line), tempFile) != NULL) { + mem_expand_dynamically(); + if (parse_simple_log_line(line, total_entries, filename)) { + total_entries++; + loaded_from_this_file++; + } + } + + fclose(tempFile); + fclose(packedFileHandle); + printf(" -> %d Einträge aus dieser Datei geladen.\n", loaded_from_this_file); +} + +void load_log_file(char* path) { + total_entries = 0; + char full_path[512]; + + if (is_directory(path)) { + if (flag_verbose) printf("DEBUG: Verzeichnis erkannt: %s\n", path); + if (flag_verbose) printf("DEBUG: Suche nach .log Dateien...\n"); + + DIR* dir = opendir(path); + if (dir == NULL) { + printf("ERROR: Kann Verzeichnis '%s' nicht öffnen!\n", path); + return; + } + + struct dirent* entry; + int files_found = 0; + while ((entry = readdir(dir)) != NULL) { + char* filename = (*entry).d_name; + if (strcmp(filename, ".") == 0 || strcmp(filename, "..") == 0) { + printf("WARNING: Überspringe Datei %s, unerwartete Dateisignatur\n", filename); + continue; + } + if (strstr(filename, "error")!=NULL){ + printf("WARNING: Überspringe Datei %s, vermutlich Errorlog\n", filename); + printf("INFO: Error-Logs werden in dieser Version nicht unterstützt.\n"); + continue; + } + int path_len = strlen(path); + // Flag, um den Debug Print und den Export zu verbessern, ansonsten können // auftreten + int needs_slash = (path_len > 0 && path[path_len - 1] != '/'); + + if (is_log_file(filename)) { + (needs_slash) ? snprintf(full_path, sizeof(full_path), "%s/%s", path, filename) : snprintf(full_path, sizeof(full_path), "%s%s", path, filename); + load_regular_file(full_path); + files_found++; + } else if (strstr(filename, ".gz") != NULL) { + (needs_slash) ? snprintf(full_path, sizeof(full_path), "%s/%s", path, filename) : snprintf(full_path, sizeof(full_path), "%s%s", path, filename); + load_gz_file(full_path); + files_found++; + } + } + closedir(dir); + + if (files_found == 0) { + printf("WARNING: Keine .log Dateien im Verzeichnis gefunden.\n"); + printf(" Tipp: Für .gz Dateien verwenden Sie 'gunzip *.gz' zum Dekomprimieren\n"); + } else { + printf("INFO: Insgesamt %d .log Dateien verarbeitet.\n", files_found); + } + } else { + if (flag_verbose) printf("DEBUG: Einzelne Datei erkannt: %s\n", path); + if (strstr(path, ".gz") != NULL) { + load_gz_file(path); + } else { + load_regular_file(path); + } + } + + printf("INFO: Erfolgreich %d Einträge insgesamt geladen.\n", total_entries); + if (flag_verbose) printf("DEBUG: Aktueller Speicherverbrauch: %lu Bytes für %d Einträge\n", + (unsigned long)(max_entries * sizeof(struct log_entry)), max_entries); +} + +// Filterfunktion für den User-Agent. Nimmt den Datensatz entgegen und prüft gegen die gesetzten Filter, gibt dann 0 oder 1 zurück +int user_agent_matches(char* user_agent) { + // kein Filter gesetzt - positiver Rückgabewert + if (filters.user_agent_count == 0) return 1; + // Ausschluss-Filter, jeden iterativ prüfen + for (int i = 0; i < filters.user_agent_count; i++) { + if (filters.user_agent_filters[i].filter_exclude_flag == 1) { + if (search_in_string(user_agent, filters.user_agent_filters[i].pattern)) { + return 0; // Ausschlussfilter aktiv, User Agent gefunden - nicht anzeigen + } + } + } + // Einschlussfilter + int has_include_filters = 0; + for (int i = 0; i < filters.user_agent_count; i++) { + if (filters.user_agent_filters[i].filter_exclude_flag == 0) { + has_include_filters = 1; + if (search_in_string(user_agent, filters.user_agent_filters[i].pattern)) { + return 1; // Ausschlussfilter inaktiv, Eintrag gefunden - anzeigen + } + } + } + // Einschlussfilter vorhanden, aber keine gefunden + return !has_include_filters; +} + +// Filterfunktion für URL-Pfad. Nimmt den Datensatz entgegen und prüft gegen die gesetzten Filter, gibt dann 0 oder 1 zurück +int url_matches(char* url_path) { + // kein Filter gesetzt - positiver Rückgabewert + if (filters.url_count == 0) return 1; + // Ausschluss-Filter, jeden iterativ prüfen + for (int i = 0; i < filters.url_count; i++) { + if (filters.url_filters[i].filter_exclude_flag == 1) { + if (search_in_string(url_path, filters.url_filters[i].pattern)) { + return 0; // Ausschlussfilter aktiv, URL-Pfad gefunden - nicht anzeigen + } + } + } + // Einschlussfilter + int has_include_filters = 0; + for (int i = 0; i < filters.url_count; i++) { + if (filters.url_filters[i].filter_exclude_flag == 0) { + has_include_filters = 1; + if (search_in_string(url_path, filters.url_filters[i].pattern)) { + return 1; // Ausschlussfilter inaktiv, Eintrag gefunden - anzeigen + } + } + } + // Einschlussfilter vorhanden, aber keine gefunden + return !has_include_filters; +} + +// Filterfunktion für Zugriffsmethode. Nimmt den Datensatz entgegen und prüft gegen die gesetzten Filter, gibt dann 0 oder 1 zurück +int method_matches(char* request_method) { + // kein Filter gesetzt - positiver Rückgabewert + if (filters.method_count == 0) return 1; + // Ausschluss-Filter, jeden iterativ prüfen + for (int i = 0; i < filters.method_count; i++) { + if (filters.method_filters[i].filter_exclude_flag == 1) { + if (search_in_string(request_method, filters.method_filters[i].pattern)) { + return 0; // Ausschlussfilter aktiv, HTTP-Methode gefunden - nicht anzeigen + } + } + } + // Einschlussfilter + int has_include_filters = 0; + for (int i = 0; i < filters.method_count; i++) { + if (filters.method_filters[i].filter_exclude_flag == 0) { + has_include_filters = 1; + if (search_in_string(request_method, filters.method_filters[i].pattern)) { + return 1; // Ausschlussfilter inaktiv, Eintrag gefunden - anzeigen + } + } + } + // Einschlussfilter vorhanden, aber keine gefunden + return !has_include_filters; +} + +// Filterfunktion für Status-Code. Nimmt den Datensatz entgegen und prüft gegen die gesetzten Filter, gibt dann 0 oder 1 zurück +int status_code_matches(int status_code) { + // kein Filter gesetzt - positiver Rückgabewert + if (filters.status_count == 0) return 1; + // Ausschluss-Filter, jeden iterativ prüfen + for (int i = 0; i < filters.status_count; i++) { + if (filters.status_filters[i].filter_exclude_flag == 1) { + if (status_code == filters.status_filters[i].code) { + return 0; // Ausschlussfilter aktiv, Status-Code gefunden - nicht anzeigen + } + } + } + // Einschlussfilter + int has_include_filters = 0; + for (int i = 0; i < filters.status_count; i++) { + if (filters.status_filters[i].filter_exclude_flag == 0) { + has_include_filters = 1; + if (status_code == filters.status_filters[i].code) { + return 1; // Ausschlussfilter inaktiv, Eintrag gefunden - anzeigen + } + } + } + // Einschlussfilter vorhanden, aber keine gefunden + return !has_include_filters; +} + +// Filterfunktion für IP-Adresse. Nimmt den Datensatz entgegen und prüft gegen die gesetzten Filter, gibt dann 0 oder 1 zurück +int ip_address_matches(char* ip_address) { + // kein Filter gesetzt - positiver Rückgabewert + if (filters.ip_count == 0) return 1; + // Ausschluss-Filter, jeden iterativ prüfen + for (int i = 0; i < filters.ip_count; i++) { + if (filters.ip_filters[i].filter_exclude_flag == 1) { + if (search_in_string(ip_address, filters.ip_filters[i].ip_address)) { + return 0; // Ausschlussfilter aktiv, IP-Adresse gefunden - nicht anzeigen + } + } + } + // Einschlussfilter + int has_include_filters = 0; + for (int i = 0; i < filters.ip_count; i++) { + if (filters.ip_filters[i].filter_exclude_flag == 0) { + has_include_filters = 1; + if (search_in_string(ip_address, filters.ip_filters[i].ip_address)) { + return 1; // Ausschlussfilter inaktiv, Eintrag gefunden - anzeigen + } + } + } + // Einschlussfilter vorhanden, aber keine gefunden + return !has_include_filters; +} + +// Prüfen aller Filter, alle müssen zutreffen +int passes_filter(int entry_index) { + // AND-Verknüpfung + int status_match = status_code_matches(all_entries[entry_index].status_code); + int method_match = method_matches(all_entries[entry_index].request_method); + int ip_match = ip_address_matches(all_entries[entry_index].ip_address); + int user_agent_match = user_agent_matches(all_entries[entry_index].user_agent); + int url_match = url_matches(all_entries[entry_index].url_path); + + return status_match && ip_match && user_agent_match && method_match && url_match; +} + +// Einfacher Zähler für alle Einträge, die die Filterfunktionen bestehen +int count_filtered_entries(){ + int count = 0; + for (int i = 0; i < total_entries; i++) { + if (passes_filter(i)) { + count++; + } + } + return count; +} + +// notwendig, um konformes Timestamp-Format aus simple_time struct zu generieren. Unterstützt derzeit nur UTC +void format_iso8601_time(struct simple_time time, char* buffer, int buffer_size) { + snprintf(buffer, buffer_size, "%04d-%02d-%02dT%02d:%02d:%02d+00:00", time.year, time.month, time.day, time.hour, time.minute, time.second); +} + +void export_filtered_entries(char *filepath) { + // 90 chars +delimiter + char filename[91]; + if (filepath == NULL) { + printf("Dateiname für Timesketch-Export eingeben (ohne .csv): "); + if (scanf("%90s", filename) != 1) { + printf("ERROR: Ungültiger Dateiname!\n"); + return; + } + } else { + strncpy(filename, filepath, sizeof(filename) - 1); + filename[sizeof(filename) - 1] = '\0'; + } + + strcat(filename, ".csv"); + printf("\nINFO: Schreibe Datei %s...\n", filename); + FILE* file = fopen(filename, "w"); + if (file == NULL) { + printf("ERROR: Kann Datei '%s' nicht erstellen!\n", filename); + return; + } + + // CSV-Kopfzeile für Timesketch-Kompatibilität + fprintf(file, "datetime,message,timestamp_desc,ip_address,method,url_path,status_code,bytes_sent,user_agent,parsing_timestamp\n"); + + char iso_datetime[32]; + + for (int i = 0; i < total_entries; i++) { + if (passes_filter(i)) { + format_iso8601_time(all_entries[i].time, iso_datetime, sizeof(iso_datetime)); + fprintf(file, "%s,%s,\"NGINX Log\",%s,%s,%s,%d,%d,%s,%s\n", iso_datetime, all_entries[i].source_file, all_entries[i].ip_address, all_entries[i].request_method, all_entries[i].url_path, all_entries[i].status_code, all_entries[i].bytes_sent, all_entries[i].user_agent, all_entries[i].parsing_timestamp); + } + } + + fclose(file); + printf("INFO: Logeinträge erfolgreich als Timesketch-kompatible CSV-Datei nach '%s' exportiert.\n", filename); +} + +// Funktionen zum setzen der Filter (existierende Datenstrukturen) +void apply_status_filter(char* value, int filter_exclude_flag) { + if (filters.status_count >= MAX_FILTERS) { + printf("WARNING: MAX_FILTERS überschritten, ignoriere: %s\n", value); + return; + } + // Kovertierung des Statuscodes zu long mit Error handling + char* endptr; + int status_code = strtol(value, &endptr, 10); + if (*endptr != '\0'){ + printf("ERROR: Ungültiger Wert im Statuscode-Filter: %s", value); + } + if (status_code < 100 || status_code > 599) { + printf("WARNING: Invalid status code: %s (must be 100-599)\n", value); + return; + } + + // setzen des Filters + filters.status_filters[filters.status_count].code = status_code; + filters.status_filters[filters.status_count].filter_exclude_flag = filter_exclude_flag; + filters.status_count++; + + if (flag_verbose) printf("DEBUG: Filter hinzugefügt: %s%d\n", filter_exclude_flag == 1 ? "!" : "", status_code); +} + +void apply_ip_filter(char* value, int filter_exclude_flag) { + if (filters.ip_count >= MAX_FILTERS) { + printf("WARNING: MAX_FILTERS überschritten, ignoriere: %s\n", value); + return; + } + + // einfache Plausibilitätsprüfung hinsichtlich der Länge + if (strlen(value) >= sizeof(filters.ip_filters[0].ip_address)) { + printf("WARNING: IP-Adresse zu lang: %s\n", value); + return; + } + + // setzen des Filters + strcpy(filters.ip_filters[filters.ip_count].ip_address, value); + filters.ip_filters[filters.ip_count].filter_exclude_flag = filter_exclude_flag; + filters.ip_count++; + + if (flag_verbose) printf("DEBUG: IP-Adressfilter hinzugefügt: %s%s\n", filter_exclude_flag == 1 ? "!" : "", value); +} + +// gleiche Mechanik wie bei IP-Adresse +void apply_method_filter(char* value, int filter_exclude_flag) { + if (filters.method_count >= MAX_FILTERS) { + printf("WARNING: MAX_FILTERS überschritten, ignoriere: %s\n", value); + return; + } + + if (strlen(value) >= sizeof(filters.method_filters[0].pattern)) { + printf("WARNING: Methoden-Filterwert zu lang: %s\n", value); + return; + } + + strcpy(filters.method_filters[filters.method_count].pattern, value); + filters.method_filters[filters.method_count].filter_exclude_flag = filter_exclude_flag; + filters.method_count++; + + if (flag_verbose) printf("DEBUG: Methoden-Filter hinzugefügt: %s%s\n", filter_exclude_flag == 1 ? "!" : "", value); +} + +// gleiche Mechanik wie bei IP-Adresse +void apply_useragent_filter(char* value, int filter_exclude_flag) { + if (filters.user_agent_count >= MAX_FILTERS) { + printf("WARNING: MAX_FILTERS überschritten, ignoriere: %s\n", value); + return; + } + + if (strlen(value) >= sizeof(filters.user_agent_filters[0].pattern)) { + printf("WARNING: User agent Filterwert zu lang: %s\n", value); + return; + } + + strcpy(filters.user_agent_filters[filters.user_agent_count].pattern, value); + filters.user_agent_filters[filters.user_agent_count].filter_exclude_flag = filter_exclude_flag; + filters.user_agent_count++; + + if (flag_verbose) printf("DEBUG: User Agent Filter hinzugefügt: %s%s\n", filter_exclude_flag == 1 ? "!" : "", value); +} + +// gleiche Mechanik wie bei IP-Adresse +void apply_url_filter(char* value, int filter_exclude_flag) { + if (filters.url_count >= MAX_FILTERS) { + printf("WARNING: MAX_FILTERS überschritten, ignoriere: %s\n", value); + return; + } + + if (strlen(value) >= sizeof(filters.url_filters[0].pattern)) { + printf("WARNING: URL/Payload Filterwert zu lang: %s\n", value); + return; + } + + strcpy(filters.url_filters[filters.url_count].pattern, value); + filters.url_filters[filters.url_count].filter_exclude_flag = filter_exclude_flag; + filters.url_count++; + + if (flag_verbose) printf("DEBUG: URL/Payload-Filter hinzugefügt: %s%s\n", filter_exclude_flag == 1 ? "!" : "", value); +} + +// Funktion zum Parsen der Filter-Werte, die mit --= übergeben werden. +// values_str sind die Werte hinter dem =, filter_type die Werte vor dem = +// filter_type wird von parse_filter_argument() übergeben +void parse_filter_values(char* values_str, char* filter_type) { + char values_local[1024]; + // Werte in lokale Variable einlesen, Nullterminator setzen + strncpy(values_local, values_str, sizeof(values_local) - 1); + values_local[sizeof(values_local) - 1] = '\0'; + + // Einlesen der Werte mit strtok. Hier wird das erste Token gesetzt, damit die exit condition der while-Schleife nicht triggert. + // strtok liest einen string in einen Pointer bis zu einem spezifizierten Delimiter ein. Die gelesenen Bytes werden aus dem Input entfernt. + char* token = strtok(values_local, ","); + while (token != NULL) { + // Sollte der Nutzer Leerzeichen verwendet haben, müssen diese übersprungen werden + while (*token == ' ') token++; + // setzen des Modus, Standard inklusiv + int filter_exclude_flag = 0; + // ..mit !-Präfix exklusiv. + if (*token == '!') { + filter_exclude_flag = 1; + token++; // den Pointer vom ! weiteriterieren, dieser ist nicht Teil des Filters + } + + if (strlen(token) > 0) { + // wenn das token Werte hat, werden die entsprechenden Funktionen aufgerufen, die die Filter setzen + if (strcmp(filter_type, "status") == 0) { + apply_status_filter(token, filter_exclude_flag); + } else if (strcmp(filter_type, "ip") == 0) { + apply_ip_filter(token, filter_exclude_flag); + } else if (strcmp(filter_type, "method") == 0) { + apply_method_filter(token, filter_exclude_flag); + } else if (strcmp(filter_type, "useragent") == 0) { + apply_useragent_filter(token, filter_exclude_flag); + } else if (strcmp(filter_type, "url") == 0) { + apply_url_filter(token, filter_exclude_flag); + } + } + // nächste Iteration - nächstes token einlesen, damit die while-Schleife weiteriteriert + token = strtok(NULL, ","); + } +} + +// Filter-Argument Parser +int parse_filter_argument(char* arg) { + if (!starts_with(arg, "--")) { + return 0; + } + + // = finden, strchr gibt den Pointer auf das = zurück + char* equals_pos = strchr(arg, '='); + if (equals_pos == NULL) { + printf("WARNING: Ungültiges Filter-Format, kein '=' gefunden: %s\n", arg); + return 0; + } + + //int filterstr_start = arg -2; + // filter-Typ parsen: 1. Länge des Strings errechnen (Position des '=' abzüglich Startposition des Strings (arg), abzüglich 2 (für die '--' am Anfang)) + int filterstr_length = equals_pos - arg -2; + // 2. + char filter_type[50]; + strncpy(filter_type, arg +2, filterstr_length); + filter_type[filterstr_length] = '\0'; + + // Filter-Werte (nach den =) + char* values = equals_pos + 1; + + if (strstr(filter_type, "status") != NULL) { + parse_filter_values(values, "status"); + } else if (strstr(filter_type, "ip") != NULL) { + parse_filter_values(values, "ip"); + } else if (strstr(filter_type, "method") != NULL) { + parse_filter_values(values, "method"); + } else if (strstr(filter_type, "useragent") != NULL) { + parse_filter_values(values, "useragent"); + } else if (strstr(filter_type, "url") != NULL) { + parse_filter_values(values, "url"); + } else { + printf("WARNING: Unbekannter Filtertyp: %s\n", filter_type); + return 0; + } + + return 1; +} + +void print_help(char* binary) { + printf("NGINX-Auditor (Beleg)\n"); + printf("Nutzung: %s [Flags]\n\n", binary); + printf("Flags:\n"); + printf(" -e [Dateiname ohne Endung] Export zu Timestamp-kompatiblem CSV\n"); + printf(" -f --[Filterobjekt] Filtern mit den folgenden Optionen:\n"); + printf(" --status=[HTTP-Statuscode],[Weiterer],[...] HTTP Status Codes, z.B. 200, 404,301,...\n"); + printf(" --ip=[ip1],[ip2],[ip3] IP-Adressen\n"); + printf(" --method=[methode1],[...] HTTP-Methoden (z.B. GET,POST,...)\n"); + printf(" --useragent=[Freitext1],[...] Text im User-Agent, z.B. bot, crawler, uptime-kuma\n"); + printf(" --url=[Freitext1],[...] Text im URL-Pfad/Payload\n"); + printf(" -v Mehr Informationen auf stdout ausgeben\n"); + printf(" -h Diese Hilfe anzeigen\n"); + printf("Filter Syntaxhinweis: !Wert nutzen, um einen exklusiven Filter zu nutzen.\n"); + printf("Datei-Parsing: Unterstützt NGINX Accesslogs und Redirect-Accesslogs, auch .gz komprimierte rotierte Logs.\n"); +} + +int main(int argc, char* argv[]) { + if (argc < 2) { + print_help(argv[0]); + return 1; + } + + printf("\nNGINX EXAMINATOR\n"); + + // Dateipfad: wenn nicht angegeben, wird /var/log/nginx (Standardpfad) untersucht + char* input_path; + int arg_offset = 1; // Offset für die args + + // Prüfen des ersten Zeichens des ersten Arguments - Pfad oder Flag? + if (argv[1][0] == '-') { + // Ist ein Flag - Standardpfad, Offset bleibt bei 1 + input_path = "/var/log/nginx/"; + arg_offset = 1; + } else { + input_path = argv[1]; + arg_offset = 2; // Offset inkrementieren, Dateipfad schiebt die args nach hinten + } + int flag_export = 0; + int flag_help = 0; + // int flag_verbose = 0; - global definiert + + char export_filename[90]; + int flag_has_filename = 0; + + allocate_initial_memory(); + + if (argc >= 2){ + // hier wird das offset angewendet + for (int i=arg_offset; i