短い答えは、さまざまなソース(グローバルJavaScript変数、Flash params、およびiframe src)のいずれかからページ上のURLを検索しようとしています。そのURLを見つけて正しい乱数を選択した場合(666、ランダムに100から700まで選択した場合)、そのURLのiframeがページに作成されます。
次に、静的な2つの数値リストの最初に見つかったURLの「CID」を探します。そのリストにCIDが見つかった場合は、他のリストから対応する数値を取得します。次に、第2の正しい乱数が選択されると(1、ランダムに1と6の間で選択される)、それは第2のiframeを付加する。そのiframeのURLはtracking.html?x
となります。ここで、x
はCIDの翻訳で見つかった数値です。
どちらのiframeも表示されません。
これは簡単な回答ですが、詳細が必要な場合は下記をご覧ください。実際に何を達成しようとしているのかを理解するために広告や広告の動作について十分な知識がないため、この点でいくつかの価値を得ることができれば幸いです。
まず、それは関数を作成しようとしますが、それがないすべてのコードのように見えることになっていた文字列を作成しているとして、それは、おとりのように見えます。また、呼び出されることもありません。 var b=
単一引用符で始まり、行は単一引用符で終わること
var analytics_obj=function(){
var b='undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10)}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1"))false,q=false,z=r?/win/.test(r),w=r?/mac/.test(r)/mac/.test(AD);}'
};
は注意してください。真ん中には他に一重引用符がありませんので、コードのように見える長い文字列です。それがeval()
(と私はeval()
このスクリプトのどこにも表示されません)を介して実行するつもりでない限り、それはちょうどおとりです。
次に、乱数を取得するための簡単な省略形の関数を作成します。
3番目は肉の部分です。 URLを取得しようとします。まず、ここで宣言されていないclick_url2
という変数を試します。そのため、別のスクリプトからその変数を取り除く必要があります。
それはそのFlashVarsのかURLでclickTag=
またはclick=
を持っているページ上のフラッシュムービーを見つけ、そして=
後の値をキャプチャしようとすると、それに失敗。それに失敗
は、それはそれで次のテキストを持つSRCを持っているのiframeを探します:click=
または[email protected]=
、http://media.fastclick.net/w/click.here
とforced_click=
が続き、そのテキストhttp
から始まり、そしてforced_click=
で終わるのすべてをキャプチャします。これにURL:http://cc.openxads.org/clothedcanines.com/popped_content.html
を追加します。
この動作は以下の通りです:その後
try {
follow.push(click_url2);
} catch(e){
try {
follow.push(unescape($('object param[name="flashvars"]').attr('value').match(/clickTag=([^&]*)/)[1]));
} catch(e){
try {
follow.push(unescape($('object param[name="movie"]').attr('value').match(/clickTag=([^&]*)/)[1]));
} catch(e){
try {
follow.push(unescape($('object param[name="FlashVars"]').attr('value').match(/clickTag=([^&]*)/)[1]));
} catch(e){
try {
follow.push(unescape($('embed').attr('flashvars').match(/clickTag=([^&]*)/)[1]));
} catch(e){
try {
follow.push(unescape($('embed').attr('flashvars').match(/click=([^&]*)/)[1]));
} catch(e){
try {
follow.push(unescape($('iframe').attr('src').match(/click=(http:\/\/media\.fastclick\.net\/w\/click\.here.*forced_click=)/)[1])+"http%3A%2F%2Fcc.openxads.org%2Fclothedcanines.com%2Fpopped_content.html");
} catch(e) {
try {
follow.push(unescape($('iframe').attr('src').match(/[email protected]=(http:\/\/media\.fastclick\.net\/w\/click\.here.*forced_click=)/)[1])+"http%3A%2F%2Fcc.openxads.org%2Fclothedcanines.com%2Fpopped_content.html");
} catch(e) {};
};
};
};
};
};
};
};
、それは数字の2つの非常に長い配列を宣言します。私は彼らが何であるかについての手がかりは持っていませんが、後の行動に基づいて、彼らは並行しているようです。
上記の条件(変数、フラッシュ、またはiframe)が見つかった場合は、それが続きます。そうでなければ失敗する。
なお、この時点で選択された最初の番号が666である場合は、ページ上のiframeを作成し、1および6
間に2つの乱数、100と700との間の第一、及び第二のを選択します、非常に小さく隠されていて、見ることを意図していません。 iframeのsrcは、上にキャプチャしたURLと同じになります。
(最初の番号が666の場合でも)、トリッキーな部分があります。それは先にキャプチャしたURLにcid=
を見つけようとし、それの(予想数値)値を取得します。この数値は、以前に宣言された配列の1つに対してチェックされます。見つかった場合は、見つかった値と同じインデックスの値を別の配列から取得します。本質的には、これは単なる変換テーブルであり、いわゆるCIDを異なるが対応する数値に変更する。
もし一致すれば、2番目の乱数(1と6の間)が1なら2番目のiframeを添付します。 2番目のiframeのsrcはtracking.html?
になり、2番目の配列から取得した数値が追加されます。その値は最初の配列からの値と一致して取得されます。
if(trk_value[$.inArray(1*(follow[0].match(/cid=([\d]*)/)[1]),tracking)]){
if(rand2==1){
$('<iframe />', {
name:'trk_analytics',id:'trk_analytics',style:'width:2px;height:2px;display:none;',width:'2',height:'2',
src:'tracking.html?'+trk_value[$.inArray(1*(follow[0].match(/cid=([\d]*)/)[1]), tracking)]
}).appendTo('body');
}
}
あなたはそれが何をしているのかわからない場合、どうすればGoogleアナリティクスではないことがわかりますか? –
明らかに難読化されています。誰かがそのコードを解くことができるかどうかはわかりません。コードを調べるよりも、javascriptコンソールを使い、出力をテストする方が良いでしょう。 –
私はそれもフラッシュで何かをするように見えます。神様、私は今できるほど速く走っています。 – hugomg