进来是个简单的扫雷
 
 看源码是纯js写的
 
 看了下主要格子之类的生成逻辑在jms.js里

 其中flag的输出条件也包含在jms.js
 
格式化了一下
 
看特征是base64了,然后又经过了别的操作,不过他混淆了一下就懒得看了。
知道的是每过一个难度的都可以拿到1/3个flag,三个都过了拼一起就行
其index.js 作为入口
var jms = null,
    timeHandle = null;
window.onload = function () {
    var radios = document.getElementsByName("level");
    for (var i = 0, j = radios.length; i < j; i++) {
        radios[i].onclick = function () {
            if (jms != null)
                if (jms.landMineCount > 0)
                    if (!confirm("纭畾缁撴潫褰撳墠娓告垙锛�"))
                        return false;
            var value = this.value;
            init(value, value, value * value / 5 - value, value * value / 5);
            document.getElementById("JMS_main").style.width = value * 40 + 180 + 60 + "px";
        }
    }
    init(10, 10);
};
function init(rowCount, colCount, minLandMineCount, maxLandMineCount) {
    var doc = document,
        landMineCountElement = doc.getElementById("landMineCount"),
        timeShow = doc.getElementById("costTime"),
        beginButton = doc.getElementById("begin");
    if (jms != null) {
        clearInterval(timeHandle);
        timeShow.innerHTML = 0;
        landMineCountElement.innerHTML = 0;
    }
    jms = JMS("landmine", rowCount, colCount, minLandMineCount, maxLandMineCount);
    jms.endCallBack = function () {
        clearInterval(timeHandle);
    };
    jms.landMineCallBack = function (count) {
        landMineCountElement.innerHTML = count;
    };
    //涓衡€滃紑濮嬫父鎴忊€濇寜閽粦瀹氫簨浠�
    beginButton.onclick = function () {
        jms.play();//鍒濆鍖�
        //鏄剧ず鍦伴浄涓暟
        landMineCountElement.innerHTML = jms.landMineCount;
        //寮€濮�
        jms.begin();
        //鏇存柊鑺辫垂鏃堕棿
        timeHandle = setInterval(function () {
            timeShow.innerHTML = parseInt((new Date() - jms.beginTime) / 1000);
        }, 1000);
    };
}
下了几个断点
 
 切换到中级难度,可见init调用时传入了15
而后走到调用了JMS
 
 
这里传入了30和45
然后到jms.js里生成就变成了30和45之间rand

 跑飞一下看看

 首先我改掉了他web的html传参的这仨
 
 全改成了1

 通关了但是不弹flag
 
 然后考虑了下可能是click的参与到了后续的flag输出的运算,于是还原了下,只改了雷的传参部分
修改init的两个相关雷数量的传参

初始的init也可以改一下,不然第一次的初级还是正常的10个雷,需要来回切一下

 
 







![[机器学习]--KNN算法(K邻近算法)](https://i-blog.csdnimg.cn/direct/0bfb50dd50d84775bb92835fe982d0c9.png)










