2014-02-21 3 views
1

Я пытаюсь выяснить, как кто-то взломал сайты моих клиентов. Я ищу файлы журнала, используя ^(?!.*404).*194\.226.*$, чтобы попытаться найти строку в файле журнала, где кто-то, чей IP-адрес начинается с 194.226, обращался к серверу, который не привел к 404.Regex включает часть строки, но исключает другую часть strig

Типичная строка в файле журнала 194.226.xx.xx - - [18/Feb/2014:01:45:10 +0100] "GET /tikiwiki/tiki-graph_formula.php?w=1&h=1&s=1&min=1&max=2&f[]=x.tan.phpinfo()&t=png&title=http://www.google.com/humans.txt? HTTP/1.0" 404 84403 "-" "-" 163 84852

Я предполагаю, что 404 в конце строки 404 не найден, поскольку он следует за ответом HTTP/1.0.

Важно, чтобы 194.226 IS в строке, но 404 НЕ находится в линии. Из исследования здесь RegExp Look for part but exclude If, я придумал вышеприведенную линию. Он либо не работает, либо не найден. У меня нет способа узнать, какой из них, так как файл журнала имеет размер 2188 МБ.

Мой вопрос: Правильно ли регулярное выражение?

+0

Какой инструмент/язык вы используете? '^ $' означает начало и конец строки *. Возможно, вы захотите использовать модификатор 'm' для« преобразования »его в начало и конец строки *. Но это действительно зависит от используемого вами инструмента/языка. – HamZa

+0

Hi HamZa, я использую UltraEdit, который использует регулярные выражения, совместимые с Perl. Однако я загрузил еще один большой файл журнала с этого поста и нашел, что он действительно работает. Итак, для тех, кого это интересует, я нашел это с запросом, показывая, как хакер взломает пароль: '194.226.xx.xx - - [18/Feb/2014: 01: 34: 03 +0100]" GET/index .php? page = ../../../../../../../../../etc/passwd% 00 HTTP/1.0 "200 83670" - "" - "97 84112' –

+0

Запуск этого URL-адреса на моем сайте не возвращает мне никакой плохой информации, так что это не так, но это могло быть :-) –

ответ

1

Я думаю, что это должно помочь вам двигаться

^194\.226\.((?!404).)*$ 

демо: http://regex101.com/r/eM5bR8

+0

Хотя комментарии HamZa по моему вопросу мне очень помогли, вы сначала ответили на фактический вопрос, поэтому я приму ваш ответ. Спасибо, анель! –

1

Да, регулярное выражение верно до тех пор, как вы можете быть уверены, что 404 не является частью IP-адреса

+0

Хотя 404 может быть частью [IP-адреса] (http://www.unix.com/man-page/Linux/3/inet_addr/), можно с уверенностью предположить, что файл журнала выводит десятичные десятичные обозначения. – nhahtdh

1

Используйте это регулярное выражение:

(?!.*404).*\b194\.226\b.* 

Кроме того, вы будете нуждаться использовать многострочный флаг, чтобы он соответствовал всем этим.

Смежные вопросы