2016-04-11 7 views
0

私はバックエンドでC#コードでロジックを再作成して、次のJavaScriptを実行しようとしています。 Webコンテンツにアクセスするために「sucuri_cloudproxy_js」クッキーを取得しようとしていますが、このクッキーを取得するにはこのJavaScriptを実行する必要があります。 C#でjavascriptを実行する最も効率的な方法は何ですか?ありがとうございました!C#でJavaScriptを実行

var s = {}, 
u, c, U, r, i, l = 0, 
a, e = eval, 
w = String.fromCharCode, 
sucuri_cloudproxy_js = '', 
S = 'dj0nd0U3Jy5jaGFyQXQoMikrU3RyaW5nLmZyb21DaGFyQ29kZSg5OSkgKyAiIiArIjZzdSIuc2xpY2UoMCwxKSArICI5c3UiLnNsaWNlKDAsMSkgKyAnNScgKyAgIjUiICsgImZzZWMiLnN1YnN0cigwLDEpICsgIjNzdWN1ciIuY2hhckF0KDApKyAnJyArIAoiMyIgKyAiIiArImQiLnNsaWNlKDAsMSkgKyAgJycgKyIwc3UiLnNsaWNlKDAsMSkgKyAgJycgKydlJyArICAiYyIgKyAiIiArImJzdWN1ciIuY2hhckF0KDApK1N0cmluZy5mcm9tQ2hhckNvZGUoMHgzMikgKyAgJycgKycnKydlJyArICAiOCIuc2xpY2UoMCwxKSArICAnJyArJ2ZLNycuY2hhckF0KDIpKydANCcuc2xpY2UoMSwyKSsiIiArImQiICsgICcnICsgCiJiIiArICI5IiArICAnJyArJycrU3RyaW5nLmZyb21DaGFyQ29kZSg1NCkgKyAiYiIgKyAgJycgKyAKIjYiICsgJzAnICsgICIiICsiNyIgKyAnb01kJy5jaGFyQXQoMikrImFzZWMiLnN1YnN0cigwLDEpICsgU3RyaW5nLmZyb21DaGFyQ29kZSg0OSkgKyAgJycgKycnKyc4JyArICAiZHNlYyIuc3Vic3RyKDAsMSkgKyAnJztkb2N1bWVudC5jb29raWU9J3NzdWMnLmNoYXJBdCgwKSsgJ3VzdWMnLmNoYXJBdCgwKSsgJ2MnKyd1JysncicrJ2knKydfJysnYycuY2hhckF0KDApKydsc3UnLmNoYXJBdCgwKSArJ3N1Y3VybycuY2hhckF0KDUpICsgJ3UnKydzdWN1cmQnLmNoYXJBdCg1KSArICdwc3VjdXInLmNoYXJBdCgwKSsgJ3InKydvJysneHN1Y3VyJy5jaGFyQXQoMCkrICd5Jy5jaGFyQXQoMCkrJ18nKycnKyd1c3VjdXInLmNoYXJBdCgwKSsgJ3N1Jy5jaGFyQXQoMSkrJ2knKycnKydkJysnX3MnLmNoYXJBdCgwKSsnM3N1Y3UnLmNoYXJBdCgwKSAgKycwJysnZCcrJzEnLmNoYXJBdCgwKSsnOXN1Y3UnLmNoYXJBdCgwKSAgKydzdTknLmNoYXJBdCgyKSsnc3VjdXIzJy5jaGFyQXQoNSkgKyAnYXN1Y3VyaScuY2hhckF0KDApICsgJ2YnKyI9IiArIHY7IGxvY2F0aW9uLnJlbG9hZCgpOw=='; 
L = S.length; 
U = 0; 
r = ''; 
var A = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/'; 
for (u = 0; u < 64; u++) { 
    s[A.charAt(u)] = u; 
} 
for (i = 0; i < L; i++) { 
c = s[S.charAt(i)]; 
U = (U << 6) + c; 
l += 6; 
    while (l >= 8) { 
    ((a = (U >>> (l -= 8)) & 0xff) || (i < (L - 2))) && (r += w(a)); 
    } 
} 
e(r); 
+0

'' sucuri_cloudproxy_js 'クッキーを取得する - ウェブサイトを書くとき、JavaScriptはフロントエンド(ブラウザ内)で動作するように設計されています。サーバ側で(c#を使用して)実行しようとすると、ブラウザからクッキーを取得することはありません。実行中のC#コードにブラウザのクッキーが必要な場合は、c#を使用してそれを行うことができます。 – Igor

+1

「最も効率的」はかなり広いです。メモリの面で効率的ですか? CPU?コーディングに必要なコーヒーのカップ数?また、SOはコード作成サービスではありません。 JSをC#に変換しようとしているのであれば、実際にそれを試みてください。そして、特定の部分にこだわっていれば、助けてくれるかもしれません。 –

+0

クッキーの内容が必要な場合は、投稿したコードに対して 'sucuri_cloudproxy_uuid_30d1993af = 7c6955f33d0ecb2e874db96b607da18d'となります。なぜあなたはC#からjavascriptを実行したいのですか? – Jcl

答えて

3

これは、いくつかの種類の基本64デコードアルゴリズムのようです。 C#にはbase64デコーダが組み込まれていますが、試してみることもできます。あるいは、 'S'が決して変更されない場合は、これをjavascriptで実行し、その結果をC#プログラムに入れることができます。 JavaScriptコンソールでこれを実行

var s = {}, 
u, c, U, r, i, l = 0, 
a, e = eval, 
w = String.fromCharCode, 
sucuri_cloudproxy_js = '', 
S = 'dj0nd0U3Jy5jaGFyQXQoMikrU3RyaW5nLmZyb21DaGFyQ29kZSg5OSkgKyAiIiArIjZzdSIuc2xpY2UoMCwxKSArICI5c3UiLnNsaWNlKDAsMSkgKyAnNScgKyAgIjUiICsgImZzZWMiLnN1YnN0cigwLDEpICsgIjNzdWN1ciIuY2hhckF0KDApKyAnJyArIAoiMyIgKyAiIiArImQiLnNsaWNlKDAsMSkgKyAgJycgKyIwc3UiLnNsaWNlKDAsMSkgKyAgJycgKydlJyArICAiYyIgKyAiIiArImJzdWN1ciIuY2hhckF0KDApK1N0cmluZy5mcm9tQ2hhckNvZGUoMHgzMikgKyAgJycgKycnKydlJyArICAiOCIuc2xpY2UoMCwxKSArICAnJyArJ2ZLNycuY2hhckF0KDIpKydANCcuc2xpY2UoMSwyKSsiIiArImQiICsgICcnICsgCiJiIiArICI5IiArICAnJyArJycrU3RyaW5nLmZyb21DaGFyQ29kZSg1NCkgKyAiYiIgKyAgJycgKyAKIjYiICsgJzAnICsgICIiICsiNyIgKyAnb01kJy5jaGFyQXQoMikrImFzZWMiLnN1YnN0cigwLDEpICsgU3RyaW5nLmZyb21DaGFyQ29kZSg0OSkgKyAgJycgKycnKyc4JyArICAiZHNlYyIuc3Vic3RyKDAsMSkgKyAnJztkb2N1bWVudC5jb29raWU9J3NzdWMnLmNoYXJBdCgwKSsgJ3VzdWMnLmNoYXJBdCgwKSsgJ2MnKyd1JysncicrJ2knKydfJysnYycuY2hhckF0KDApKydsc3UnLmNoYXJBdCgwKSArJ3N1Y3VybycuY2hhckF0KDUpICsgJ3UnKydzdWN1cmQnLmNoYXJBdCg1KSArICdwc3VjdXInLmNoYXJBdCgwKSsgJ3InKydvJysneHN1Y3VyJy5jaGFyQXQoMCkrICd5Jy5jaGFyQXQoMCkrJ18nKycnKyd1c3VjdXInLmNoYXJBdCgwKSsgJ3N1Jy5jaGFyQXQoMSkrJ2knKycnKydkJysnX3MnLmNoYXJBdCgwKSsnM3N1Y3UnLmNoYXJBdCgwKSAgKycwJysnZCcrJzEnLmNoYXJBdCgwKSsnOXN1Y3UnLmNoYXJBdCgwKSAgKydzdTknLmNoYXJBdCgyKSsnc3VjdXIzJy5jaGFyQXQoNSkgKyAnYXN1Y3VyaScuY2hhckF0KDApICsgJ2YnKyI9IiArIHY7IGxvY2F0aW9uLnJlbG9hZCgpOw=='; 
L = S.length; 
U = 0; 
r = ''; 
var A = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/'; 
for (u = 0; u < 64; u++) { 
    s[A.charAt(u)] = u; 
} 
for (i = 0; i < L; i++) { 
c = s[S.charAt(i)]; 
U = (U << 6) + c; 
l += 6; 
    while (l >= 8) { 
    ((a = (U >>> (l -= 8)) & 0xff) || (i < (L - 2))) && (r += w(a)); 
    } 
} 
r; 

これを与える:

v='wE7'.charAt(2)+String.fromCharCode(99) + "" +"6su".slice(0,1) + "9su".slice(0,1) + '5' + "5" + "fsec".substr(0,1) + "3sucur".charAt(0)+ '' + 
"3" + "" +"d".slice(0,1) + '' +"0su".slice(0,1) + '' +'e' + "c" + "" +"bsucur".charAt(0)+String.fromCharCode(0x32) + '' +''+'e' + "8".slice(0,1) + '' +'fK7'.charAt(2)+'@4'.slice(1,2)+"" +"d" + '' + 
"b" + "9" + '' +''+String.fromCharCode(54) + "b" + '' + 
"6" + '0' + "" +"7" + 'oMd'.charAt(2)+"asec".substr(0,1) + String.fromCharCode(49) + '' +''+'8' + "dsec".substr(0,1) + '';document.cookie='ssuc'.charAt(0)+ 'usuc'.charAt(0)+ 'c'+'u'+'r'+'i'+'_'+'c'.charAt(0)+'lsu'.charAt(0) +'sucuro'.charAt(5) + 'u'+'sucurd'.charAt(5) + 'psucur'.charAt(0)+ 'r'+'o'+'xsucur'.charAt(0)+ 'y'.charAt(0)+'_'+''+'usucur'.charAt(0)+ 'su'.charAt(1)+'i'+''+'d'+'_s'.charAt(0)+'3sucu'.charAt(0) +'0'+'d'+'1'.charAt(0)+'9sucu'.charAt(0) +'su9'.charAt(2)+'sucur3'.charAt(5) + 'asucuri'.charAt(0) + 'f'+"=" + v; location.reload(); 

はlocation.reloadを脱いでそれを実行し、それが文字列で結果:

"sucuri_cloudproxy_uuid_30d1993af=7c6955f33d0ecb2e874db96b607da18d" 

そのすべてがもともとeval関数に渡されていたので、結局、私はあなたが7cを望んでいると推測しています... 18d、またはuuid変数と何か関係があります。

Sが変更された場合は、このすべてをリバースエンジニアリングするか、サーバーサイドツールを使用してjavascriptを実行する方法を見つける必要があります。おそらく、あなたはおそらくphantomjsのようなものを使うことができます。マークEvaulからの回答に追加

+0

"sucuri_cloudproxy_uuid_30d1993af = 7c6955f33d0ecb2e874db96b607da18d"は私が必要とする正確なクッキーです。 Sはページにアクセスしようとするたびに変わるので、私は一般的な解決策が必要です。私は簡単にSを解析することができますが、それはまだ難しいです。 – Mike

+1

まあ、Sをデコードすると、あなたが必要とする難読化されたクッキーが得られます。難読化はかなり基本的/パターン化されています。あなたが本当にしたい場合は、おそらくC#でこの文字列を処理することができます。たとえば、+(文字列の連結以外の場所では+が表示されず、各部分を処理して文字列をアセンブルします。文字列を取得するには 'wE7'.charAt(2)などの正規表現を使用します。 C#でインデックスを作成し、インデックスを作成します。String.fromCharCodeには、同様のC#メソッドがあります。コードを正規表現します。スライスは基本的に部分文字列なので、正規表現で文字列とインデックスを取得します。 –

0

、クッキーの内容は、参照することにより、あなたのコントローラのコードで利用できるようになります。

Request.Cookies["sucuri_cloudproxy_js"].Value 

あなたはクッキーの値をデコードする値に置き換えアルゴリズムを実行することができます。

関連する問題