【问题标题】:Regular Expression search of a PCAP filePCAP 文件的正则表达式搜索
【发布时间】:2019-03-18 19:02:19
【问题描述】:

我们得到了一个 PCAP 文件,我的工作是找到:

主机PC的用户试图访问一些域名以.top结尾的可疑网站。使用 Python(借助正则表达式)查找易受攻击的网站。

通过在记事本上打开 PCAP 文件并进行 Ctrl + F 搜索,我已经找到了正确答案:http://p27dokhpz2n7nvgr.1jw2lx.top

但这显然不是作业的目的,因为我必须使用 Python 和正则表达式来返回该网站

到目前为止我尝试过的代码是:

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']

这种情况会持续一段时间。

如果能帮助我走上正轨,我们将不胜感激。

谢谢

【问题讨论】:

  • 将要匹配的特殊字符转义为文字字符,re.compile(rb"\.top")。此外,由于您已经编译了正则表达式对象,请使用x = mypattern.findall(pcapfile.read())。请注意,如果您想匹配.top 之前的部分,请使用类似rb'\S+\.top\b'
  • 好的,我刚刚实施了你的建议,返回是 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',....
  • 不知道,你问这个问题是因为点没有被转义,现在,我不知道问题是什么。请考虑更新问题。
  • 所以好消息是代码返回了有问题的网站。无论如何,正则表达式是否可以过滤掉所有其他垃圾并只返回网站。我在想也许有一种方法可以强制它只在开头有 http:// 和结尾有 .top 的情况下返回一行?
  • 如果所有链接都以http开头,则使用rb'https?://\S+?\.top\b'

标签: python regex python-3.x expression pcap


【解决方案1】:

由于您要提取的所有链接都以httphttps 开头,因此您可以使用

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

请参阅regex demo。请注意,r 字符串文字前缀定义了 raw string literal(因此所有反斜杠都被视为文字反斜杠,而不是 string escape sequences 的一部分)和 b 在这里是必需的,因为 PCAP 文件是二进制,因此模式也应该是二进制字符串。

详情

  • https?:// - http://https://
  • \S+? - 1 个或多个非空白字符
  • \.top - 一个 .top 子字符串(注意转义点,未转义点匹配 Python re 中除换行符以外的任何字符)
  • \b - 单词边界(注意r 前缀允许使用单个反斜杠来定义正则表达式转义,如果不使用r 前缀,则需要将其写为\\b)李>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
  • 2016-12-25
相关资源
最近更新 更多