01/10/2018, 01:08
Làm sao để đọc mã Java Script này?
eval(function (p, a, c, k, e, d) { e = function (c) { return (c < a ? ' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!'.replace(/^/, String)) { while (c--) { d[e(c)] = k[c] || e(c) } k = [function (e) { return d[e] }]; e = function () { return '\w+' }; c = 1 }; while (c--) { if (k[c]) { p = p.replace(new RegExp('\b' + e(c) + '\b', 'g'), k[c]) } } return p }('8 1k=3(){2.i=[];2.L=[];2.X(1s("1t"))};1k.1r={1a:3(a){2.n=a},y:3(){4 2.n},1b:3(a){2.1i=a},1w:3(){4 2.1i},18:3(a){2.1l=a},1H:3(){4 2.1l},12:3(a){2.1d=a},o:3(){4 2.1d},16:3(a){2.1n=a},1x:3(){4 2.1n},19:3(a){2.1m=a},G:3(){4 2.1m},1A:3(a){2.i.t(a)},1B:3(a){4 2.i[a]},1F:3(a){2.1c=a},H:3(){4 2.1c},15:3(a){2.z=a},I:3(){4 2.z},X:3(a){2.Y=a},g:3(){4 2.Y},13:3(a){2.10=a},1z:3(){4 2.10},17:3(a){2.F=a},1y:3(){4 2.F},14:3(a){2.V=a},1C:3(){4 2.V},D:3(){8 a=[],b;m(b 1D 2.i)2.i.1G(b)&&a.t(2.i[b]);4 a.1E(",")},Z:3(a){"S"!==U a&&(a=l.T(a.d),2.1b(a.1v),2.18(a.1q),2.12(a.q),2.1a(a.n),2.16(a.1u),2.19(a.E),2.15(a.z),2.14(a.1J),2.13(a.21),2.17(a.F))},20:3(a){8 b=2,c=b.g()+"/1Z.j/1X",d={9:0};"x"==k&&(d.9=1);d=l.K(d);4 w.r({v:c,23:"C",1I:"s",22:!1,24:!0,J:"N/s",u:d,R:3(c){b.Z(c);"S"!==U a&&(c=l.T(c.d),a(c))}})},25:3(){8 a=2,b={9:0,26:1,q:a.o()};"x"==k&&(b.9=1);8 c=a.g()+"/1Y.j";4 w.r({v:c,B:"1V",u:b,R:3(b){a.L.t(c);0==b&&(Q.O.M.P=a.g()+"/11.j?W=0");-1==b&&(Q.O.M.P=a.g()+"/11.j?W=-1")}})},1N:3(){},1M:3(a){a={9:0,n:2.y(),q:2.o(),E:2.G(),1L:a};"x"==k&&(a.9=1);a=l.K(a);8 b=2.g()+"/1W.j/1K";2.L.t(b);4 w.r({v:b,B:"C",u:a,J:"N/s"})},1O:3(){8 a=2,b={9:0,n:a.y(),q:a.o(),E:1g(a.y(),a.o(),a.G(),a.H(),a.D(),a.I()),1P:a.H(),1U:a.D(),z:a.I()};"x"==k&&(b.9=1);8 b=l.K(b),c=a.g()+"/1S.j/1Q";4 w.r({v:c,B:"C",J:"N/s",u:b,R:3(b){b=b.d;"1R"==k&&(Q.O.M.P=a.g()+"/"+b.p(7,b.h))}})}};3 1T(a,b){m(8 c="",d=a.A("").h/(b+1),e=1;e<=d;e++)c+=a.p(e*b+(e-1),e*b+1+(e-1));4 c}3 1p(a,b){m(8 c=a.A(""),d="",e=0;e<c.h;e++)8 f=1f.1e().1j(1o).p(0,b),d=d+(f+c[e]);4 d}3 1h(a){a=a.A("");m(8 b="",c=0;c<a.h;c++)b+=a[a.h-c-1];4 b}3 1g(a,b,c,d,e,f){f=a+'","'+b+'","'+1p(c,6)+'","'+d+'","'+e+'","'+f;f=1h(f);a=f.A("");b="";m(c=0;c<a.h;c++)f=1f.1e().1j(1o).p(0,5),b+=f+a[c];4 b};', 62, 131, '||this|function|return||||var|local|||||||getBaseUrl|length|questionScore|aspx|ENV|JSON|for|userId|getExam|substring|which_exam|ajax|json|push|data|url|jQuery|dev|getUserId|ran|split|type|POST|getStringScores|Token|site_de|getToken|getTotalScore|getRan|contentType|stringify|debug|location|application|top|href|window|success|undefined|parse|typeof|userName|login|setBaseUrl|baseUrl|handleGameDataResponse|lang|Default|setExam|setLang|setUserName|setRan|setGameId|setSiteDe|setClasses|setToken|setUserId|setRound|totalScore|exam|random|Math|press|pressl|round|toString|Api|classes|token|gameId|36|presst|block|prototype|getParameterFromUrl|site_url|game_id|which_round|getRound|getGameId|getSiteDe|getLang|setScore|getScore|getUserName|in|join|setTotalScore|hasOwnProperty|getClasses|dataType|full_name|PostPoint|point|sendUserScoreWhenSubmitQuestion|sendDataWhenClickToQuestion|sendTotalUserScore|totalPoint|SendtotalPoint|production|SubmitTotalPoint|compers|subPoint|GET|sendPoint|getdata|Timer|urlData|getGameData|language|processData|method|crossDomain|sendUserDataConfirm|start'.split('|'), 0, {}))
Mình có đoạn mã như trên, làm thế nào để đọc nó?
Xin lỗi, mình là newbie.
Bài liên quan
Đoạn javascript này đã được minify - tức là nén lại sao cho dung lượng nhỏ nhất để tăng tốc độ load (đặt tên 1 kí tự, xóa khoảng trắng,…).
Muốn dễ đọc hơn, bạn có thể xài tool này để unminify nó: http://unminify.com/. Dù vậy tên biến vẫn là 1 kí tự nhé
nếu b dùng sublime thì có thể down 1 số plugin là đẹp code js về và sài.
https://packagecontrol.io/packages/HTML-CSS-JS%20Prettify
Nếu bạn xem kỹ sẽ thấy cái code đó nó làm như thế này:
Giải thích từng bước:
Để xem mã nó thì bạn copy cái đoạn trong cái eval ra, chỉ để lại function và code minified, paste vào Chrome Dev Tools, sẽ ra được đoạn mã gốc, sau đó dùng tool unminify để ra mã như ban đầu
Kết quả:
Thay
eval
bằngconsole.log
rồi mở Console lên chạy.