20240120爬虫更新JS逆向
This commit is contained in:
parent
4fb91924f6
commit
c41fa032c9
|
|
@ -0,0 +1,8 @@
|
||||||
|
#-*- encoding:utf-8 -*-
|
||||||
|
|
||||||
|
'''
|
||||||
|
@Author : dingjiawen
|
||||||
|
@Date : 2024/1/11 16:45
|
||||||
|
@Usage :
|
||||||
|
@Desc :
|
||||||
|
'''
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
# -*- encoding:utf-8 -*-
|
||||||
|
|
||||||
|
'''
|
||||||
|
@Author : dingjiawen
|
||||||
|
@Date : 2024/01/12 15:50
|
||||||
|
@Usage :
|
||||||
|
@Desc :
|
||||||
|
'''
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
function hook(object, attr) {
|
||||||
|
var func = object[attr]
|
||||||
|
object[attr] = function () {
|
||||||
|
console.log('hooked', object, attr)
|
||||||
|
var ret = func.apply(object, arguments)
|
||||||
|
debugger
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
}
|
||||||
|
hook(window, 'btoa')
|
||||||
|
const form = {
|
||||||
|
username: "admin",
|
||||||
|
password: "admin"
|
||||||
|
}
|
||||||
|
|
||||||
|
const a = window['btoa'].apply(JSON.stringify(form))
|
||||||
|
console.log(a)
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
# -*- encoding:utf-8 -*-
|
||||||
|
|
||||||
|
'''
|
||||||
|
@Author : dingjiawen
|
||||||
|
@Date : 2024/01/12 20:04
|
||||||
|
@Usage :
|
||||||
|
@Desc :
|
||||||
|
'''
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,15 @@
|
||||||
|
// const ciphertext = CryptoJS.encrypt(message, key).toString();
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// function getToken(player) {
|
||||||
|
// let key = CryptoJS.enc.Utf8.parse("fipFfVsZsTda94hJNKJfLoaqyqMZFFimwLt")
|
||||||
|
// const {name, birthday, height, weight} = player
|
||||||
|
// let base64Name = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(name))
|
||||||
|
// let encrypted = CryptoJS.DES.encrypt(`${base64Name}${birthday}${height}${weight}`, key, {
|
||||||
|
// mode: CryptoJS.mode.ECB,
|
||||||
|
// padding: CryptoJS.pad.Pkcs7
|
||||||
|
// })
|
||||||
|
// return encrypted.toString()
|
||||||
|
// }
|
||||||
|
|
||||||
|
!(function(a,b){console.log('result',a,b)})(1,2)
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
# -*- encoding:utf-8 -*-
|
||||||
|
|
||||||
|
'''
|
||||||
|
@Author : dingjiawen
|
||||||
|
@Date : 2024/01/12 20:11
|
||||||
|
@Usage :
|
||||||
|
@Desc :测试执行js的环境
|
||||||
|
'''
|
||||||
|
|
||||||
|
import execjs
|
||||||
|
|
||||||
|
|
||||||
|
print(execjs.get().name)
|
||||||
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
# -*- encoding:utf-8 -*-
|
||||||
|
|
||||||
|
'''
|
||||||
|
@Author : dingjiawen
|
||||||
|
@Date : 2024/01/12 20:28
|
||||||
|
@Usage :
|
||||||
|
@Desc :模拟执行crypto
|
||||||
|
'''
|
||||||
|
|
||||||
|
import execjs
|
||||||
|
import json
|
||||||
|
|
||||||
|
player = {
|
||||||
|
"name": "凯文-杜兰特",
|
||||||
|
"image": "durant.png",
|
||||||
|
"birthday": "1988-09-29",
|
||||||
|
"height": "208cm",
|
||||||
|
"weight": "108.9KG"
|
||||||
|
}
|
||||||
|
|
||||||
|
file = 'crypto.js'
|
||||||
|
node = execjs.get()
|
||||||
|
|
||||||
|
ctx = node.compile(open(file).read())
|
||||||
|
|
||||||
|
js = f"getToken({json.dumps(player, ensure_ascii=False)})"
|
||||||
|
|
||||||
|
print(js)
|
||||||
|
result = ctx.eval(js)
|
||||||
|
print(result)
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
#-*- encoding:utf-8 -*-
|
||||||
|
|
||||||
|
'''
|
||||||
|
@Author : dingjiawen
|
||||||
|
@Date : 2024/1/11 16:46
|
||||||
|
@Usage :
|
||||||
|
@Desc :
|
||||||
|
'''
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
//前提:安装 npm i -D javascript-obfuscator
|
||||||
|
|
||||||
|
const code = `
|
||||||
|
let x = '1'+1
|
||||||
|
console.log('x',x)
|
||||||
|
`
|
||||||
|
|
||||||
|
const options = {
|
||||||
|
compact: false,
|
||||||
|
controlFlowFlattening: true
|
||||||
|
}
|
||||||
|
|
||||||
|
const obfuscator = require('javascript-obfuscator')
|
||||||
|
|
||||||
|
function obfuscate(code, options) {
|
||||||
|
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(obfuscate(code, options))
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
//代码压缩
|
||||||
|
|
||||||
|
const code = `
|
||||||
|
let x = '1'+1
|
||||||
|
console.log('x',x)
|
||||||
|
`
|
||||||
|
|
||||||
|
const options = {
|
||||||
|
compact: true,
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const obfuscator = require('javascript-obfuscator')
|
||||||
|
|
||||||
|
function obfuscate(code, options) {
|
||||||
|
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(obfuscate(code, options))
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
//变量混淆
|
||||||
|
|
||||||
|
// const code = `
|
||||||
|
// let x = '1'+1
|
||||||
|
// console.log('x',x)
|
||||||
|
// `
|
||||||
|
|
||||||
|
// const options = {
|
||||||
|
// compact: true,
|
||||||
|
// identifierNamesGenerator:'mangled'
|
||||||
|
// }
|
||||||
|
|
||||||
|
// const options = {
|
||||||
|
// identifiersPrefix:'germey'
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
const code = `
|
||||||
|
var $ = function(id){
|
||||||
|
return document.getElementById(id);
|
||||||
|
};
|
||||||
|
`
|
||||||
|
const options = {
|
||||||
|
renameGlobals: true
|
||||||
|
}
|
||||||
|
|
||||||
|
const obfuscator = require('javascript-obfuscator')
|
||||||
|
|
||||||
|
function obfuscate(code, options) {
|
||||||
|
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(obfuscate(code, options))
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
//字符串混淆
|
||||||
|
const code = `
|
||||||
|
var a = 'hello world'
|
||||||
|
`
|
||||||
|
// const options = {
|
||||||
|
// stringArray: true,
|
||||||
|
// rotateStringArray: true,
|
||||||
|
// stringArrayEncoding: ['none'], // none, 'base64', 'rc4'
|
||||||
|
// stringArrayThreshold: 1,
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
|
||||||
|
const options = {
|
||||||
|
compact: false,
|
||||||
|
unicodeEscapeSequence: true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const obfuscator = require('javascript-obfuscator')
|
||||||
|
|
||||||
|
function obfuscate(code, options) {
|
||||||
|
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(obfuscate(code, options))
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
//代码自我保护
|
||||||
|
|
||||||
|
const code = `
|
||||||
|
console.log('hello world')
|
||||||
|
`
|
||||||
|
|
||||||
|
const options = {
|
||||||
|
selfDefending: true
|
||||||
|
}
|
||||||
|
|
||||||
|
const obfuscator = require('javascript-obfuscator')
|
||||||
|
|
||||||
|
function obfuscate(code, options) {
|
||||||
|
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(obfuscate(code, options))
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
//无用代码注入
|
||||||
|
|
||||||
|
const code = `
|
||||||
|
console.log('abc');
|
||||||
|
console.log('cde');
|
||||||
|
console.log('efg');
|
||||||
|
console.log('hij');
|
||||||
|
`
|
||||||
|
|
||||||
|
const options = {
|
||||||
|
compact: false,
|
||||||
|
deadCodeInjection: true,
|
||||||
|
deadCodeInjectionThreshold: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
const obfuscator = require('javascript-obfuscator')
|
||||||
|
|
||||||
|
function obfuscate(code, options) {
|
||||||
|
return obfuscator.obfuscate(code, options).getObfuscatedCode()
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(obfuscate(code, options))
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
# -*- encoding:utf-8 -*-
|
||||||
|
|
||||||
|
'''
|
||||||
|
@Author : dingjiawen
|
||||||
|
@Date : 2024/01/12 14:28
|
||||||
|
@Usage :
|
||||||
|
@Desc :
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
a ="eyJ1c2VybmFtZSI6ImFkbWluIiwicGFzc3dvcmQiOiJhZG1pbiJ9"
|
||||||
|
|
||||||
|
print(len(a))
|
||||||
Loading…
Reference in New Issue