2016-06-10 17 views
0

Ich versuche, eine Anwendung der Base64-Codierung, die von einem Projekt eines Drittanbieters verwendet wird, umzukehren, damit ich eine benutzerdefinierte Benutzeroberfläche erstellen kann. Meine Methode war mit einem Beispiel erfolgreich, scheint aber in anderen Beispielen (einige wenige Zeichen, die nicht ganz stimmen) nicht ganz so gut zu treffen. base64 Dekodieren/Inkonsistenz codieren

AQAAAAAAGQBec2lwOigwMjAxMjM0NTZbMC05XSspQC4qFwBzaXA6MDIwMTIyMTEzQDEyNy4wLjAuMQAA 

^^ Ist-Base64-Codierung innerhalb der Datenbank

AQAAAAAAEABec2lwOigwMjAxMjM0NTZbMC05XSspQC4qEwBzaXA6MDIwMTIyMTEzQDEyNy4wLjAuMQoA 

^^ besten Versuch mit PHP Methode

Aufgrund übereinstimmen Zeichen steuern ich einige json Codierung implementiert haben, um es einfacher zu Identifizieren Sie die Zeichenfolgen, die für Variablen verwendet werden. Die Zeichenfolgen stimmen für dieses Beispiel überein, aber das Ergebnis der Base64-Codierung unterscheidet sich von dem tatsächlich erwarteten.

$actualfour = 'AQAAAAAAGQBec2lwOigwMjAxMjM0NTZbMC05XSspQC4qFwBzaXA6MDIwMTIyMTEzQDEyNy4wLjAuMQAA'; 
echo "".$actualfour; 
echo "<br />"; 

    $four = chr(01); 
    $four .= chr(00); 
    $four .= chr(00); 
    $four .= chr(00); 
    $four .= chr(00); 
    $four .= chr(00); 
    $four .= chr(16); 
    $four .= chr(00); 
    $four .= '^sip:(02[0-9]+)@.*'; 
    $four .= chr(19); 
    $four .= chr(00); 
    $four .= 'sip:[email protected] 
'.chr(00); 

$jsonfour = json_encode($four); 
echo "unencoded: ".$jsonfour; 
echo "<br />"; 
$encodefour = base64_encode($four); 
echo "".$encodefour; 
echo "<br />"; 
$jsonencodefour = json_encode(base64_decode($encodefour)); 
echo "encoded: ".$jsonencodefour; 
echo "<br />"; 

if ($encodefour != $actualfour) { echo "FAIL"; } else { echo "PASS"; } 

^^-Code-Methode

AQAAAAAAGQBec2lwOigwMjAxMjM0NTZbMC05XSspQC4qFwBzaXA6MDIwMTIyMTEzQDEyNy4wLjAuMQAA 
unencoded: "\u0001\u0000\u0000\u0000\u0000\u0000\u0010\u0000^sip:(02[0-9]+)@.*\u0013\u0000sip:[email protected]\n\u0000" 
AQAAAAAAEABec2lwOigwMjAxMjM0NTZbMC05XSspQC4qEwBzaXA6MDIwMTIyMTEzQDEyNy4wLjAuMQoA 
encoded: "\u0001\u0000\u0000\u0000\u0000\u0000\u0010\u0000^sip:(02[0-9]+)@.*\u0013\u0000sip:[email protected]\n\u0000" 
FAIL 

^^ Ausgabe

Antwort

1

Sie haben mehrere Fehler in $four.

  • chr(16) sollte chr(0x19) oder chr(25)
  • chr(13)chr(0x17) oder chr(23)
  • Die Newline nach 127.0.0.1 sollte chr(00) sein sollte

Hier ist der richtige $four:

$four = chr(01); 
$four .= chr(00); 
$four .= chr(00); 
$four .= chr(00); 
$four .= chr(00); 
$four .= chr(00); 
$four .= chr(0x19); 
$four .= chr(00); 
$four .= '^sip:(02[0-9]+)@.*'; 
$four .= chr(0x17); 
$four .= chr(00); 
$four .= 'sip:[email protected]'.chr(00).chr(00); 

Sie können alle diese Diskrepanzen finden, indem Sie json_encode(base64_decode($actualfour)) mit json_encode($four) vergleichen. Denken Sie daran, dass, wenn es ein Steuerzeichen wie \u#### zeigt, dass die Nummer hex ist, nicht dezimal.

Verwandte Themen