IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème avec pregmatch


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2007
    Messages : 65
    Par défaut Problème avec pregmatch
    Salut,
    je veut extraire deux champs qui se trouvent dans les règles de Snort.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var = mysql_escape_string($Ligne);
    Voici le contenu de $var, c'est une règle dans un fichier .rules de Snort:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert tcp $EXTERNAL_NET any -> $HOME_NET 139 (msg:\"NETBIOS nimda RICHED20.DLL\"; content:\"R|00|I|00|C|00|H|00|E|00|D|00|2|00|0\"; flow:to_server,established; classtype:bad-unknown; reference:url,www.f-secure.com/v-descs/nimda.shtml; sid:1295; rev:7;)
    J'ai essayer de trouver la solution avec la fonction pregmatch:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    preg_match('`msg:\"([a-z0-9]+)\";`isU',$var, $matches);
    $msg = $matches[0];
    print_r("Content: ".$msg."<br/>");
     
    preg_match('`content:\"([a-z0-9]+)\";`isU',$var, $matches);
    $content = $matches[0];
    print_r("content: ".$content."<br/>");
    J'ai essayer de stocker ce qui est en rouge dans la variable $msg et ce qui est en bleu dans la variable $content.
    Lors de l'exécution du script, les variables $msg et $content sont vides !

    Pouvez vous m'aider à résoudre ce problème ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    Salut,

    Donc dans un premier temps tu n'utilise pas la bonne fonction pour faire ce que tu veux faire. "preg_match" donne en retour le nombre de fois que ton masque a été trouvé et non pas le masque lui-même.

    Dans ta variable, tu peux remarquer que les éléments qui t'intéresse sont entourés par des doubles quotes. Pour répondre a ton probleme je me suis donc servi de ces quotes pour spliter ta chaine:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
     
    $var = "alert tcp \$EXTERNAL_NET any -> \$HOME_NET 139 (msg:\"NETBIOS nimda RICHED20.DLL\";content:\"R|00|I|00|C|00|H|00|E|00|D|00|2|00|0\";flow:to_server,established; classtype:bad-unknown; reference:url,www.f-secure.com/v-descs/nimda.shtml; sid:1295; rev:7;)";
     
    $tab = preg_split("/\"/", $var);
     
    echo $tab[0]."<br>";
    echo $tab[1]."<br>";
    echo $tab[2]."<br>";
    echo $tab[3]."<br>";
    ...
    ?>
    Résultat:

    alert tcp $EXTERNAL_NET any -> $HOME_NET 139 (msg:
    NETBIOS nimda RICHED20.DLL
    ; content:
    R|00|I|00|C|00|H|00|E|00|D|00|2|00|0

  3. #3
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2007
    Messages : 65
    Par défaut Problème avec pregmatch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <?php
     
    $fichier=$_POST['path'];
     
    if (!$fp = fopen($fichier,"r")) {
     
    echo "Echec de l'ouverture du fichier";
     
    exit;
     
    }
     
    else {
     
    	while(!feof($fp)) {
     
    		$Ligne = fgets($fp,500);
     
    		$var = mysql_escape_string($Ligne);
     
    		print("<small>".$var."</small><br/><br/>");		
    		preg_match('`msg:"(.+)"; content:"(.+)";`isU', $var, $matches);
    		print("<b>msg:</b> ".$matches[1]."<br /><b>content:</b> ".$matches[2]);
     
    	}
     
    	fclose($fp);
     
    }
     
    ?>
    J'ai essayer de passer chaque ligne à un pregmatch.
    Vous pouvez tester le code avec ce fichier .rules !
    fichier.rules

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo