- 博客(26)
- 收藏
- 关注
原创 shopee之cookie中的ds生成协议
shopee的协议里有很多值得逆向的内容,这一篇文章我们主要讲解cookie中的ds的生成我们可以看到,这是一个32位的字符串,首先想到会不会是一个md5算法呢?我们可以全局搜索md5的特征值经过一些断点和搜搜,可以最终定位到下面这端函数,这里就是魔改后的md5算法的位置可以看到ds的生成逻辑就是由shopee_webUnique_ccd拼接一个uuid计算而来,下面是node运行结果可以看到是正确运行的结果。
2024-10-14 15:59:12
421
原创 从图搜谈关于python请求与multipart/form-data的一些心得
我们使用MultipartEncoder用requests-go发送请求同样也会出现前文的异常,所以目前还是用tls_client发起请求比较好。这次也学到了很多新的知识,自己也摸索了几天,尝试了各种方法,最后在群友的分享整合出了这个方案,所以也写这一篇博客分享。附上成功请求数据的图片哈哈哈更多优质文章见个人博客:https://xsblog.site/
2024-09-30 22:10:52
850
1
原创 inst爬虫代码
大概需要这些内容,简单的方法是把页面的cookie字符串贴下,然后找一个在线转化的转为python的字典即可。最近有很多朋友发邮件和私信询问ins爬虫的问题,我重新去看了一下,然后把新版更新了一下。还有一部分朋友询问代理如何添加,这里我也将代理抽离到全局进行添加了。我们修改请求头后就可以得到准确的返回结果。完整代码可见github或者我的博客。按照python的格式修改即可。
2024-09-23 19:15:52
906
原创 Shopee浏览器参数收集汇总
现在电商数据采集越来越卷,像shopee这类头号电商平台,web参数已经变成日多更了,对于纯算还原的难度越来越大,一个人的精力是有限的,我们必须寻求一些其他方法获取虾皮的数据。补环境是一个可行的方案,在补环境之前,我们可以现在浏览器上分析,有些什么参数是虾皮收集的,我们可以在调试之前,先把浏览器框架搭起来,这样方便我们调试也方便我们补环境。more。
2024-09-19 20:24:15
201
原创 nvm的使用和安装——Linux
NVM,全称Node Version Manager,是一个用于管理Node.js版本的工具。它允许开发者轻松地安装和切换不同的Node.js版本,从而在不同的项目中使用不同的Node.js版本。more。
2024-07-18 11:34:28
310
原创 ubutun安装influxdb2
InfluxDB是一个开源的时间序列数据库,它被设计用来高效存储和检索时间序列数据。时间序列数据是按照时间顺序记录的数据点集合,通常用于监控系统、物联网设备、金融数据跟踪等场景。more。
2024-07-16 21:04:51
444
原创 ubutun的防火墙规则
设置防火墙规则通常涉及到配置网络防火墙,以控制进出网络流量的访问权限。这可以基于不同的标准,如IP地址、端口号、协议类型(TCP/UDP)、服务或应用程序等。以下是一些基本步骤和考虑因素,用于设置防火墙规则:more。
2024-07-16 21:04:09
401
原创 nvm的使用和安装——Linux
NVM,全称Node Version Manager,是一个用于管理Node.js版本的工具。它允许开发者轻松地安装和切换不同的Node.js版本,从而在不同的项目中使用不同的Node.js版本。more。
2024-07-16 21:03:39
575
原创 shopee x-sap-ri逆向 版本号215011
shopee是反爬届中参数复杂程度较高的,我们可以看到复杂的参数生成以及代码混淆,在请求头中,比较重要的参数是下面这些:more我们这次先解决比较简单的两个,一个是x-sap-ri,另外一个是af-ac-enc-dat这两个参数。
2024-07-12 15:50:17
2338
原创 playwright绕过浏览器检测,使用本地浏览器
可以绕过基本上大部分浏览器检测,因为这就是一个真正的浏览器。此方法是playwright与本地浏览器以ws方式通信。此方法不可以在打开了普通版(非第一种情况)的浏览器使用。在上述page下进行浏览器操作即可。在程序中添加下面的代码即可。
2023-08-27 19:03:59
7001
1
原创 python爬虫项目实战--从小白到大神,从requests到js逆向
所有项目均为作者,如遇,仅作。由于程序完成的,部分项目可能。练习笔记见此项目将持续更新项目部分实战讲解见b站:https://space.bilibili.com/35242527/channel/collectiondetail?
2023-08-03 20:14:05
2327
3
原创 实验6语义计算
本次三个分类分别为positive,negative和neutral,我们首先预设置了三种情感色彩的句子各30句以txt格式保存作为预训练数据集,其中情感色彩与句子用空格分离,方便提取标签以及内容。初始化定义特征提取以及模型,首先现训练,run_classify这个方法用于输出标签以及语句,下面是测试main函数。可以看出,当句子含义较为明确时,上述的简单分类器有很好的效果。至少给出10个测试用例,用于测试分类算法,并计算分类准确度。掌握文本分类、聚类等语义计算的基本原理;
2023-05-07 18:21:51
172
原创 实验四:视频流 Hash
这个算法比较简单,我们只需要将文件指针直到文件结束,计算文件大小,把文件按照1024字节划分,记录下最后一块不足1024的大小,然后先让前一块hash值为空,开始计算,如果是第一块,则将文件指针执行最后一块的开始,然后读取最后一块数据,然后计算hash,对于之后的情况,每次文件指针向前移动1024字节,然后将文件内容和前一块加密连接,计算出新的hash值,直到遍历完文件结束。然后它计算这个增强的倒数第二个块的散列,并将得到的散列附加到最后的第三个块。系统:Windows 10。编译语言:python。
2023-05-07 14:22:58
393
原创 实验三:AES
下面是解密函数的实现,首先,我们确定一下密文的类型,统一转到字节类型,然后去除密文前面的向量,初始化一个aes的密码本模式对象,我们将iv和密文分离,对于每一块,我们先解密,在和前一个密文块进行异或,得到的结果添加到明文空间,最后输出民文,这里我们将密文最后的填充部分给去除了。之后我们定义一个密文空间,是字节数组对象,将向量的值放到字节数组的前面,对于每一个明文块和密文快进行异或操作后,送入aes进行加密,加密的结果作为下一个密文块,以此类推,最后返回这个密文。编译语言:python。
2023-05-07 14:19:34
803
原创 实验二:Many Time Pad
接下来是获取密钥,同样定义一个集合用来存放密钥,我们将可能出现空格的位置的值异或上32(空格的10进制表示)将位置和结果添加到key中,之后生成一个全0的密钥,大小为密文中最长的那条大小,再针对同一个位置出现了不同的值的情况,我们可以后期微调密文,这样效果会更好,这个函数返回猜测的密钥。由此特点,如果某一个明文上某个位置为空字符,则对应密文的该位置与其他密文的该位置异或,得到的结果很有可能是大(小)写字母,异或的密文数目越多,其准确性就越高。请使用前 10 个密文进行分析,并对目标密文进行解密。
2023-05-07 14:17:52
352
原创 实验六: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
238
原创 实验五:Padding Oracle 攻击
Padding Oracle 的实现方式是,当系统收到一个密文后,首先会解密该密文,然后对解密后的明文进行 padding 验证,如果验证失败,则返回 404。在猜测一个字节的值时,需要依次枚举该字节可能的取值,并将该值与前面已经猜测出来的字节的值进行异或,以得到中间结果。对于每个待解密的块,枚举该块中每一个字节的可能取值,然后构造一个新的IV和密文,并向Padding Oracle发送请求,查询是否存在解密失败的情况。对于每次发送的请求,如果返回404,则说明猜测的IV是正确的,我们继续猜测下一个字节;
2023-05-07 14:09:58
1634
原创 实验一:Shamir 秘密共享
如果秘密大于大素数,就按照之前定义好的位数依次调高,直到大于秘密值为止,下面简单简述一下判断素数的过程。首先是类的初定义,我们需要提供秘密即info,门限值k,秘密共享人数p给类,然后定义了大素数,我们调用创建大素数函数,最开始创建一个16位的大素数,然后进行一些类对象的初始化,最后执行检查,检查主要是检查大素数是否大于秘密的值,如果没有进行这一步,那么就无法恢复秘密,因为拉格朗日插值计算要在大素数域内计算,如果你的消息值大于这个数,那么肯定无法还原,接下来我们看一下创建以及检查函数的实现。
2023-04-17 20:36:02
3364
1
原创 Middleware中间件的设置
使用代理ip后selenium的无头模式关闭可能会引发错误,解决方案目前还没有找到。其中get_ua就是从fakeuseragent.py文件中引入的,下面将展示这个文件。之后在工程文件中配置SelniumRequest.py。在发送request的时候拦截使用selenium。拦截响应的时候添加selenium。只需要修改将代理ip的信息删除即可。在特定情况使用selenium。FakeUserAgent类。这个代理是快代理的隧道代理。基本上无法使用,不推荐。固定Cookie的设置。
2023-01-11 11:40:24
295
原创 基于scrapy模板的可持久化存储
首先我们需要在mysql中创建好对应的数据库以及表。我们在Pipeline中定义如下类。之后在Pipeline中创建好类。在setting中添加如下信息。存储为csv文件类型。
2023-01-11 11:39:45
78
原创 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
719
1
原创 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
1219
实验 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关注的人