Skip to content

Instantly share code, notes, and snippets.

@zbinlin
Created March 31, 2015 13:37
Show Gist options
  • Save zbinlin/71fbecf30d3e1a61f251 to your computer and use it in GitHub Desktop.
Save zbinlin/71fbecf30d3e1a61f251 to your computer and use it in GitHub Desktop.
/*
* *: alnum
* #: digit
* @: alpha
*/
var alpha = [...("a").repeat(6)].map((c, i) => String.fromCharCode(c.charCodeAt(0) + i)).sort(() => Math.random() - 0.5);
var digit = [...("0").repeat(10)].map((c, i) => String.fromCharCode(c.charCodeAt(0) + i)).sort(() => Math.random() - 0.5);
var alnum = [].concat(alpha, digit).sort(() => Math.random() - 0.5);
var collect = {
"*": alnum,
"#": digit,
"@": alpha
};
var code = "abc";
var PAT = /(\*|#|@)/g;
var codes = [for
(i of permut(...(code.match(PAT) || []).map(i => collect[i])))
code.replace(PAT, i.shift.bind(i))
];
//var codes = [for (i of [1576, 2503, 1553]) for (j of [...("a").repeat(26)].map((c, i) => String.fromCharCode(c.charCodeAt(0) + i))) ["1a3035e", i, "eda6", j].join("")];
//var codes = [for (i of [].concat(alpha)) for (j of [].concat(digit)) ["b16a0ee2", j, "548445", i].join("")];
var idx = -1;
function invcode(idx) {
if (++idx >= codes.length) {
alert("over!");
return;
}
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://****/register.php?", true);
xhr.setRequestHeader("Referer", "http://****/register.php")
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onload = function (res) {
console.log(xhr.responseText);
if (!~xhr.responseText.indexOf("0")) {
setTimeout(function () {
invcode(idx);
}, 4000);
} else {
alert(codes[idx]);
}
};
var data = {
"reginvcode": codes[idx],
"action": "reginvcodeck"
};
var formData = []//new FormData();
for (let [k, v] of iter(data)) {
formData.push([k, v].join("="));
//formData.append(k, v);
}
formData = formData.join("&");
xhr.send(formData);
}
invcode(idx);
function *iter(o) {
for (let i in o) yield [i, o[i]];
}
function permut(...args) {
if (!args.length) return;
var rst = [[]];
while (args.length) {
let temp = [];
let next = args.shift();
for (let i = 0, ilen = rst.length; i < ilen; i++) {
for (let j = 0, jlen = next.length; j < jlen; j++) {
temp.push(rst[i].concat([next[j]]));
}
}
rst = temp;
}
return rst;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment