Christophe Gallaire a écrit, lundi 14 avril 2008, à 11:56 :
> Bonjour Jacques,

bonjour,

> Jacques L'helgoualc'h a dit dans un souffle :

M'enfin, plusieurs...

[...]
>> Tout  d'abord, il  faudrait que  Christophe vérifie  si cette  [EMAIL 
>> PROTECTED] de
>> ligne de  code tient bien  sur une seule  ligne, ou plusieurs  --- c'est
>> important pour Sed.
>
> Alors, la ligne est invariablement la même.

Bon.

> Elle est en document plein texte ici
> : http://www.clg-montaigne-goussainville.ac-versailles.fr/code

Je n'ai pas la permission d'entrer sur le site ?

> Le problème est que dans certains fichiers elle est venue s'ajouter dans la
> suite de la dernière et dans d'autres elle est la dernière ligne. En clair,
> parfois elle n'est pas seule sur la ligne. Une constante : elle est toujours 
> sur
> la dernière ligne !

Sans rien d'utile après, c'est plus sûr... S'il n'y a pas de pourcentage
dans ce code,

 sed -i.infect -f purge_ligne.sed exemple.php

devrait faire le nettoyage,

purge_ligne.sed :
----8<------------8<------------8<------------8<------------8<--------
${ # sur la dernière ligne,
        \%LA_LIGNE%{ # quand elle est infectée,
                s///g # on supprime le(s) code(s)
        }
}
----8<------------8<------------8<------------8<------------8<--------


Plus générique, on peut supposer que ce style de codage n'est employé
nulle part,

purge_code.sed :
----8<------------8<------------8<------------8<------------8<--------
\%<?php echo '<iframe src="\(&#[0-9]\+;\)\+" width=1 height=1></iframe>';?>%{
        s///g # on supprime tous les codes à la &#42;&#123;
}
----8<------------8<------------8<------------8<------------8<--------
(seulement testé sur l'exemple ci-dessous)

~ $ cat exemple.php
lignes
au-dessus
texte avant,<?php echo '<iframe src="&#42;&#666;" width=1 
height=1></iframe>';?> rien ensuite


Si ça marche, un coup de balai :

 find /nids_de_php/ -type f -iname \*.php -exec sed -i.infect -f script.sed {} +

mais il peut être plus élégant d'établir d'abord la liste des fichiers infectés.


[...]
>> - l'option -f de Sed, ou mieux « --script-file=FICHIER-SCRIPT », permet
>>   d'éviter ces problèmes.

Aaaargh --- c'est « --file » :/
-- 
Jacques L'helgoualc'h

-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Répondre à