首页 > 编程语言 >python - execjs使用crypto-js

python - execjs使用crypto-js

时间:2023-06-09 12:44:06浏览次数:39  
标签:python crypto subprocess import CryptoJS js execjs

最近在研究一个网站发现网站使用了des加密,觉得使用python调用js可读性比较高,所以使用了以下方法来实现该网站的内容解密

1. 安装PyExecJS

pip3 install PyExecJs

2. 安装node.js

https://nodejs.org/en/download

3. node安装jsdom,crypto-js

可以到py文件目录在运行npm,方便调用

npm install jsdom
npm install crypto-js

4. 自定义js

var CryptoJS = require('crypto-js')

function decrypt(word) {
    var key = CryptoJS.enc.Utf8.parse("密钥")
    var iv = CryptoJS.enc.Utf8.parse("偏移量")
    var decrypt = CryptoJS.DES.decrypt(
    {
        ciphertext: CryptoJS.enc.Hex.parse(word)
    }, 
    key,
    {
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    })
    var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    return decryptedStr;
}

5. 异常

在调用编写的js函数出现了异常 'NoneType' object has no attribute 'replace,解决办法,在import execjs前先加入以下代码,例如:

import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding='utf-8')

import execjs

6. 最终代码

import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding='utf-8')
import os
import execjs

os.environ["EXECJS_RUNTIME"] = "Node"
with open(r"des.js", 'r', encoding='utf-8') as f:
    context = execjs.compile(f.read(),cwd=r'./node_modules')

res = context.call("decrypt", '解密内容')

标签:python,crypto,subprocess,import,CryptoJS,js,execjs
From: https://www.cnblogs.com/wstong2052/p/17468680.html

相关文章

  • Qt+QtWebApp开发笔记(五):http服务器html中使用json触发ajax与后台交互实现数据更新传递
    前言  前面完成了页面的跳转、登录,很多时候不刷新页面就想刷新局部数据,此时ajax就是此种技术,且是异步的。  本篇实现网页内部使用js调用ajax实现异步交互数据。  在js中使用ajax是通过XMLHttpRequest来实现的。下载地址  链接:https://pan.baidu.com/s/1tJMTPhIIyVE40......
  • python操作excel之 openpyxl
    python操作excel在我们的工作中经常会用到,操作用例读取对应信息进行接口自动化pythonExcel库对比图片我们发现可以操作excel的库有很多种,我们常用的就三种方法第三方库xlwt/xlrd:用于生成和读取比较老的excel文件,比如xls格式,最大行数限制为65536行。其中xlrd是读excel,xlwt是写exc......
  • Three.js教程:常见光源类型
    推荐:将NSDT场景编辑器加入你的3D工具链其他系列工具:NSDT简石数字孪生常见光源类型Threejs虚拟光源是对自然界光照的模拟,threejs搭建虚拟场景的时候,为了更好的渲染场景,往往需要设置不同的光源,设置不同的光照强度,就像摄影师给你拍照要设置各种辅助灯光一样。环境光AmbientLight......
  • jmeter-json断言
    1.JSON断言所在位置:断言->JSON断言2.JSON断言中的字段解析AssertJSONPathexists:json表达式,判断所字段是否存在,存在则为True,否则为FalseAdditionallyassertvalue:附加断言字段对应的值,匹配则为True,否则为FalseMatchasregularexpression:断言表达式,判断字段是否存在,......
  • python-opencv之人脸检测
    引用网址:https://www.it610.com/article/1546269872961425408.htm文章目录一、概述二、相关概念三、实际操作1.图片检测2.打开摄像头进行人脸检测 一、概述`本文为我学习python环境下用opencv检测人脸的内容总结。二、相关概念##opencv中提供了三种训练好的级联分类器(通过不同特......
  • Python是不是被严重高估了?
    目前来说,Python是一门非常流行的编程语言,它具有简单易学、代码可读性高、拥有丰富的第三方库等优点,因此在很多领域都得到了广泛的应用。但是,对于不同的应用场景和需求,不同的编程语言都有其优劣之处,没有一种编程语言是完美的。因此,我认为Python并没有被严重高估,而是在适合的领域得到......
  • JSON是什么?JSON的简单介绍及使用
    一、JSON介绍JSON(JavaScriptObjectNotation)是一种数据结构,当我们需要在不同的应用程序之间传递数据时,我们需要一种通用的格式来表示数据。相比xml交换格式来说,因为解析xml比较的复杂且需要编写大段的代码,而JSON数据更小,也更容易解析。1、JSON基本语法JSON数据与JAVA中......
  • Python基础语法学习
    基础语法1、常量、表达式print(1+2-4)print(1+3*4)形如:1+2-3这个就叫表达式,表达式的结果叫做叫做返回值123这样的数字称为字面值常量,+-*叫做运算符注意在py中2/3=0.66666而不是c语言中的0在C中整数除整数结果还是整数且会把小数直接舍去,在编程中一般不会有......
  • 记录一次 nas docker 运行出错 使用Python脚本检查错误并重启对应容器 npc 运行出
    importosimporttimeimportdatetimeimportsubprocessimportmysql.connector#Docker容器名称container_name="containerName"#MySQL数据库连接配置db_host="localhost"db_user="*********"db_password="*********"db_......
  • Python 协程池,异步IO非阻塞式,http 请求
    先写个FlaskdemoimporttimefromflaskimportFlaskapp=Flask(__name__)@app.route('/<id>')defhello(id):time.sleep(2)return'Hello,World!:%s'%idif__name__=='__main__':app.run()协程请求import......