python 实现javascript加密思路[转载]

Python采集群人员数据,记录JavaScript逆向分析过程 目录 前言 准备工作 分析(x0) 分析(x1) 分析(x2) 分析(x3) 代码 结语 前言 本人所有文章内容、源码,除官方企业外,禁止个人转载,谢谢配合。 ....太多培训机构拿我的文章源码去讲公开课了,还有很多培训机构的招生员拿我源码自己编个小故事直接就是一篇文章(但凡这种都是一大堆废话+源码,毫无分析逻辑)。 大家好,我叫善念。有大概一月没有来更新博文了,一个原因是反响并不理想,第二个原因则是每篇文章都是现写的,花费的时间... 阅读详情

第一种是改写JavaScript的代码

这没什么好说的,不过只适用于比较小而且不复杂的JavaScript代码片段。比如人人网上发站内信的页面有这样的一个隐藏post数据:

1.   <input type="hidden" name="biz" value=0 id="xn_biz"/> 

在页面上biz的值为0,但是post的时候就会变成类似于941_683291223928232的字串,仔细看一下页面的源代码,就会发现这段验证的加密字串是通过一段JavaScript的代码生成的:

2.   <script>var mREOQQ=’A`ZDu^`’;var VKMHX=’^&+*L/~’;var 
uCHKAU=0;var rTIU;var wCJS=”;var yAYH=Math.floor
(VKMHX.length/2);while(uCHKAU<mREOQQ.length)
{rTIU=mREOQQ.charCodeAt(uCHKAU++);var aYDG=VKMHX.
charCodeAt(rTIU%VKMHX.length);aYDG=String.
fromCharCode(aYDG);if(aYDG==’L')aYDG=’<<’
;if(aYDG==’~')wCJS+=~rTIU*(-1);else{wCJS+=Math.
floor(eval(rTIU+aYDG+yAYH));}}var ab=941;
ab+="_";ab+=wCJS; document.getElementById("xn_biz")
.value=ab;</script>  

这其实类似一段小型的验证加密,它先随机生产一段字串,复制给随机产生的一个变量名,再随机生成一段运算符,复制给另一个随机生成的变量名,然后对这两个变量进行一系列操作和运算,生成一个类似于941_683291223928232的字串。每次刷新页面这段代码中产生的字串和变量名都是不一样的,但是仔细研究这段代码,算法都是相同的,只要得到字串和运算符串,就可以生成这串验证密钥了。

所以将这段代码简单的改写成python代码,问题得到解决,在python模拟网站的JavaScript加密过程下面代码中code就是提取出来的上述JavaScript代码中的mREOQQ,operator代表VKMHX,而xn则代表ab的初始值,最后得到的xn_biz就是我们最终需要的验证密钥了。

3.   def __genBizCode(code, operator, xn):  

4.   rXHU = unicode( code )  

5.   yAMKEN = operator 

6.   VCHEN, yEEJ, eLKKIH = (0, 0, ”);   

7.   KFNQH = int( len(yAMKEN)/2 );  

8.   while VCHEN < len(rXHU):  

9.   yEEJ = ord(rXHU[VCHEN])  

10.  VCHEN += 1  

11.  index = yEEJ % len(yAMKEN)  

12.  dDWE = ord( yAMKEN[index] )  

13.  dDWE = chr(dDWE)  

14.  if dDWE==’L':  

15.  dDWE = ‘<<’  

16.  if dDWE==’~':  

17.  eLKKIH += str( ~yEEJ*(-1) )  

18.  else:  

19.  reg = ‘%d%s%d’ % ( yEEJ, dDWE, KFNQH)  

20.  eLKKIH += str( int( eval(reg) ) )  

21.  xnxn_biz = xn + ‘_’  

22.  xn_biz += eLKKIH  

23.  return xn_biz   

24.   

这种方法没有依赖性,但是使用的范围较窄,一是要求算法简单才能改写,二是要求算法固定,如果每次刷新页面算法都不一样,这种方法就不使用了。下面会谈到一种通用性的方法。

第二种是在python中运行js代码由于QZone和QQ校友登陆的时候,post的密码都进行了加密,搜索了一下,发现很多人都研究过这个东东。腾讯将用户的密码和验证码一起,通过一些js代码进行加密,生成一个32为的密钥最终post到服务器上。

对于这个加密算法,网上大部分流传的说法是,先将用户密码进行3次md5的加密,转成大写的32位字符串,再将验证转换成大写,与前面的32位md5大写字符串相加,得到一个36位的字符串,最后对这个36位的字串进行md5加密并转换成大写字串,得到最终post的密钥。

网上很多人说用标准的md5加密,但是我用python的hashlib里的md5进行上述的加密,得到的结果却与标准结果不同,于是只能寻求其他办法。后来在Google的时候搜到了在python中利用windows的插件Windows ScriptControl运行其他脚本语言的方法,不仅适用js,还可以运行vbs等。

首先需要安装Windows ScriptControl插件,可以去微软的官网上下载。

http://sourceforge.net/projects/pywin32/files/pywin32/Build%20214/pywin32-214.win32-py2.6.exe/download

其次还需要安装python的win32库,然后就可以简单的如下执行:

25.  import win32com.client  

26.  def readJsFile(filename):  

27.  fp = file( filename, ‘r’ )  

28.  lines = ”  

29.  for line in fp:  

30.  lines += line  

31.  return lines  

32.  def driveJsCode(code, func, paras=None):  

33.  js = win32com.client.Dispatch
(’MSScriptControl.ScriptControl’)  

34.  js.Language = ‘JavaScript’  

35.  js.AllowUI = False 

36.  js.AddCode( code )  

37.  if paras:  

38.  return js.Run(func, paras[0], paras[1])  

39.  else:  

40.  return js.Run(func)  

41.  if __name__ == ‘__main__’:  

42.  code = readJsFile( ‘comm.js’ )  

43.  p = driveJsCode
( code, ‘myPreProcess’, [password, verfcode] )  

44.  print ‘The decoded code is %s’ % p   

这种方法通用性强,而且即使服务器改变算法,依然可以得到正确的加密验证码。以上的相关内容就是对Python模拟网页的javascript加密验证处理的相关内容的介绍。

从寄存器到驱动:深入解读RFSoC RF-ADC阈值与校准API的底层逻辑 本文深入解析Xilinx RFSoC中RF-ADC的阈值检测与校准API的底层逻辑,涵盖寄存器映射、驱动实现及Gen3增强功能。通过详细代码示例和寄存器操作流程,揭示如何精准控制信号阈值检测与校准时序,提升系统稳定性与性能。特别探讨RF数据转换器在无线通信和雷达信号处理中的关键应用。 阅读详情

相关推荐

Doris Streamloader安装教程

Doris Streamloader 是一款用于将数据导入 Doris 数据库的专用客户端工具。本文介绍其在centos7环境下的安装过程

qq_44540985的博客 1090

使用 Python 执行 JavaScript

网站: https://spa7.scrape.center这里是一个简单的 NBA 球星的网站, 用卡片形式展示了一些球星的基本信息。另外,每张卡片其实都有一个加密字符串,这个加密字符串其实和球星的信息是由关联的, 并且每个球星的加密字符串也是不同的。所以,这里我们要做的就是找出这个加密字符串的加密算法并且用程序把加密字符串的生成过程模拟出来。

qq_39217312的博客 1100

Unity游戏开发:从零开始适配Nintendo Switch的完整指南

本文详细介绍了如何使用Unity进行Nintendo Switch游戏开发的完整流程,包括开发环境搭建、Unity工程适配、手柄与硬件特性开发、存储与性能优化等关键步骤。特别强调了Switch SDK的配置、输入系统改造和内存优化技巧,帮助开发者高效完成跨平台适配。

vodka的博客 1069

JavaScript逆向爬虫教程-------基础篇之常用的编码与加密介绍(python和js实现)

JavaScript逆向爬虫教程-------基础篇之常用的编码与加密介绍(python和js实现)

abments的博客 1050

西门子【Automation Framework V1.2】AF架构:从软件栈到高效自动化项目的构建蓝图

本文深入解析西门子Automation Framework V1.2 (AF架构) 的核心价值与实施蓝图。该框架通过定义标准化的软件栈(如TIA Portal V19、STEP7、WinCC Unified)和严格的安装配置流程,将自动化项目开发从依赖个人经验的“手工作坊”模式,转变为高效、可复制的工业化模式。遵循此架构,工程师能快速构建稳定可靠的项目基础,规避环境冲突,从而专注于核心工艺与逻辑设计,大幅提升团队协作与项目交付效率。

weixin_29230059的博客 429

为什么需要知识图谱?什么是知识图谱?——KG的前世今生

我的知乎专栏,对知识图谱感兴趣的朋友可以关注。标题的命名顺序可能让有的读者不太习惯。通常在介绍一个陌生事物的应用前,我们先给出其定义。之所以换个顺序,是为了不让读者一开始就接触比较冰冷生硬的概念刻板描述(后面我尽量用更具体、准确的例子来表达),另一方面也是为了通过现实生活中的例子自然的引入知识图谱的概念。希望通过这种方式加深读者的印象和理解。为了减轻读者理解的负担,我尽可能地避免引入过多的概念和技术

SimmerChan的专栏 8万+

JS常见加密 AES、DES、RSA、MD5、SHAI、HMAC、Base64(编码) - Python/JS实现

JS常见加密 AES、DES、RSA、MD5、SHAI、HMAC、Base64(编码) - Python/JS实现

EXIxiaozhou的博客 1万+

保姆级教程:在Ubuntu 21.04上搞定USRP X410的UHD 4.1驱动与Gnuradio 3.9安装(含虚拟机网络避坑指南)

本文提供在Ubuntu 21.04上配置USRP X410的UHD 4.1驱动与Gnuradio 3.9的详细教程,涵盖虚拟机网络设置、依赖安装、源码编译及常见问题解决方案,帮助开发者高效搭建SDR开发环境。

weixin_27869497的博客 272

Python 调用 JS 常用的4种方式,带你学会如何解密

嗨喽,大家好呀~这里是爱看美女的茜茜呐日常 Web 端爬虫过程中,经常会遇到参数被加密的场景,因此,我们需要分析网页源代码通过调式,一层层剥离出关键的 JS 代码,使用 Python 去执行这段代码,得出参数加密前后的 Python 实现本文将聊聊利用 Python 调用 JS 的4种方式。

m0_72282564的博客 1098

全国区块链职业技能大赛国赛考题前端功能开发

全国区块链职业技能大赛国赛考题区块链应用前端功能开发

本郡主是喵 1334

MATLAB - Gazebo 联合仿真 —— 使用 UR10 机械臂检测和采摘水果

本示例演示如何在 Gazebo 物理模拟器中设置 Universal Robotics UR10 机械臂和仿真环境。您需要配置一个机器人从树上摘苹果的仿真环境。本示例演示如何利用这些工具箱,使用 Universal Robotics UR10 机械手模拟机器人检测并从树上摘取苹果。Robotics System Toolbox™ - 在 Simulink® 和 Gazebo 中对机械手进行建模、规划和模拟。Navigation Toolbox™ - 生成三维环境的占用图。

机器人控制与仿真应用 4182

fromCharCode()和charCodeAt()

fromCharCode() fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串 语法 String.fromCharCode(numX,numX,...,numX) 参数 描述 numX 必需。一个或多个 Unicode 值,即要创建的字符串中的字符的 Unicode 编码。 注释:该方法是 String 的静态方法,字符串中的每...

Jana Jing的分享 5479

第11节:GPU 线程层级:线程、线程块、网格

层级标识变量功能线程threadIdx执行单元,处理数据线程块blockIdx管理多个线程,提供共享内存网格管理多个 blockGPU 编程中,合理安排线程层级,是提升性能的关键。

yumeiguo的博客 211

Python JS的逆向解析

本篇博客转载博客云brucelong 今天开始学习js逆向,b站看了几个视频,发现up主抓包解析流程和我看到的这篇博客所写的流程有很多一样的地方,故转载供大家共同学习。 js的逆向解析 过程: 知道如何寻找登录的接口 知道如何确定js的位置 知道如何观察js的执行过程 知道js的执行方法 确定网站的登录的接口 登录的form表单中action对应的url地址 通过抓包可以...

qq_43808273的博客 2027

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

初探js逆向

转载自 三尾先生 博客 初探js逆向 在开始之前想先说下阅读完三尾先生这篇文章的一点个人理解,文章写得挺好的,很值得新手学习了解,首先谈下逆向破解思路 1.需要逆向的时候一般是遇到了加密问题,加密情况有参数加密,有结果加密。但不管怎样的加密只要页面能正常显示,那就有解密过程! 2.先找到加密的字段名,通过字段名在sources全局搜索 3.在含有这些字段的位置打断点,一般sources里看到的会是一行的压缩代码,我们可以通过点击左下角的双大括号格式化js代码 然后通过断点一步步查看参数在哪一步骤发生了变

slongzhang的博客 9万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JS逆向 | 手把手教你某书网登陆思路解析

点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤行人刁斗风沙暗,公主琵琶幽怨多。网址:aHR0cHM6Ly93ZW5zaH...

pdcfighting的博客 401

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

base64 加密出现+号_Python爬虫进阶 | XX西游混淆加密解析(JS混淆实战案例)

来咯来咯~这次真的来喽!咸鱼练手第二弹。最近风声略紧,咸鱼在这声明:本公众号所有文章仅供技术交流未经许可严禁转载,且本公众号发布的内容不得用于非法用途,如有侵权,请后台联系咸鱼删除文章。【律师函警告】分析请求老规矩先抓包,找了半天没发现有异步请求,不过很快在Html页面里找到了下面的东西:以我多年的经验来看,这个应该是把页面上的属性栏加密,页面展示的时候再按照某种解密的逻辑还原并展示的,就属这种最...

weixin_34236672的博客 179

Python爬虫进阶之JS逆向国航登录

分享另一个破解JS登录的案例,源码地址github.com/GoJerry/air… 抓包 网站如下:www.airchina.com.cn/www/jsp/use… 下面是登录的抓包: 明显 userName 和 password 这两个参数被加密了。 全局搜索参数 userType 或者 upassword。因为一般是根据输入框的 id 标签取值,然后做加密! 搜索结果如下: 猜测应该是...

weixin_30907935的博客 234

JS逆向实例系列---搜X网(图片地址 AES算法加密)

高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。密钥是AES算法实现加密和解密的根本。对称加密算法之所以对称,是因为这类算法对明文的加密和解密需要使用同一个密钥。AES支持三种长度的密钥:128位,192位,256位平时大家所说的AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用。AES的工作模式,体现在把明文块加密成密文块的处理过程中。

m0_52336378的博客 1515

一种爆破登录过程存在密码加密传输的简单方式

在某测试过程中。某登录页面的请求如下: 密码使用了加密方式,且存在验证码,当渗透没有发现其他问题或者是思路的时候,爆破不得不成为我们的选择,但是如何绕过这两个限制进行爆破,测试发现,这个验证码是存在问题的,我们只需要解决第一个问题。全局搜索一下password看看有没有什么发现,如下: 可以看出密码在传输时使用encrypt函数处理,搜索一下这个函数: 貌似是使用Cr...

weixin_30439031的博客 985

爬虫入门经典(二十一) | 破解CSS加密之爬取大众点评

  大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行更新,博客主页:https://buwenbuhuo.blog.youkuaiyun.com/。 PS:由于现在越来越多的人未经本人同意直接爬取博主本人.

不温卜火 8万+

Python 爬虫进阶必备 | 关于投诉平台网页参数 signature 加密逻辑分析

Python 爬虫进阶必备 | 关于投诉平台网页参数 signature 加密逻辑分析(转载) 今日网站 aHR0cHM6Ly90b3VzdS5zaW5hLmNvbS5jbi9jb21wYW55L3ZpZXcvP2NvdWlkPTYzODQ5MTI0MzE= 很久没有写原创了,其实我私底下囤了不少原创的文章,不过都不是爬虫相关的。。。 关于今天这个网站的分析流程还是老三样,直接开搞。抓包与加密定位 这个网站的下拉翻页是 ajax 加载的,所以可以直接在 xhr 翻页里面找到这个请求 打.

weixin_44397410的博客 994

python爬取有道翻译的代码_python实现爬取有道翻译

声明:1.图文思路来源于本站UP:轻松学Python。视频跳转链接。2.爬取时应当robots协议、自觉维护网站权益3.本代码仅限学习交流使用4.转载附初始创作者信息》》》》》》》正文开始1.在有道翻译网页下打开开发者工具栏F122.点击Network->translate->Headers获得翻译请求网址Request URL:http://fanyi.youdao.com/translate_...

weixin_39672296的博客 383

Python爬虫实战(高级篇)—3百度翻译网页版爬虫(附完整代码)

【代码】Python爬虫实战(高级篇)—3百度翻译网页版爬虫(附完整代码)

weixin_42636075的博客 3844

Python采集群人员数据,记录JavaScript逆向分析过程,CSS字体样式的使用

前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里免费领取![外链图片转存中…(img-aFcX2B2c-1712199405773)]由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里免费领取!

2401_84092508的博客 989

python爬虫实战之逆向分析酷狗音乐

这是对于逆向爬虫中的步骤。 本文会使用谷歌浏览器自带的开发者工具,分析网页端的酷狗音乐的请求进行逆向。 当然对于手机端也是可以进行爬虫和逆向的,不过会比网页端复杂多,需要一些工具以及反编译手段,需要java部分基础,这个我们将留到后面讲解学习。

weixin_45859193的博客 7255
上一篇: OnClickListener导包冲突问题及其解决方案
下一篇: AlertDialog 自定义布局点击按钮消失方法
NFMSR
博客等级 码龄11年 59粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值