progress
This commit is contained in:
parent
a06777e754
commit
d654e32e8a
61
src/main.c
61
src/main.c
@ -1561,12 +1561,42 @@ void print_filter_examples(){
|
|||||||
printf(" > Nur menschliche, erfolgreiche GET-Anfragen\n\n");
|
printf(" > Nur menschliche, erfolgreiche GET-Anfragen\n\n");
|
||||||
|
|
||||||
printf("Zeitraum-Analyse:\n");
|
printf("Zeitraum-Analyse:\n");
|
||||||
printf(" Time='08:00-18:00' AND Status=500\n");
|
printf(" --timerange=2025-08-31-08-00-00:2025-08-31-18-00-00 AND Status=500\n");
|
||||||
printf(" > Server-Fehler nur während Geschäftszeiten\n\n");
|
printf(" > Server-Fehler nur während Geschäftszeiten\n\n");
|
||||||
|
|
||||||
|
printf("Nachtzeit ausschließen:\n");
|
||||||
|
printf(" --timerange=!2025-08-31-22-00-00:2025-09-01-06-00-00\n");
|
||||||
|
printf(" > Alle Einträge außer der Nachtzeit\n\n");
|
||||||
|
|
||||||
printf("DDoS-Verdacht:\n");
|
printf("DDoS-Verdacht:\n");
|
||||||
printf(" Status=429 OR Status=503 OR Status=500\n");
|
printf(" Status=429 OR Status=503 OR Status=500\n");
|
||||||
printf(" > Alle Überlastungs- und Fehler-Codes\n");
|
printf(" > Alle Überlastungs- und Fehler-Codes\n\n");
|
||||||
|
|
||||||
|
printf("ANNOTATIONS-FILTER:\n");
|
||||||
|
printf("Nur verdächtige Einträge:\n");
|
||||||
|
printf(" --annotated=true\n");
|
||||||
|
printf(" > Zeigt nur Einträge mit Annotationen\n\n");
|
||||||
|
|
||||||
|
printf("Bestimmte Anomalien:\n");
|
||||||
|
printf(" --annotation='Long Payload'\n");
|
||||||
|
printf(" > Nur Einträge mit verdächtig langen Anfragen\n\n");
|
||||||
|
|
||||||
|
printf("Normale Traffic-Analyse (ohne Anomalien):\n");
|
||||||
|
printf(" --annotated=!true\n");
|
||||||
|
printf(" > Schließt alle annotierten/verdächtigen Einträge aus\n\n");
|
||||||
|
|
||||||
|
printf("KOMPLEXE KOMBINATIONEN:\n");
|
||||||
|
printf("Forensik-Analyse:\n");
|
||||||
|
printf(" --timerange=2025-08-31-14-00-00:2025-08-31-16-00-00 --status=400,404,403 --annotated=true\n");
|
||||||
|
printf(" > Verdächtige Aktivitäten in kritischem Zeitfenster\n\n");
|
||||||
|
|
||||||
|
printf("Performance-Analyse:\n");
|
||||||
|
printf(" --timerange=!2025-08-31-02-00-00:2025-08-31-06-00-00 --status=200 --annotated=!true\n");
|
||||||
|
printf(" > Normaler Traffic außerhalb der Wartungszeit\n\n");
|
||||||
|
|
||||||
|
printf("Security-Monitoring:\n");
|
||||||
|
printf(" --url='.git','.env','wp-admin' --annotation='Long Payload' --mode=or\n");
|
||||||
|
printf(" > Alle bekannten Angriffsmuster und verdächtige Payloads\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
int handle_menu_shortcuts(int choice) {
|
int handle_menu_shortcuts(int choice) {
|
||||||
@ -2458,6 +2488,8 @@ int parse_filter_argument(char* arg) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// DISCLAIMER: KI-generiert
|
||||||
void print_help(char* binary) {
|
void print_help(char* binary) {
|
||||||
printf("\nNGINX EXAMINATOR\n");
|
printf("\nNGINX EXAMINATOR\n");
|
||||||
printf("Verwendung:\n");
|
printf("Verwendung:\n");
|
||||||
@ -2472,7 +2504,7 @@ void print_help(char* binary) {
|
|||||||
|
|
||||||
printf("\nFlags:\n");
|
printf("\nFlags:\n");
|
||||||
printf(" -i Startet interaktiven Modus mit Filtern (Status, Methode, IP, Zeitraum,\n");
|
printf(" -i Startet interaktiven Modus mit Filtern (Status, Methode, IP, Zeitraum,\n");
|
||||||
printf(" User-Agent, URL-Teilstring), Vorschau, Statistiken und CSV-Export (Timesketch).\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(" -e Generiert Timesketch-kompatible CSV-Datei, nimmt optional Dateinamen entgegen.\n");
|
||||||
printf(" -f Aktiviert Kommandozeilen-Filter. Muss von Filter-Argumenten gefolgt werden.\n");
|
printf(" -f Aktiviert Kommandozeilen-Filter. Muss von Filter-Argumenten gefolgt werden.\n");
|
||||||
printf(" -h Zeigt diese Hilfe an.\n");
|
printf(" -h Zeigt diese Hilfe an.\n");
|
||||||
@ -2483,6 +2515,9 @@ void print_help(char* binary) {
|
|||||||
printf(" --method=METHODE[,METHODE...] HTTP-Methoden (z.B. GET,POST,ATYPICAL)\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(" --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(" --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(" --mode=MODE Filtermodus: 'and' oder 'or' (Standard: and)\n");
|
||||||
|
|
||||||
printf("\nFILTER-SYNTAX:\n");
|
printf("\nFILTER-SYNTAX:\n");
|
||||||
@ -2491,6 +2526,12 @@ void print_help(char* binary) {
|
|||||||
printf(" Mehrere: Wert1,Wert2 (kommagetrennt, keine Leerzeichen)\n");
|
printf(" Mehrere: Wert1,Wert2 (kommagetrennt, keine Leerzeichen)\n");
|
||||||
printf(" Gemischt: Wert1,!Wert2 (Wert1 einschließen, Wert2 ausschließen)\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("\nFILTER-LOGIK:\n");
|
||||||
printf(" - Ausschluss-Filter (!) haben IMMER Vorrang vor Einschluss-Filtern\n");
|
printf(" - Ausschluss-Filter (!) haben IMMER Vorrang vor Einschluss-Filtern\n");
|
||||||
printf(" - AND-Modus: ALLE Einschluss-Filter pro Kategorie müssen zutreffen\n");
|
printf(" - AND-Modus: ALLE Einschluss-Filter pro Kategorie müssen zutreffen\n");
|
||||||
@ -2500,10 +2541,7 @@ void print_help(char* binary) {
|
|||||||
printf("\nUnterstützte Eingaben:\n");
|
printf("\nUnterstützte Eingaben:\n");
|
||||||
printf(" - Normale NGINX-Access-Logs: *.log\n");
|
printf(" - Normale NGINX-Access-Logs: *.log\n");
|
||||||
printf(" - Rotierte Logs: *.log.1, *.log.2, ... (rein textbasiert)\n");
|
printf(" - Rotierte Logs: *.log.1, *.log.2, ... (rein textbasiert)\n");
|
||||||
printf(" - GZIP-Archive (*.gz) werden NICHT direkt unterstützt.\n");
|
printf(" - GZIP-Archive (*.gz) werden automatisch dekomprimiert\n");
|
||||||
printf(" Tipp: Dekomprimieren Sie vorher, z.B.:\n");
|
|
||||||
printf(" gunzip /var/log/nginx/*.gz\n");
|
|
||||||
printf(" %s /var/log/nginx/ -i\n", binary);
|
|
||||||
|
|
||||||
printf("\nErwartetes NGINX-Logformat (default `log_format main`):\n");
|
printf("\nErwartetes NGINX-Logformat (default `log_format main`):\n");
|
||||||
printf(" log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n");
|
printf(" log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n");
|
||||||
@ -2515,13 +2553,18 @@ void print_help(char* binary) {
|
|||||||
|
|
||||||
printf("\nCSV-Export (Timesketch-kompatibel):\n");
|
printf("\nCSV-Export (Timesketch-kompatibel):\n");
|
||||||
printf(" Spalten: datetime, timestamp_desc, ip_address, method, url_path, status_code,\n");
|
printf(" Spalten: datetime, timestamp_desc, ip_address, method, url_path, status_code,\n");
|
||||||
printf(" bytes_sent, user_agent, source_file, parsing_timestamp\n");
|
printf(" bytes_sent, user_agent, source_file, parsing_timestamp, annotation\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("\nHinweise & Einschränkungen:\n");
|
||||||
printf(" - Parser erwartet das obige Standardformat. Abweichungen können zum Abbruch führen.\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(" - 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");
|
printf(" - ATYPICAL-Methode: für fehlerhafte/binäre Requests innerhalb der \"request\"-Spalte.\n");
|
||||||
printf(" - Zeitraum-Filter sind nur im interaktiven Modus verfügbar (nicht über -f).\n");
|
printf(" - Komplexe Zeitraum-Filter sind vollständig über Kommandozeile verfügbar.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user