\ 正则表达式使用反斜杠字符 (‘‘) 来表示特殊形式或是允许在使用特殊字符时不引发它们的特殊含义。 转义特殊字符(允许你匹配 ‘*‘, ‘?‘, 或者此类其他)
\A 只匹配字符串开始。
[] 用于表示一个字符集合。在一个集合中除了^、-以外,如果把其它任何特殊符号放到[]里,那么就自动去掉特殊意义,只表示符号本身的含义,如.在[]里只表示.点号的意思,没有了通配符的功能。可以表示字符范围,通过用 ‘-‘ 将两个字符连起来。比如 [a-z] 将匹配任何小写ASCII字符, [0-5][0-9] 将匹配从 00 到 59 的两位数字, [0-9A-Fa-f] 将匹配任何十六进制数位。 如果 - 进行了转义 (比如 [a-z])或者它的位置在首位或者末尾(如 [-a] 或 [a-]),它就只表示普通字符 ‘-‘。
\Z 只匹配字符串尾
\w 对于 Unicode (str) 样式:匹配Unicode词语的字符,包含了可以构成词语的绝大部分字符,也包括数字和下划线。如果设置了 ASCII 标志,就只匹配 [a-zA-Z0-9_] 。对于8位(bytes)样式:匹配ASCII字符中的数字和字母和下划线,就是 [a-zA-Z0-9_] 。如果设置了 LOCALE 标记,就匹配当前语言区域的数字和字母和下划线。
后面跟随任意个
‘b‘。/d 匹配任何十进制数,就是 [0-9]
^ (插入符号) 匹配字符串的开头, 并且在 MULTILINE 模式也匹配换行后的首个符号。
re.sub(pattern, repl, string, count)
第一个参数为正则表达式需要被替换的参数,第二个参数是替换后的字符串,第三个参数为输入的字符串,第四个参数指替换个数。默认为0,表示每个匹配项都替换。
1 VALID_DNS_NAME_REGEX = r"\A[a-zA-Z0-9.-]*.[a-zA-Z0-9-]+\Z"
只匹配字符串开始,在这些 a-z A-Z 0-9 中任意选取一个 选取其中任意1个字符串,
2 WHITELIST_UA_REGEX = r"AntiVir-NGUpd|TMSPS|AVGSETUP|SDDS|Sophos|Symantec|internal dummy connection|Microsoft-CryptoAPI"
匹配AntiVir-NGUpd、TMSPS、AVGSETUP、SDDS、Sophos、Symantec、internal dummy connection、Microsoft-CryptoAPI这些字串的任意一个
3 SUSPICIOUS_DIRECT_IP_URL_REGEX = r"/[\w.]*\b(arm|m68k|mips|mpsl|powerpc|ppc|x86|x32|x64|i586|i686|sparc|sh\b|yarn|zte)"
第一个字符.任意一个字符出现无数多次 ;选取arm、m68k、mips、mpsl、powerpc、ppc、x86、x32、x64、i586、i686、sparc、sh(\b这边是一个空格)、yarn、zte任意一种型号
4 re.search(r"\A\d+.[0-9.]+\Z", host or "")
匹配IP地址
5 trail = re.sub(r"(http://[^/]+/)(.+)", r"\g<1>(\g<2>)", path)
http:// [^/]+/只匹bai配到http://www.baidu.com/ 后面的.+ 任意 ;前面的分为两个括号 ,给第二个括号加上表达式加上阔号 ,最后的结论是 http://www.baidu.com/(1234/test.txt/)
这里是config里面的内容,在read_config这个函数中生成
{
‘HTTPADDRESS‘: ‘0.0.0.0‘,
‘HTTPPORT‘: 8338,
‘USESSL‘: False,
‘USERS‘: [‘admin:9ab3cd9d67bf49d01f6a2e33d0bd9bc804ddbe6ce1ff5d219c42624851db5dbc:0: # changeme!‘],
‘ENABLEMASK_CUSTOM‘: True,
‘USE_SERVERUPDATETRAILS‘: False,
‘PROCESSCOUNT‘: 1,
‘DISABLECPU_AFFINITY‘: False,
‘USE_FEEDUPDATES‘: False, ‘
DISABLEDFEEDS‘: ‘turris, ciarmy, policeman, myip, alienvault‘, ‘
IPMINIMUMFEEDS‘: 3,
‘UPDATEPERIOD‘: 86400,
‘CUSTOMTRAILSDIR‘: ‘/root/maltrail-master/trails/custom‘, ‘
CAPTUREBUFFER‘: 192730720,
‘MONITORINTERFACE‘: ‘any‘,
‘CAPTUREFILTER‘: ‘udp or icmp or (tcp and (tcp[tcpflags] == tcp-syn or port 80 or port 1080 or port 3128 or port 8000 or port 8080 or port 8118))‘,
‘SENSORNAME‘: ‘iZ2zea82zco7i0nr4vpmmvZ‘,
‘LOGSERVER‘: ‘129.211.138.204:8337‘,
‘DISABLELOCALLOG_STORAGE‘: False,
‘USE_HEURISTICS‘: True,
‘CHECKMISSINGHOST‘: False,
‘CHECKHOSTDOMAINS‘: False,
‘SHOWDEBUG‘: False,
‘LOGDIR‘: ‘/var/log/maltrail‘,
‘TRAILSFILE‘: ‘/root/.maltrail/trails.csv‘,
‘configfile‘: ‘/root/maltrail-master/maltrail.conf‘
}
打印的packet如下
传入的包 打印出来如下:
b‘\x00\x04\x00\x01\x00\x06\x00\x16>\x10\x1d>SW\x08\x00E\x00\x00\xbf\xb3\x1a@\x00@\x06\x03\xac\xac\x18\x0e.ddd\xc8\xed\xea\x00P\x04FF\xfa\x97\xc3\x8a\xedP\x18\x00\xe5\x84$\x00\x00GET /latest/meta-data/region-id HTTP/1.1\r\nHost: 100.100.100.200\r\nAccept: /\r\nContent-Type: application/json; charset=utf-8\r\nAgent: linux/1.0.2.580\r\n\r\n‘
前面的maltrail的对于DPI的解析就是对这个包的解析。
原文:https://www.cnblogs.com/sailorlee11/p/13952184.html