Versteckte Werte in einer Erweiterung - Codierung Decodierung Datentransaktion

7

Ich habe eine interessante Erweiterung für onepagecheckout gefunden. Es scheint kostenlos zu sein, aber als ich die Erweiterung installiert habe, habe ich festgestellt, dass der Code Daten an Entwicklerserver sendet und codiert. Theoretisch wird ein Lizenzwert validiert - ich weiß nicht warum, weil er kostenlos ist. Außerdem sagt die Site nichts über diesen versteckten Wert aus, der an ihre Server übergeben wurde, aber .. OK. - es ist kostenlos.

Aufgrund der Tatsache, dass dieser spezielle Bereich Informationen über Kreditkarten verwaltet, möchte ich wissen, welche Werte sie übergeben. Bei meinen Nachforschungen stellte ich fest, dass sich der an ihre Server gesendete Code in einer Zeile befindet, die id=opc_s_datamit einem Aufruf an Folgendes aufgerufen wird :

public function getSUrl($mode = '') {
    $code = Mage::getStoreConfig('onepagecheckout/sdatacode');
    eval(base64_decode($code));
    if(!isset($url))
        $url = '';
    return $url;
}

und der gesendete Wert ist ungefähr so:

<input type='hidden' id='opc_s_data'
    value='http://company.com/magento/opclicense/opcaction.php?sdata=bWFEuN......=='/

Weiß jemand, was ich tun kann, um die von seinen Servern an meine Anwendung gesendeten Informationen zu dekodieren? Wenn ich diese versteckte ID lösche, funktioniert das Onepagecheckout nicht.

Haftungsausschluss: Ich habe an den Entwickler geschrieben, aber nie eine Antwort erhalten.

Sch
quelle

Antworten:

16

Zunächst möchte ich sagen, dass dies eine hässliche Art ist, Dinge zu tun. Höchstwahrscheinlich das hässlichste. Wenn Sie den Firmennamen hier nicht hinzufügen möchten, werde ich. Es ist interiorwebdesign.com . Höchstwahrscheinlich werden an den Server die Magento-Version, die Erweiterungsversion und die URL Ihrer Website gesendet. Sie können dies sicher überprüfen, indem Sie base64_decodeden Wert des sdataan sie gesendeten Parameters überprüfen . Ich weiß nicht, wie die Antwort lauten soll, wenn Ihre Lizenz korrekt ist, aber falls ein Fehler auftritt, ist dies die Antwort:

checkout.o_p_c_l_s = '2';
deljsphp();

Suchen Sie im Code nach einer aufgerufenen Funktion deljsphp. Ich denke, das deaktiviert Ihre Kasse.

[BEARBEITEN]
Weil ich wütend werde, wenn ich diese Art von Erweiterungen sehe, habe ich beschlossen, etwas Zeit für Nachforschungen zu verschwenden.
Folgendes habe ich gefunden. Das Ergebnis der Anforderung sollte ein Link zu einer JS-Datei oder einem JS-Code auf ihrem Server sein. Nachdem ich die js-Datei aus der Erweiterung dekodiert hatte, fand ich diese Funktion:

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)
},

Wenn also der Code 'Lizenz' gültig ist, werden dem DOM einige js hinzugefügt, die folgendermaßen addjsphpaussehen:

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)
}

Ich weiß (noch) nicht, wie die js von ihrem Server aussehen sollen, aber hier ist, was Sie versuchen können. Ich bin mir nicht sicher, ob es funktioniert. Bearbeiten Sie die js-Datei skin\frontend\base\default\js\onepagecheckout.pack.jsund fügen Sie am Ende der Datei Folgendes hinzu:

function deljsphp(){
    return 1;
}

Dies sollte die ursprüngliche deljsphpFunktion überschreiben , die übrigens so aussieht:

function deljsphp() {
    var th = $('opcstataj');
    if (th && th != null && th != undefined) th.remove()
}

Grundsätzlich wird das <script>hinzugefügte Tag von ihrem Server entfernt.

Sonstige Informationen Der Code, der in der von Ihnen in der Frage genannten Zeile ausgewertet wird, lautet wie folgt:

eval (gzinflate (base64_decode ( 'jZAxb8MgEIXn + FfQCBl7qL1UHRLRDFGkLlWjOM0SVRHBV4NqwIKLqqrKfy84S9MuXeDgcd97BzWiI5xQVDrcPnSAT6IDi24HPmhni3KeUePaqyfP6 + VPWV2Jy5Nv0Hl48X1UJ5OMhqhPow3 / onE95xGXSteec2WFgXhQ51xIjEAuFcj3aaS2AkVsPIoA93cHsNK1UNAwGiZicQNmwM CHprVZrfa7Nnjdrtu2GtJ8pz8ueWcM2dZuWAKcQhsNu4s0k6 + + + TwOoULFZXWuL4LXzH3BsIejOVtKZ2lw pXaD7LUEGyCVl8jVoIZFSHE5q8bY80y / FWlAIJwThhCQlb + NeidFr1zA / 0K / AQ ==')));

Weiter gehen ... das ist der Code, der tatsächlich ausgewertet wird:

$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;

Dies bestätigt meinen anfänglichen Verdacht, was an ihre Server gesendet wird.

Marius
quelle
Vielen Dank @Marius. Tolle Analyse, ich werde meinen Code einchecken. Ich vermeide es, ihren Namen zu nennen, weil es ihre Wahl ist. Der Teil, den ich hässlich fand, ist, dass sie den Leuten nichts über diese Informationen erzählen und für Leute wie mich, die nicht sehr gut im Codieren sind, verwirrend. Nochmals vielen Dank.!
s_h
Darüber hinaus gewährt diese kostenlose Erweiterung keine Lizenz zur Validierung. Kein Platz in der Code-Anfrage, um eine Lizenz zu setzen .. brgds
s_h
Sind Sie sicher, dass der base64-String nicht remote aktualisiert werden kann? Weil ich beim letzten Überprüfen des Codes so etwas gesehen habe.
Giraff
@ Giraff. Eigentlich bin ich mir nicht sicher, aber ich habe geschrieben, was ich gefunden habe
Marius
Hallo an alle, haben wir in neueren Versionen dieses Moduls den gleichen "bösartigen" Code?
Simbus82
4

Marius, Danke für die Untersuchung. Auch ich mag und entmutige die Entwickler von Magento-Modulen nicht, diese Art von "Telefon-Heimanrufen" auf ihren Nebenstellen zu schalten. Sie sollten freigelegt und ausgerottet werden.

Gehen Sie wie folgt vor, um den Telefonanruf zu Hause zu deaktivieren und Ihre Onepagecheckout-Erweiterung funktionsfähig zu halten (ja, sie können ihn deaktivieren).

Kopieren Sie die Datei /skin/frontend/base/default/js/onepagecheckout.pack.js in Ihren Themenordner / js / onepagecheckout.pack.js und verschönern Sie den Code mithilfe einer Website wie: http://jsbeautifier.org/

Jetzt um die Zeile: 244 in der Startmethode Sie werden sehen

addjsphp(this.s_code);
this.getActionResults(0)

ändere es auf

//addjsphp(this.s_code);
//this.getActionResults(0)

Dadurch wird verhindert, dass das Skript immer zu seiner langsamen Website nach Hause telefoniert, und es wird verhindert, dass es auf die Codeergebnisse reagiert

Dies sollte funktionieren, aber testen Sie es, bevor Sie es ausrollen. Es ist schließlich Ihre Kasse

user7673
quelle
Danke für das Schönere. Ich musste eine Menge JS in diesem Skript ändern, um die Seite zu personalisieren, und war wirklich von der Pack-Sache festgefahren.
Hellimac
1

Das möchte ich sagen regular code was just about to collect information on what version was used by our clients. No other information was collected.

Wir haben das auch seit Version 3 entfernt. was released like about 1.5 years ago.Wenn Sie also immer noch Version 2 verwenden, ist es Zeit für Sie, auf Version 4.x zu aktualisieren

Max
quelle
vielen Dank für Ihren Kommentar. Es war seltsam, diesen Code im Zahlungsbereich zu finden. Ich habe diese Frage vor fast zwei Jahren gestellt.
s_h