自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 自动化测试——selenium

Selenium 是一个广泛使用的自动化测试工具,主要用于 Web 应用程序的自动化测试。它能实现的功能是网页的自动化操作,例如自动抢票刷课等。同时你应该也见到过有些网站在打开之后并没有直接加载出网站的所有内容,比如一些图片等等,这可能就是网站在构造时使用了AJAX技术,实现了不刷新的和后端交互式的Web页面。

2025-04-09 20:55:52 425

原创 点击劫持

点击劫持(Clickjacking)是一种网络安全攻击手段,也称为界面伪装攻击或UI重定向攻击。攻击者使用一个透明的iframe或其他HTML元素覆盖在目标网页上。由于这些元素是透明的,用户看不到底层的实际内容,从而在执行操作时,以为是点击了预期的内容,但实际上是点击了覆盖在其上面的内容。

2025-03-01 16:14:28 812

原创 复现win7永恒之蓝漏洞

想象一下,如果你的电脑在你什么也不知道的情况下被别人使用,你的信息被别人一览无余,甚至他可以随意操控的电脑,那将是多么可怕的事情。在2017年,全球范围内的许多组织和机构都遭受了永恒之蓝攻击的影响,包括英国国家医疗服务体系(NHS)、西班牙电信公司等。这些攻击造成的损失是巨大的,包括数据丢失、系统瘫痪等。此外,不法分子还通过改造“永恒之蓝”制作了WannaCry勒索病毒,使全球大范围内遭受了病毒的攻击,许多学校、大型企业、政府等机构都受到了影响。

2025-02-24 19:57:32 964

原创 上帝之眼——nmap

ARP,全称Address Resolution Protocol,即地址解析协议,是一种网络协议,它的主要功能是在网络层(IP层)和数据链路层(MAC层)之间进行地址转换。具体来说,ARP协议允许网络设备(如计算机、打印机、路由器等)根据已知的IP地址找到对应的MAC地址,以便在局域网(LAN)内实现数据的正确传输。APR是通过广播--请求--应答的方式来工作的。请求:主机A会向局域网内的所有设备发送一个ARP请求包。这个请求包中包含主机A的IP地址和MAC地址,以及主机B的IP地址。

2025-02-21 18:36:25 1142

原创 Burp Suite基本使用(web安全)

在网络安全的领域,你是否听说过抓包,挖掘漏洞等一系列的词汇,这篇文章将带你了解漏洞挖掘的热门工具——Burp Suite的使用。Burp Suite是一款由PortSwigger Web Security公司开发的集成化Web应用安全检测工具,它主要用于网络安全领域,特别是针对Web应用程序的渗透测试。该软件是java制作的在得到jar文件之后,如果电脑上没有java环境或者java环境不匹配,依然会造成工具无法打开和使用。在实用工具之前,我必须要提前声明:合法使用。

2025-02-17 20:49:53 1311

原创 cv2小练习

在倍速播放中,视频播放的速度取决于每秒显示的帧数,即帧率。例如,如果将播放速度调整为2倍,那么每秒显示的帧数将增加到原来的两倍,这样就可以实现视频以加快的速度播放。在上面的代码中,cv2.VideoCapture()里面的传参如果是文件名,最终会读取视频文件,如果传入的参数是0,那么就代表从计算机的默认摄像头读取视频,一般在笔记本上就是前置摄像头,如果输入的值是1就会打开外置摄像头,如果有多个摄像头,那么值依次增加。但是,在waitkey中我们传入的参数并一定是视频原来的切帧速度,或者说根本不可能是。

2025-02-12 19:30:07 664

原创 python面向对象编程(基础篇)

当然不是,在son的构造方法中,我首先调用的是父亲的构造方法这时候son有了父亲的两个属性,之后又调用了母亲的构造方法,这时候由于母亲的eye属性和父亲的重复了,就像我们首先定义a=1之后我们又定义了a=2那么最终a的值一定是2。char a[]来定义单个字符的数组(字符串),a[][]来定义字符串的集合,但是在定义某些数据类型时,我们发现例如学生,他不止有字符串类型的姓名、性别,更有整数类型的学号、年龄等,甚至还有data类型的出生日期,离返校时间。注意在方法中我们要固定的传入一个self,这是规则。

2025-02-12 13:42:06 1213 1

原创 sql注入

然而,当Web应用程序的开发人员对用户输入的数据不进行严格的过滤或验证时,攻击者就有可能通过修改、拼接用户输入参数的方式,构造出恶意的SQL语句,并将其传递给Web服务器和数据库服务器执行。这只是最简单的注入,除此之外,我们除了往里面注入数据,还可以在中间穿插其他的恶意代码,例如,删除数据库,如果数据库的返回结果被服务端原封不动的返回到了界面,我们还可以穿插select * from ...,获取所有的用户数据。要想实现sql注入攻击,有两点是必不可少的1.用户的输入有足够的权限可以直接操控数据库。

2025-02-07 16:31:55 794

原创 express框架使用

在这次的代码中,我并没有使用原来的127.0.0.1:8000而是用了在局域网内自己的ip地址,这就好比你有一个学号,那么你通过学号在自己的学校找到对应的学生是轻而易举的,但是如果在别的学校就不一定有该学号对应的学生了。我们之前使用过node.js的原生http框架构造过一个简单的服务器,但是在写代码的过程中我们发现它会吧代码都堆放在一个箭头函数里面,从而产生许多的if...else...。id=1&name=2,在这个例子中我们尝试传入了一个以1为id,2为name的例子那么服务端应该怎么接收这些信息。

2025-02-06 19:02:50 855

原创 node.js使用mysql2对接数据库

输入如下命令打开,在kali中的密码输入是通过类似python的getpass包的方式进行开发的,所以我们在进入root用户权限时是看不到输入的密码的,但是这并不影响输入。在school的数据库中,我们创建一个名为student的表格(table),它应该包括学生的姓名(name/char),学号(id/int),年龄(age/int),性别(sex/char)。我们想要增加一个新的学生信息[6,“灰太狼”,“男”,30],就要输入以下的语句。首先,在我们的mysql中本来就有一些库,我们可以通过。

2025-02-06 17:14:35 1721

原创 XSS攻击

testLink</a>)就会变成<ahref=""oncilck="alert('XSS')//'">testLink

2025-01-18 21:24:21 949

原创 node.js原生http框架构建后端

Node.js是一个基于ChromeV8引擎的JavaScript运行时环境,由RyanDahl于2009年创建。在我们的浏览器中自带javascript环境,所以前端的一些代码可以直接运行javascript的脚本。而node.js与javascript的语法大致相同,但是这门语言不支持多线程,于是就使得它在处理CPU密集型任务时可能不如多线程语言高效。为了弥补这一方面,node.js的异步处理机制相对其它的语言比较成熟。2.创建服务器,根据用户不同的请求反馈给用户不同的结果。1.引入需要用到的包。

2025-01-18 17:12:47 279

原创 如何用SSH获得一个shell实现连续的输入指令

在之前的文章中我们实现了,创建一个SSH隧道,向kali输入一条指令得到指令的结果之后打印出来。但是它只能每次输入一条指令,并且输入的指令不会被记录下来,这样的话就大大增加了控制kali的难度,因此在这一篇文章中,我们会学到如何得到一个远程的shell可以像我们常用的cmd一样输入指令,并且保存。接收指令,每次发送完recv_ready()函数会返回True,确保可以接收,接受完以后跳出循环。在运行上述代码之后,如果成功了的话,我们就可以创建一个连接。发送指令,每一次发送在最后拼上换行,终端才能执行。

2025-01-12 18:12:01 328

原创 用pyqt5做一个桌面宠物

接下来,我们完善一下change方法,首先把图片找到替换原来的图片,之后让睡觉的倒计时自减一,减完后宠物就进入睡觉的状态。上面代码中的减100是因为我的宠物设置的大小是200,减一百后每次鼠标移动宠物的中心都会在鼠标的箭头上。你想不想拥有一个这样的桌面宠物呢,那么这个代码将会用一百二十行左右的代码教你完成一个简单的桌面宠物。定义鼠标的双击事件,如果宠物处于未进化的状态 就让它进化,相反的就让它退化。例如,我用的阿里云的镜像源,在下载过程中较为稳定。设置宠物的基本属性,包括每一帧切换时间,宠物的大小。

2025-01-09 11:51:18 476

原创 scapy发送,嗅探包

举例来说,用表达式src 192.168.1.100构造的过滤器会捕获所有的来自192.168.1.100的数据包,与之相反的过滤器是dst 192.168.1.100它会捕获所有发给192.168.1.100的数据包。sniff函数的意义是,嗅探到包以后就执行回调函数packet_callback(),在这个回调函数中会使用show方法输出包里面的基本数据。proto:指定具体的协议,如ether(以太网)、ip(IP协议)、tcp(TCP协议)、udp(UDP协议)等。表示只捕获TCP协议的数据包。

2025-01-08 20:47:02 960

原创 通过SSH通信在主机上操控虚拟机

TCP:连接成功后会发送一个带有SYN标志的数据包以同步数据的序列号,等待SYN-ACK响应,一旦连接成功可以进行双向的通信。为了测试我们在kali的根目录上提前写一个python代码,在主机上直接输入python file.py即可查看结果。在终端输入下面指令进行下载。SSH:会对双方传输的数据进行加密,包括登录时输入的用户口令,因此具有良好的安全性。SSH:远程登陆管理服务器,隧道技术,在不安全的网络中安全的传输其他协议的数据。SSH:允许通过建立安全与经过自身身份验证的SSH连接到服务器。

2025-01-04 16:53:55 464

原创 用python的socket、pyqt创建网络对话框

在计算机网络编程中,UDP(User Datagram Protocol,用户数据报协议)是一种无连接、不可靠的传输协议,与TCP(Transmission Control Protocol,传输控制协议)相比,它不需要建立连接、维护连接状态,因此具有较低的开销和延迟,但可能会丢失数据包或数据顺序错乱。这样就可以区分开接收到的和发送的消息了。创建一个tcp客户端的实例化对象,其中AF_INET代表使用标准的IPv4地址或者主机名,SOCK_STREAM代表这个连接是用TCP协议传输的。

2025-01-03 15:12:26 815

原创 opencv图片的二值化操作

它将灰度图像或彩色图像转换为仅包含两种像素值的图像,即黑色和白色(或者更一般地说,前景和背景)。这种操作在处理图像时极大地简化了图像数据的复杂度,使得后续的图像分析和处理步骤变得更加高效和直观。二值化操作的核心在于选择一个合适的阈值,这个阈值决定了哪些像素值被归为前景(通常是白色),哪些被归为背景(通常是黑色)。在以上的代码中,设置阈值为150,即低于阈值的相对来说更加暗一点,那么就让它变得更暗。如果我们想让亮的地方变暗,暗的地方变亮,只需要把if的判断条件修改为img[i][j]>150即可。

2024-10-09 19:24:43 487

原创 opencv基础训练

在计算机中每一个像素点都是由一个八位的二进制数构成即00000000~11111111,因此通道的强度范围是0~255,在强度是指为0的时候通道不亮,此时这个像素为黑色,而在强度是255时通道的强度最大,此时呈现的是纯白色,在中间时看到的时灰色,值越小就越黑,反之越白。在一幅画中,某一个像素点数越小它就越趋近于黑色,反之越趋近于白色,如果我们提取某一个像素点用字母代替就可以实现字符画,例如规定在100~150我们使用a而在10~40颜色较深我们可以使用W代替。我使用的时我们学校的图片。

2024-10-03 22:14:31 500 2

原创 基于python的opencv图像处理基本操作

在国内使用Python时,由于网络延迟和不可控因素,访问官方的PyPI(Python Package Index)服务器下载模块和依赖包可能会遇到速度较慢甚至无法连接的问题。在Python中下载OpenCV包,最常用的方法是使用pip命令。pip是Python的包安装工具,可以方便地从Python包索引(PyPI)安装和管理包。该方法的两个参数分别是:图像的存储地址和图像的信息。选择复制文件的地址,即可得到文件的整个路径。在不输入flag的值的时候默认读取为彩图。flag=0,读取的图片为灰度图片。

2024-09-21 13:19:24 1079 1

原创 python排序之堆排序

第一步建大顶堆(堆顶上的数是所有数里面最大的):方法为从len-1/2的结点开始往下找,首先比较左孩子和右孩子,如果右孩子更大就把左右孩子互换,再比较左孩子和父亲结点,如果左孩子更大就把左孩子和父亲结点交换。堆排序的核心思想在于通过构建堆来重新组织数据,使其满足特定的顺序关系,进而通过一系列的调整操作实现整个数组的排序。例如,在优先队列的实现中,堆排序的思想被广泛应用,以高效地维护队列中元素的顺序。不稳定性:堆排序是一种不稳定的排序算法。最终,树的根节点一定是所有数里面最大的,只需要把最大的放到最后即可。

2024-09-19 20:31:36 697 2

原创 python栈实战 迷宫寻找出口

此时,栈的作用就凸显出来了:我们可以将当前的位置(以及可能的其他状态信息)压入栈中,然后回溯到上一个决策点,尝试其他可能的路径。希望读者在跟随代码实现的过程中,能够深入理解栈在迷宫问题中的应用,以及DFS算法的基本思想。在右和下都不能走的情况下,我们再选择左上,在被封死的情况下,说明我们上一步走进死胡同了,我们需要实现倒退的操作,即退栈。并且堵住刚刚的路口,避免下次再尝试。迷宫问题,作为计算机科学和算法设计中的一个经典问题,不仅考验了我们对数据结构的理解和应用,还锻炼了我们解决复杂问题的能力。

2024-09-17 17:10:03 1236

原创 python链表实战制作学生管理系统(附带pyqt5的界面优化)

根据输入的i不同会按照不同的标准排序,在i-2是非负整数的时候,i会根据当前值大小索引到分数列表中排序例如i=0就按照语文成绩排序。其中包含了学生的学号,姓名,各科的分数以及总分存储在score的列表中,这种存储方式是为了后期的排序更加方便。3、 信息查询(a 按学号查 b 按最高分查(查询每门课的最高分的同学信息))4、 信息排序(a 按总分排序(从高到低)b 按姓名排序 )学生成绩信息包括:学号,姓名,语文成绩、数学成绩、英语成绩。5、 信息删除(给定学号,删除该学生信息)2、 学生信息浏览;

2024-09-16 19:35:33 373

原创 python实现二叉树

python用递归方法实现二叉树基本功能

2024-09-16 11:37:21 1065

原创 python数据结构队列

python队的操作

2024-09-15 20:24:00 304

原创 python数据结构栈

python实现栈的数据结构

2024-09-15 19:32:04 166

原创 python链表操作

因为在python的内存处理机制中一旦某一部分没有任何索引指向就会被释放内存,所以在编码时,首先要让新的结点指向head后面的结点这样才能防止整个链表的内存被释放。1、__init__方法,在linklist类里面,定义linklist的head=node(None)这是因为作为链表的头结点,head是不存放任何内容的。5、delete函数使用了双指针的方法,通过p,q两个指针一前一后的遍历,让p在前面遍历一旦发现了要找的元素,就让q直接跳过p让q的next索引到p的后面这样就可以删除选中结点。

2024-09-14 08:22:07 544

宠物的每一帧,请务必和代码放在同一路径下再运行

宠物的每一帧,请务必和代码放在同一路径下再运行

2025-01-09

python栈实战 迷宫寻找出口

python栈实战 迷宫寻找出口

2024-09-17

python链表实战制作学生管理系统(附带pyqt5的界面优化)

python链表实战制作学生管理系统(附带pyqt5的界面优化)

2024-09-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除