progress
This commit is contained in:
		
							parent
							
								
									a06777e754
								
							
						
					
					
						commit
						d654e32e8a
					
				
							
								
								
									
										63
									
								
								src/main.c
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								src/main.c
									
									
									
									
									
								
							@ -1464,7 +1464,7 @@ void print_filter_args(){
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // TODO timestamp
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    // 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=");
 | 
			
		||||
@ -1561,12 +1561,42 @@ void print_filter_examples(){
 | 
			
		||||
    printf("  > Nur menschliche, erfolgreiche GET-Anfragen\n\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("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("  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) {
 | 
			
		||||
@ -2458,6 +2488,8 @@ int parse_filter_argument(char* arg) {
 | 
			
		||||
    return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// DISCLAIMER: KI-generiert
 | 
			
		||||
void print_help(char* binary) {
 | 
			
		||||
    printf("\nNGINX EXAMINATOR\n");
 | 
			
		||||
    printf("Verwendung:\n");
 | 
			
		||||
@ -2472,7 +2504,7 @@ void print_help(char* binary) {
 | 
			
		||||
 | 
			
		||||
    printf("\nFlags:\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("  -f   Aktiviert Kommandozeilen-Filter. Muss von Filter-Argumenten gefolgt werden.\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("  --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");
 | 
			
		||||
@ -2491,6 +2526,12 @@ void print_help(char* binary) {
 | 
			
		||||
    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");
 | 
			
		||||
@ -2500,10 +2541,7 @@ void print_help(char* binary) {
 | 
			
		||||
    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 NICHT direkt unterstützt.\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("  - 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");
 | 
			
		||||
@ -2515,13 +2553,18 @@ void print_help(char* binary) {
 | 
			
		||||
 | 
			
		||||
    printf("\nCSV-Export (Timesketch-kompatibel):\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("  - 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");
 | 
			
		||||
    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[]) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user