Traitement d'un fichier texte en c

Fermé
chedi baccari Messages postés 1 Date d'inscription samedi 3 mars 2012 Statut Membre Dernière intervention 3 mars 2012 - 3 mars 2012 à 15:23
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 - 4 mars 2012 à 18:29
Bonjour, SVP aidez moi !!!!!! voici le probleme
Vous êtes appelé par votre supérieur pour essayer de connaitre les différentes adresse IP et MAC des machines qui vous attaquent durant """une période donnée"""".
Votre supérieure vous a annoncé ces soucis car il a rencontré plusieurs fois les problèmes suivants :
La taille du fichier log du firewall est très volumineuse: la recherche de l'information est très difficile
Beaucoup d'informations dans une même ligne
Des informations redondantes .
et voici le fichier texte qu'on va utiliser
Jul 26 06:25:16 minbar kernel: IN=eth0 OUT= MAC=01:00:5e:00:00:01:00:11:5d:45:84:00:08:00 SRC=141.142.234.1 DST=224.0.0.1 LEN=28 TOS=0x00 PREC=0xC0 TTL=1 ID=22423 PROTO=2

Jul 26 06:25:18 minbar kernel: IN= OUT=eth0 SRC=141.142.234.9 DST=141.142.2.77 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=23931 DF PROTO=TCP SPT=32882 DPT=25 WINDOW=5840 RES=0x00 SYN URGP=0

Jul 26 06:25:18 minbar kernel: IN= OUT=eth0 SRC=141.142.234.9 DST=141.142.2.201 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=16693 DF PROTO=TCP SPT=32883 DPT=25 WINDOW=5840 RES=0x00 SYN URGP=0

Jul 26 06:25:21 minbar kernel: IN= OUT=eth0 SRC=141.142.234.9 DST=141.142.2.201 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=16694 DF PROTO=TCP SPT=32883 DPT=25 WINDOW=5840 RES=0x00 SYN URGP=0

Jul 26 06:26:16 minbar kernel: IN=eth0 OUT= MAC=01:00:5e:00:00:01:00:11:5d:45:84:00:08:00 SRC=141.142.234.1 DST=224.0.0.1 LEN=28 TOS=0x00 PREC=0xC0 TTL=1 ID=23230 PROTO=2

Jul 26 06:27:16 minbar kernel: IN=eth0 OUT= MAC=01:00:5e:00:00:01:00:11:5d:45:84:00:08:00 SRC=141.142.234.1 DST=224.0.0.1 LEN=28 TOS=0x00 PREC=0xC0 TTL=1 ID=24012 PROTO=2

Jul 26 06:28:17 minbar kernel: IN=eth0 OUT= MAC=01:00:5e:00:00:01:00:11:5d:45:84:00:08:00 SRC=141.142.234.1 DST=224.0.0.1 LEN=28 TOS=0x00 PREC=0xC0 TTL=1 ID=25009 PROTO=2

Jul 26 06:29:16 minbar kernel: IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0f:1f:6b:43:b4:08:00 SRC=141.142.234.67 DST=141.142.234.255 LEN=229 TOS=0x00 PREC=0x00 TTL=128 ID=25887 PROTO=UDP SPT=138 DPT=138 LEN=209

Jul 26 06:29:17 minbar kernel: IN=eth0 OUT= MAC=01:00:5e:00:00:01:00:11:5d:45:84:00:08:00 SRC=141.142.234.1 DST=224.0.0.1 LEN=28 TOS=0x00 PREC=0xC0 TTL=1 ID=25776 PROTO=2

Jul 26 06:30:17 minbar kernel: IN=eth0 OUT= MAC=01:00:5e:00:00:01:00:11:5d:45:84:00:08:00 SRC=141.142.234.1 DST=224.0.0.1 LEN=28 TOS=0x00 PREC=0xC0 TTL=1 ID=26683 PROTO=2

Jul 26 06:31:17 minbar kernel: IN=eth0 OUT= MAC=01:00:5e:00:00:01:00:11:5d:45:84:00:08:00 SRC=141.142.234.1 DST=224.0.0.1 LEN=28 TOS=0x00 PREC=0xC0 TTL=1 ID=27789 PROTO=2

Jul 26 06:32:17 minbar kernel: IN=eth0 OUT= MAC=01:00:5e:00:00:01:00:11:5d:45:84:00:08:00 SRC=141.142.234.1 DST=224.0.0.1 LEN=28 TOS=0x00 PREC=0xC0 TTL=1 ID=28940 PROTO=2

Jul 26 06:32:49 minbar kernel: IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0f:1f:6b:43:b4:08:00 SRC=141.142.234.67 DST=141.142.234.255 LEN=78 TOS=0x00 PREC=0x00 TTL=128 ID=25909 PROTO=UDP SPT=137 DPT=137 LEN=58

Jul 26 06:32:49 minbar kernel: IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0f:1f:6b:43:b4:08:00 SRC=141.142.234.67
A voir également:

1 réponse

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
4 mars 2012 à 18:29
Bonjour,
Il vous est demandé d'extraire les adresses mac et ip de chaque ligne pour facilité la recherche. Une ligne est bien souvent séparée par le caractère nouvelle ligne \n (parfois avec le retour \r qu'il suffit d'ignorer).
Une ligne :
Jul 26 06:25:16 minbar kernel: IN=eth0 OUT= MAC=01:00:5e:00:00:01:00:11:5d:45:84:00:08:00 SRC=141.142.234.1 DST=224.0.0.1 LEN=28 TOS=0x00 PREC=0xC0 TTL=1 ID=22423 PROTO=2


Créez simplement une fonction capable d'afficher la valeur de MAC et SRC à partir d'une chaîne (d'une ligne du fichier log) pouvez à la rigueur ajouter aussi le PROTO (protocole c'est pour les différencier; upd/tcp/icmp...) jetez un oeil là si nécessaire : http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml
Aidez vous des fonctions memcmp ou strncmp pour la recherche par comparaison. Trouvez le mot, exemple "MAC" si il est trouvé alors on affiche (ou on place dans un buffer) ce qui suit le caractère = et on stop lorsqu'on tombe sur un espace ou une tabulation \t (un caractère blanc).
testez dans le genre :
void recherche(char *ligne,char *mot){
    char *ptr;
    int i,n=strlen(mot);
    for(i=0;ligne[i];i++){
        ptr=&ligne[i];
        if(!strncmp(ptr,mot,n)) printf("mot !\n");
    }
}
0