cd ~ || exit 1
echo "== début $(date '+%Y-%m-%d %H:%M')"
echo "== 1. fichiers PHP rangés dans des dossiers d'images, de téléversement ou de documents"
find . -path ./hors-web-2026-10-06 -prune -o -path '*/var/cache' -prune -o -type f \( -iname '*.php' -o -iname '*.phtml' -o -iname '*.phar' -o -iname '*.php[0-9]' \) \( -path '*/img/*' -o -path '*/upload/*' -o -path '*/download/*' -o -path '*/uploads/*' \) ! -name index.php -print 2>/dev/null
echo "== 2. code qui exécute du texte chiffré ou des données venues d'Internet"
grep -rlE "eval\s*\(\s*(base64_decode|gzinflate|gzuncompress|str_rot13|strrev|rawurldecode)|eval\s*\(\s*\\\$_(POST|GET|REQUEST|COOKIE)|assert\s*\(\s*\\\$_(POST|GET|REQUEST)|(file_put_contents|fwrite)\s*\(\s*\\\$_(POST|GET|REQUEST)|\\\$_(POST|GET|REQUEST|COOKIE)\[[^]]{1,20}\]\s*\(" --include='*.php' --exclude-dir=hors-web-2026-10-06 --exclude-dir=cache . 2>/dev/null
echo "== 3. code brouillé (lettres prises une à une dans une chaîne)"
grep -rlE '\$[A-Za-z0-9_]{2,8}="[A-Za-z0-9_]{40,}";\$[A-Za-z0-9_]{2,8}=\$[A-Za-z0-9_]{2,8}\[[0-9]+\]\.' --include='*.php' --exclude-dir=hors-web-2026-10-06 --exclude-dir=cache . 2>/dev/null
echo "== 4. .htaccess qui font exécuter des images"
grep -rlE "(AddType|AddHandler|SetHandler).*(php|x-httpd).*(jpe?g|png|gif|ico)|(jpe?g|png|gif|ico).*(AddType|AddHandler|SetHandler).*php" --include='.htaccess' --exclude-dir=hors-web-2026-10-06 . 2>/dev/null
echo "== fin $(date '+%Y-%m-%d %H:%M')"
