在抓某网站包时,发现返回的字符串类型是
8329185·3300032·1208117·4303402·5259374·3361742·5463·5847·51045·11019·0465·6830·21043·7972·31194·11151·01044·3972
不知道是什么加密,在控制台模式下,找到了该方法对应的解密方法,如下
function call_decode(a) { a = a.split("\u00b7"); for (var c = "", b = 0, d = a.length; b < d; ++b)a[b] = a[b].substr(1), a[b] = a[b].substring(0, a[b].length - 1), c += String.fromCharCode(a[b]); return c }
因为不懂js,所以也不清楚怎么还原回来,百度了下java直接调用js方法,很简单,代码如下:
public static void main(String[] args) throws FileNotFoundException, ScriptException, NoSuchMethodException { String filename = "8329185·3300032·1208117·4303402·5259374·3361742·5463·5847·51045·11019·0465·6830·21043·7972·31194·11151·01044·3972·11108·41076·3468·9828·21015·51007·01016·71090·11124·01164·81058·71111·31109·2463·4496·6575·4570·2527·9462·6661·71081·91178·81146·8970·01219·4468·8552·9501·1482·51125·8461·11203·2504·0541·6526·2464·8521·2656·81170·71009·01052·71118·4457·0786·01115·11198·7893·1830·7462·11094·91074·81187"; ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript"); engine.eval(new FileReader("C:\\Users\\qtfreet\\Desktop\\haha\\src\\test.js")); if (engine instanceof Invocable) { Invocable in = (Invocable) engine; String result = (String) in.invokeFunction("call_decode", filename); System.out.println(result); } }
最终成功解密:
以前总来没想过用JAVA调用JS,怎是见多识广啦。
不过我认为JS调用需要调用JAVA的场景比较多吧。
@洋洋 是啊,不过能够正常调用js的一些加解密算法的话就没必要再去还原了,哈哈
@qtfreet00 此举适合破解,往往了解了算法的话,直接JAVA就搞定啦。 😮
请问,楼主用的是什么工具抓网站的包呢?
@onetoone charles
大兄弟,这个不是加密,是字符的Char值.
@weapon张 不懂js啊