Поиск по регулярному выражению файла PCAP - PullRequest
0 голосов
/ 18 марта 2019

Нам выдан файл PCAP, и моя работа состоит в том, чтобы найти:

Пользователь хост-компьютера попытался получить доступ к подозрительному веб-сайту, имя домена которого заканчивается на .top * 1005.*.Используйте Python (с помощью регулярных выражений), чтобы найти восприимчивый веб-сайт.

Открыв файл PCAP в блокноте и выполнив поиск по Ctrl + F, я уже нашел правильный ответ:: http://p27dokhpz2n7nvgr.1jw2lx.top

Однако это, очевидно, не является целью назначения, так как я должен использовать Python и Regular Expression, чтобы вернуть этот сайт

Код, который я пробовал до сих пор,:

import re

pcapfile = open('CyberSecurity2019.pcap', 'rb')

mypattern = re.compile(rb"\S+\.top\b")

x = mypattern.findall(pcapfile.read())

print("x = ", x)

Однако это то, что он возвращает:

x =  [b"c('_SS','R','20',0,'/');f=_w.top", b'g_triggerElems!==e&&(g_triggerElems[i].isHotSpotDisabled=!1);v=i+1,r=s[i],a=_ge("sc_hst"+v),a.style.left=r.locx+"%",a.style.top', b't=u.getBoundingClientRect(),o=t.width?Math.abs(t.right-t.left):t.width,a=s(u,"paddingLeft");o=o-(a?parseInt(a):0);v=t.height?Math.abs(t.bottom-t.top', b'n=document.getElementById(keyMap.Notification),t;n&&(n.parentNode.removeChild(n),t=document.getElementById("id_h"),t&&(t.style.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top', b'http://p27dokhpz2n7nvgr.1jw2lx.top', b'p27dokhpz2n7nvgr.1jw2lx.top']

, и это продолжается и продолжается некоторое время.

Любая помощь в настройке меня справатрек будет оценен.

Спасибо

1 Ответ

1 голос
/ 18 марта 2019

Поскольку все ссылки, которые вы хотите извлечь, начинаются с http или https, вы можете использовать

rb'https?://\S+?\.top\b'

См. Демоверсию regex . Обратите внимание, что r префикс строкового литерала определяет raw строковый литерал (так что все обратные слеши обрабатывались как литеральные обратные слэши, а не как часть escape-последовательностей строк ) и b здесь необходимо, потому что PCAP файлы являются двоичными, следовательно, шаблон также должен быть двоичной строкой.

Детали

  • https?:// - http:// или https://
  • \S+? - 1 или более непробельных символов
  • \.top - подстрока .top (обратите внимание, что экранированная точка, неэкранированная точка соответствует любому символу, кроме символа переноса строки в Python re)
  • \b - граница слова (обратите внимание, что префикс r позволяет использовать одну обратную косую черту для определения экранирования регулярного выражения; если вы не используете префикс r, вам нужно будет записать его как \\b )
...