まず第一に、これは醜いやり方です。おそらく最も醜い。ここに会社名を追加したくない場合は、追加します。それはinteriorwebdesign.comです。ほとんどの場合、サーバーに送信されるのは、magentoバージョン、拡張バージョン、およびWebサイトのURLです。それらに送信されbase64_decode
たsdata
パラメーターの値で実行することにより、確認することができます。ライセンスが正しい場合はどうすればいいのかわかりませんが、エラーが発生した場合の応答は次のとおりです。
checkout.o_p_c_l_s = '2';
deljsphp();
コードでと呼ばれる関数を探しdeljsphp
ます。チェックアウトが無効になると思います。
[編集]
これらのタイプの拡張機能を見ると怒るので、調査に時間を費やすことにしました。
これが私が見つけたものです。リクエストの結果は、サーバー上のjsファイルまたはjsコードへのリンクになります。拡張子からjsファイルをデコードした後、私はこの関数を見つけました:
start: function () {
this.s_code = $('opc_s_data').value;
$('opc_s_data').remove();
if (this.s_code == '') {
this.opcdis();
return false
}
addjsphp(this.s_code);
this.getActionResults(0)
},
したがって、コード「license」が有効である場合、addjsphp
次のように、いくつかのjsがDOMに追加されます。
function addjsphp(u) {
var me = document.createElement('div');
me.setAttribute('id', 'opcstataj');
var p = 'html';
var th1 = document.getElementsByTagName(p)[0];
th1.appendChild(me);
var th = document.getElementById('opcstataj');
var s = document.createElement('script');
s.setAttribute('language', 'javascript');
s.setAttribute('type', 'text/javascript');
s.setAttribute('src', u);
th.appendChild(s)
}
サーバーからのjsがどのように見えるかは(まだ)わかりませんが、試してみることができます。それが機能するかどうかわからない。jsファイルskin\frontend\base\default\js\onepagecheckout.pack.js
を編集し、ファイルの最後にこれを追加します。
function deljsphp(){
return 1;
}
これdeljsphp
により、元の関数がオーバーライドされます。つまり、次のようになります。
function deljsphp() {
var th = $('opcstataj');
if (th && th != null && th != undefined) th.remove()
}
基本的に<script>
、サーバーから追加されたタグを削除します。
その他の情報
質問で言及した行で評価されているコードは次のとおりです。
評価(gzinflate(BASE64_DECODE( 'jZAxb8MgEIXn + FfQCBl7qL1UHRLRDFGkLlWjOM0SVRHBV4NqwIKLqqrKfy84S9MuXeDgcd97BzWiI5xQVDrcPnSAT6IDi24HPmhni3KeUePaqyfP6 + VPWV2Jy5Nv0Hl48X1UJ5OMhqhPow3 / onE95xGXSteec2WFgXhQ51xIjEAuFcj3aaS2AkVsPIoA93cHsNK1UNAwGiZicQNmwM + CHprVZrfa7Nnjdrtu2GtJ8pz8ueWcM2dZuWAKcQhsNu4s0k6 + TwOoULFZXWuL4LXzH3BsIejOVtKZ2lw + pXaD7LUEGyCVl8jVoIZFSHE5q8bY80y / FWlAIJwThhCQlb + NeidFr1zA / 0K / AQ ==')));
さらに進んで...これは実際に評価されるコードです:
$mag = $this->getMagentoVersion();
$mod = $this->getOPCVersion();
$h = $this->getCurStoreUrl();
$s = "mag={$mag}&mod={$mod}&hname={$h}&action=check";
$data = base64_encode($s);
$hs = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS']==='on')?'https':'http';
$url = $hs.'://interiorwebdesign.com/magento/opclicense/opcaction.php?sdata='.$data;
if($mode == 'test')
$url = $hs.'://localhost/opclicense/opcaction.php?sdata='.$data;
これは、サーバーに何が送信されるかについての私の最初の疑いを裏付けています。