- 博客(15)
- 收藏
- 关注
原创 playwright绕过浏览器检测,使用本地浏览器
可以绕过基本上大部分浏览器检测,因为这就是一个真正的浏览器。此方法是playwright与本地浏览器以ws方式通信。此方法不可以在打开了普通版(非第一种情况)的浏览器使用。在上述page下进行浏览器操作即可。在程序中添加下面的代码即可。
2023-08-27 19:03:59 3318 1
原创 python爬虫项目实战--从小白到大神,从requests到js逆向
所有项目均为作者,如遇,仅作。由于程序完成的,部分项目可能。练习笔记见此项目将持续更新项目部分实战讲解见b站:https://space.bilibili.com/35242527/channel/collectiondetail?
2023-08-03 20:14:05 1844 3
原创 实验6语义计算
本次三个分类分别为positive,negative和neutral,我们首先预设置了三种情感色彩的句子各30句以txt格式保存作为预训练数据集,其中情感色彩与句子用空格分离,方便提取标签以及内容。初始化定义特征提取以及模型,首先现训练,run_classify这个方法用于输出标签以及语句,下面是测试main函数。可以看出,当句子含义较为明确时,上述的简单分类器有很好的效果。至少给出10个测试用例,用于测试分类算法,并计算分类准确度。掌握文本分类、聚类等语义计算的基本原理;
2023-05-07 18:21:51 110
原创 实验四:视频流 Hash
这个算法比较简单,我们只需要将文件指针直到文件结束,计算文件大小,把文件按照1024字节划分,记录下最后一块不足1024的大小,然后先让前一块hash值为空,开始计算,如果是第一块,则将文件指针执行最后一块的开始,然后读取最后一块数据,然后计算hash,对于之后的情况,每次文件指针向前移动1024字节,然后将文件内容和前一块加密连接,计算出新的hash值,直到遍历完文件结束。然后它计算这个增强的倒数第二个块的散列,并将得到的散列附加到最后的第三个块。系统:Windows 10。编译语言:python。
2023-05-07 14:22:58 180
原创 实验三:AES
下面是解密函数的实现,首先,我们确定一下密文的类型,统一转到字节类型,然后去除密文前面的向量,初始化一个aes的密码本模式对象,我们将iv和密文分离,对于每一块,我们先解密,在和前一个密文块进行异或,得到的结果添加到明文空间,最后输出民文,这里我们将密文最后的填充部分给去除了。之后我们定义一个密文空间,是字节数组对象,将向量的值放到字节数组的前面,对于每一个明文块和密文快进行异或操作后,送入aes进行加密,加密的结果作为下一个密文块,以此类推,最后返回这个密文。编译语言:python。
2023-05-07 14:19:34 559
原创 实验二:Many Time Pad
接下来是获取密钥,同样定义一个集合用来存放密钥,我们将可能出现空格的位置的值异或上32(空格的10进制表示)将位置和结果添加到key中,之后生成一个全0的密钥,大小为密文中最长的那条大小,再针对同一个位置出现了不同的值的情况,我们可以后期微调密文,这样效果会更好,这个函数返回猜测的密钥。由此特点,如果某一个明文上某个位置为空字符,则对应密文的该位置与其他密文的该位置异或,得到的结果很有可能是大(小)写字母,异或的密文数目越多,其准确性就越高。请使用前 10 个密文进行分析,并对目标密文进行解密。
2023-05-07 14:17:52 187
原创 实验六:RSA攻击
在这里,我们一直N,p,q,e,首先计算fain=(p-1)(q-1),然后计算d,d是e的-1次方在模fain的域下,然后计算解密民文plaintext=密文c的d次方在模N域下,之后把得到的结果转化为int类型,再利用int对象中的to_bytes方法,将整数转化为bytes数组,之后遍历,去除填充,当遇到0时填充结束,输出明文。(提示:在此条件下有20,因此需要从根号n开始搜索 A 的值)。如下的整数 N 是两个素数 p,q 的乘积,且满足|4 ,请分解整数N,并给出其十进制结果。
2023-05-07 14:13:09 116
原创 实验五:Padding Oracle 攻击
Padding Oracle 的实现方式是,当系统收到一个密文后,首先会解密该密文,然后对解密后的明文进行 padding 验证,如果验证失败,则返回 404。在猜测一个字节的值时,需要依次枚举该字节可能的取值,并将该值与前面已经猜测出来的字节的值进行异或,以得到中间结果。对于每个待解密的块,枚举该块中每一个字节的可能取值,然后构造一个新的IV和密文,并向Padding Oracle发送请求,查询是否存在解密失败的情况。对于每次发送的请求,如果返回404,则说明猜测的IV是正确的,我们继续猜测下一个字节;
2023-05-07 14:09:58 874
原创 实验一:Shamir 秘密共享
如果秘密大于大素数,就按照之前定义好的位数依次调高,直到大于秘密值为止,下面简单简述一下判断素数的过程。首先是类的初定义,我们需要提供秘密即info,门限值k,秘密共享人数p给类,然后定义了大素数,我们调用创建大素数函数,最开始创建一个16位的大素数,然后进行一些类对象的初始化,最后执行检查,检查主要是检查大素数是否大于秘密的值,如果没有进行这一步,那么就无法恢复秘密,因为拉格朗日插值计算要在大素数域内计算,如果你的消息值大于这个数,那么肯定无法还原,接下来我们看一下创建以及检查函数的实现。
2023-04-17 20:36:02 2355
原创 Middleware中间件的设置
使用代理ip后selenium的无头模式关闭可能会引发错误,解决方案目前还没有找到。其中get_ua就是从fakeuseragent.py文件中引入的,下面将展示这个文件。之后在工程文件中配置SelniumRequest.py。在发送request的时候拦截使用selenium。拦截响应的时候添加selenium。只需要修改将代理ip的信息删除即可。在特定情况使用selenium。FakeUserAgent类。这个代理是快代理的隧道代理。基本上无法使用,不推荐。固定Cookie的设置。
2023-01-11 11:40:24 252
原创 基于scrapy模板的可持久化存储
首先我们需要在mysql中创建好对应的数据库以及表。我们在Pipeline中定义如下类。之后在Pipeline中创建好类。在setting中添加如下信息。存储为csv文件类型。
2023-01-11 11:39:45 55
原创 SHU——算法设计实验三:最长公共子序列
但是运行的时候发现,每次都会输出无公共子序列,我很疑惑,最后突然发现,我们每次递归调用的最后,i和j总是等于0,然后退出递归调用,但是我们的c矩阵的第一行和第一列全为0,所以不管我们怎么调用,到最后一定会有c[i][j]=0的情况,这个时候,我们只需要把判断语句放到结束递归的后面,就可以成功运行了。我们先拿出X序列的第一个A与Y序列进行一一对比,如果两者相等,则该位置的值将更改为他的对角线上方的值加一,如例子中的两组序列,他们的第一个字符相同,则c[1][1]的值将更改为c[0][0]+1=1;
2022-11-11 10:56:30 509
原创 SHU--算法设计实验二:矩阵连乘问题
在这次实验的过程中,如何得知是哪个地方要加括号这个问题我思考了很久,在一遍遍理清楚整个算法的过程后,我有了初步的了解,加括号的位置其实就是k 的对应序号的矩阵,在写算法时我们就可以用另外的数组记录下对应位置的k值。在分析问题的最优子结构性质时,所用的方法具有普遍性:首先假设由问题的最优解导出的子问题的解不是最优的,然后再设法说明在这个假设下可构造出比原问题最优解更好的解,从而导致矛盾。设计算A[i:j](矩阵A从i乘到j),1≤i≤j≤n,所需要的最少数乘次数m[i,j],则原问题的最优值为m[1,n]。
2022-11-11 10:43:49 909
实验 6 语义计算 1. 实验目的
2023-05-07
实验 5、Padding Oracle 攻击
2023-05-07
实验三、AES的CBC以及CTR模式
2023-04-17
实验二、Many Time Pad
2023-04-17
实验一、Shamir 秘密共享
2023-04-17
获取伪造的谷歌User-Agent
2023-01-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人