某java调用js简单案例

/ 7评 / 0

在抓某网站包时,发现返回的字符串类型是

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);
        }
    }

最终成功解密:

7条回应:“某java调用js简单案例”

  1. 洋洋说道:

    以前总来没想过用JAVA调用JS,怎是见多识广啦。
    不过我认为JS调用需要调用JAVA的场景比较多吧。

  2. onetoone说道:

    请问,楼主用的是什么工具抓网站的包呢?

  3. weapon张说道:

    大兄弟,这个不是加密,是字符的Char值.

发表评论

电子邮件地址不会被公开。 必填项已用*标注