头歌----恶意流量监测

第一关:RE库的使用

任务描述

本关任务:编写一个能正则匹配出 ip 地址的小程序。

相关知识

为了完成本关任务,你需要掌握:

  1. re 的主要功能函数;
  2. re.search 函数;
  3. 例子。
re 的主要功能函数

常用的功能函数包括: compilesearchmatchsplitfindall(finditer)sub(subn)

re.search 函数

re.search 扫描整个字符串并返回第一个成功的匹配。

函数语法:

 
  1. re.search(pattern, string, flags=0)

函数参数说明:

参数含义
pattern匹配的正则表达式
string要匹配的字符串。
flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
例子
 
  1. import re
  2. line='www.python.org'
  3. trueIp =re.search('python',line)
  4. print(trueIp)

输出: www.python.org <_sre.SRE_Match object; span=(0, 11), match='192.168.1.1'>

编程要求

根据提示,在右侧编辑器 begin-end 内补充代码,使用 re.search 匹配出 IP 地址。

测试说明

平台会对你编写的代码进行测试: 代码请写在 Evidence 函数里,path 为存放 IP 的文件路径,文件内容为:192.168.1.1 请读取出文件内容,并用 re.search 匹配并输出结果;

预期输出: <re.Match object; span=(0, 11), match='192.168.1.1'>

import redef Evidence(path):with open(path, 'r') as file:content = file.read()ip_pattern = r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'ip_match = re.search(ip_pattern, content)print(ip_match)

第2关:pcap 包的读取

任务描述

本关任务:编写一个能读取 pcap 文件的程序

相关知识

为了完成本关任务,你需要掌握:如何读取 pcap 文件。

pcap 文件是常用的数据报存储格式,可以理解为就是一种文件格式,只不过里面的数据是按照特定格式存储的,所以我们想要解析里面的数据,也必须按照一定的格式。

编程要求

根据提示,在右侧编辑器 begin-end 内补充代码,读取 pcap 文件,并对其进行解析,输出要求的内容。

测试说明

要求输出以 192.168.8.130 为源地址和目标地址的包出现的次数; 预期输出: IP:192.168.8.130发了10次包,接收了9次包

from scapy.all import *
from scapy.layers.inet import *
from scapy.layers.l2 import *def Evidence(path):packets = rdpcap(path)src_ip = "192.168.8.130"count_sent = 0count_received = 0for packet in packets:if IP in packet:if packet[IP].src == src_ip:count_sent += 1if packet[IP].dst == src_ip:count_received += 1print(f"IP:{src_ip}发了{count_sent}次包,接收了{count_received}次包")

 

第三关:pcap包的使用

任务描述

本关任务:编写一个能从 pcap 包检测 XSSSQL 注入攻击的小程序。

相关知识

为了完成本关任务,你需要掌握:1.re库的使用,2.pcap包的读取。

re.compile 函数

compile 函数用于编译正则表达式,生成一个正则表达式(Pattern)对象,供 match()search() 这两个函数使用。

语法格式为:

 
  1. re.compile(pattern[, flags])
参数含义
pattern一个字符串形式的正则表达式
flags可选,表示匹配模式,比如忽略大小写,多行模式等

flag 具体参数为:

属性和方法描述
re.S(DOTALL)使.匹配包括换行在内的所有字符
re.I(IGNORECASE)使匹配对大小写不敏感
re.L(LOCALE)做本地化识别(locale-aware)匹配,法语等
re.M(MULTILINE)多行匹配,影响^和$
re.X(VERBOSE)该标志通过给予更灵活的格式以便将正则表达式写得更易于理解
re.U根据Unicode字符集解析字符,这个标志影响\w,\W,\b,\B
例子
 
  1. pattern = re.compile('匹配XSS攻击的正则表达式', flags=re.)
  2. result_list = pattern.findall(data)
  3. for x in result_list:
  4. print ('恶意攻击序号:'+str(count_bad))
  5. print ('检测到XSS(跨站脚本攻击)!')
  6. print (data)

编程要求

有一个 pcap 文件 src/step3/1.pcap,需要检测其中的恶意流量。 请对其进行检测并按返回测试说明的格式返回。检测到一次攻击将记录一次序号,先检测 XSS 再检测 SQL 注入。 测试数据由评测系统读取并传递给 Evidence 函数,期间产生的输出将会与规定的输出进行比较,详细要求请见测试说明。 提示: 其中 XSS 攻击使用的 payload 有:

 
  1. <script>alert(1)</script>
  2. <iMg src=x onError=Alert(1) />

其中 SQL 注入使用的 payload 有:

 
  1. admin' union select user,password from users--+
  2. -3 uNion SeleCt user(),database(),3,4\`\`\`

同时在 pcap 解析出的数据中,特殊符号是经过浏览器 url 编码的,如:

 
  1. "<"号会变成%3C
  2. admin' union select user,password from users--+会变成
  3. admin%27+union+select+user%2Cpassword+from+users--%2B

测试说明

测试输入:无; 预期输出: 恶意攻击序号:1 检测到XSS(跨站脚本攻击)! username=%3CiMg+src%3Dx+onError%3DAlert%281%29+%2F%3E&password=123&Login=Login 恶意攻击序号:2 检测到SQL注入攻击! username=-3+uNion+SeleCt+user%28%29%2Cdatabase%28%29%2C3%2C4&password=123&Login=Login

 

from scapy.all import *
import redef Evidence(pcap_path):# 请在此添加实现代码 ## ********** Begin *********#datas = []count_bad = 0  # 检测到的攻击数量packets = rdpcap(pcap_path)  # 读取pcap文件for packet in packets:if 'TCP' in packet:datas = str(packet['TCP'].payload).split('\r\n')for data in datas:# 检测XSS onerror/**/= onerror=pattern = re.compile('(\\%3C|<)(body|layer|div|meta|style|base|object|input|img|a|iframe|svg|textarea)(.*?)(onmouseover|onerror|onload|onfocus)(\\=|%3D)|(\\%3C|<)script(\\%3E|>)(javascript:|alert|confirm|prompt|autofocus)(\\%28|())', flags=re.IGNORECASE)result_list = pattern.findall(data)for x in result_list:count_bad += 1print('恶意攻击序号:' + str(count_bad))print('检测到XSS(跨站脚本攻击)!')print(data)# 检测SQL注入pattern = re.compile('(?:(union(.*?)select))|select.+(from|limit)|(?:from\\W+information_schema\\W)|(?:((?:current_)(user|database|schema|connection_id)))\\s*\$|into(\\s+)+(?:dump|out)file\\s*|group\\s+by.+\\(|sleep\\((\\s*)(\\d*)(\\s*)\$|(having|rongjitest)', flags=re.IGNORECASE)result_list = pattern.findall(data)for x in result_list:count_bad += 1print('恶意攻击序号:' + str(count_bad))print('检测到SQL注入攻击!')print(data)# ********** End **********#

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【设计模式之基于特性的动态路由映射模式】

在ASP.NET Core中&#xff0c;路由是核心功能之一&#xff0c;用于将HTTP请求映射到相应的控制器操作。虽然“路由驱动设计模式”是一个我刚杜撰出来的设计模式名称&#xff0c;但我们可以基于ASP.NET Core的路由特性&#xff0c;构建一种以路由为中心的设计模式。 以下是一个…

C#.Net筑基-类型系统②常见类型

01、结构体类型Struct 结构体 struct 是一种用户自定义的值类型&#xff0c;常用于定义一些简单&#xff08;轻量&#xff09;的数据结构。对于一些局部使用的数据结构&#xff0c;优先使用结构体&#xff0c;效率要高很多。 可以有构造函数&#xff0c;也可以没有。因此初始…

独孤思维:副业闷声发财,没有多少人希望你好

01 做副业&#xff0c;一定要留有余地。 害人之心不可有&#xff0c;防人之心不可无。 很多人&#xff0c;喜欢晒收益&#xff0c;喜欢吹嘘多牛b。 被同行盯上&#xff0c;看着眼红&#xff0c;反手就各种搞事情。 独孤经历过&#xff0c;也看到过很多同行被搞过。 不要公…

阿里又出AI神器,颠覆传统图像编辑,免费开源!

文章首发于公众号&#xff1a;X小鹿AI副业 大家好&#xff0c;我是程序员X小鹿&#xff0c;前互联网大厂程序员&#xff0c;自由职业2年&#xff0c;也一名 AIGC 爱好者&#xff0c;持续分享更多前沿的「AI 工具」和「AI副业玩法」&#xff0c;欢迎一起交流~ 最近阿里开源了 Mi…

C#面:阐述 POCO 是什么意思

POCO是“Plain Old CLR Object”的缩写&#xff0c;意为“普通的旧CLR对象”。它是一种编程模式&#xff0c;用于描述一个简单的、纯粹的C#对象&#xff0c;没有任何特殊的依赖或框架限制。POCO对象通常只包含属性和方法&#xff0c;没有任何特殊的基类或接口。 在C#中&#x…

003.Linux SSH协议工具

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

国内 大数据平台

国内有多个类似阿里云天池大数据平台的数据集平台&#xff0c;这些平台主要提供开源数据集、数据竞赛、数据分析工具等资源&#xff0c;帮助数据科学家、研究人员和企业进行数据分析与机器学习开发。以下是一些较为知名的国内平台&#xff1a; 1. DataFountain&#xff08;Dat…

MySQL字符集与 排序规则 详解

在MySQL中&#xff0c;字符集&#xff08;Character Set&#xff09;和排序规则&#xff08;Collation&#xff09;是两个至关重要的概念&#xff0c;它们共同决定了数据库中数据的存储和检索方式。本文将详细解析MySQL中的字符集和排序规则&#xff0c;帮助读者更好地理解它们…

python中的特殊方法使用

__new__()构造器 范例&#xff1a;使用“__new__()”方法 # coding : utf-8class Message: # 默认object子类def __new__(cls, *args, **kwargs): # 特殊方法print("【new】cls %s、args %s、kwargs …

最新麻豆MDYS14源码 油条视频 苹果CMS系统 附搭建教程

在数字化的时代&#xff0c;视频网站已经成为人们获取娱乐和信息的主要渠道之一。而在众多的视频网站中&#xff0c;使用麻豆MDYS14源码搭建的网站无疑是最具有吸引力的。本文将为你介绍麻豆MDYS14源码的基本特性&#xff0c;以及如何利用它打造一款完美的视频网站。 首先&…

如何设计实现一个分布式注册中心

1、确定需求和目标 服务发现&#xff1a;客户端能够查找和连接到服务提供者。 负载均衡&#xff1a;将请求分发到不同的服务提供者实例上。 容错处理&#xff1a;能够处理服务提供者的故障&#xff0c;并确保系统的可用性和健壮性。 高可用性和可扩展性&#xff1a;能够处理…

记录一次mysql长事务的经历

目录 一.项目介绍 二.问题暴漏 三.问题排查 1.连接池方向 2.数据库方向 四.代码模拟 五.错误原因分析 1.MySQL参数优化 2.代码优化 六.总结 一.项目介绍 项目是springbootnacos的微服务架构,商城购物类系统,分多个服务,问题出现在众多服务中的单个服务 二.问题暴漏…

李光明从程序员到架构师的逆袭之路(四)

来上海已经第四天了&#xff0c;今天整日里雨丝绵绵&#xff0c;但这并未能阻挡我探索这座城市的热情。晚上&#xff0c;我和几位朋友相约一同出去逛逛&#xff0c;亲身感受上海这座国际一线城市的独特魅力。 上海&#xff0c;这座被誉为“东方明珠”的城市&#xff0c;以其独…

CAD二次开发(11)-在用C#进行CAD开发SQLite和SqlSugar的使用

1. System.Data.SQLite的使用 1.1 包的引入 利用 Nuget引入其相关包 1.2 App.config配置引入到CAD 因为我们当前的项目是类库项目&#xff0c;需要依托于宿主程序才可以运行&#xff0c;所以我们就得需要将SQLite自动生成的App.config里面的部分配置移植到CAD的配置文件中…

DC/AC电源模块:为医疗设备提供安全可靠的电力转换

BOSHIDA DC/AC电源模块&#xff1a;为医疗设备提供安全可靠的电力转换 DC/AC电源模块是一种用于将直流电源转换为交流电源的设备&#xff0c;广泛应用于各种医疗设备中。它们的主要功能是为医疗设备提供安全可靠的电力转换&#xff0c;以确保这些设备在工作过程中提供稳定的电…

一键破解禁止右键、破解禁止选择、破解禁止复制、破解禁止粘贴,启用复制,启用右键,启用选择,启用粘贴。

一键破解禁止右键菜单、破解禁止选择、破解禁止复制、破解禁止粘贴&#xff0c;启用复制&#xff0c;启用右键&#xff0c;启用选择&#xff0c;启用粘贴。 推荐一个右键功能复原的浏览器扩展神器TCCDE 因为chrome未在大陆运营&#xff0c;暂时未在其扩展市场发布该扩展 edg…

[python学习]--使用包来组织模块

使用包&#xff08;package&#xff09;来组织模块是Python中一种常见的代码组织方式&#xff0c;它可以帮助你更好地管理大型项目中的代码。以下是如何使用包来组织模块的步骤和注意事项&#xff1a; 创建包&#xff1a; 创建一个文件夹作为包的根目录&#xff0c;给文件夹起…

新手怎么使用GitLab?

GitLab新手指南: GitLab 是一个非常强大的版本控制和项目管理平台&#xff0c;对于新手来说&#xff0c;开始使用可能会有些许挑战&#xff0c;但只要跟着以下步骤&#xff0c;相信你就能很快上手。 1. 注册与登录 访问网站&#xff1a;打开浏览器&#xff0c;访问 GitLab官网…

硬盘格式化NTFS好还是exFAT好 U盘存储文件用哪个格式好? 硬盘用exfat还是ntfs mac不能读取移动硬盘怎么解决

在计算机世界中&#xff0c;文件系统是数据管理的基石&#xff0c;而NTFS和exFAT无疑是这块基石上的两大巨头。它们各自拥有独特的特点和优势&#xff0c;并在不同的使用场景中发挥着重要作用。 什么是文件系统 文件系统提供了组织驱动器的方法。它规定了如何在驱动器上存储数…

监控易监测对象及指标之:全面监控Oracle RAC数据库

随着企业业务的不断增长和复杂化&#xff0c;对数据库的高可用性和性能要求也日益提高。Oracle Real Application Clusters (RAC) 作为Oracle提供的一种高可用性和可扩展性的数据库解决方案&#xff0c;被广泛应用于各种关键业务场景中。 一、ASM磁盘与磁盘分组监控 ASM&#…