De-obfuscate PHP malware/viruses and tampering code on Wordpress to original readable code.
*Please note that not all obfuscation codes can be decoded.<?php
include_once 'Utilities.php';
class IDPMetadataReader
{
private $identityProviders;
private $serviceProviders;
public function __construct(DOMNode $l3 = NULL)
{
$this->identityProviders = array();
$this->serviceProviders = array();
$v4 = SAMLSPUtilities::xpQuery($l3, "\x2e\x2f\163\x61\155\x6c\137\x6d\145\164\141\144\x61\164\141\x3a\x45\x6e\164\151\164\x69\x65\163\104\145\x73\143\162\x69\x70\164\157\162");
if (!empty($v4)) {
goto F_;
}
$la = SAMLSPUtilities::xpQuery($l3, "\56\57\163\x61\155\154\137\x6d\145\x74\141\x64\141\164\141\72\x45\156\x74\x69\x74\171\104\145\163\x63\x72\151\x70\x74\x6f\x72");
goto Gh;
F_:
$la = SAMLSPUtilities::xpQuery($v4[0], "\56\57\x73\141\155\154\137\155\x65\x74\x61\x64\141\x74\x61\72\x45\156\x74\151\x74\x79\104\x65\x73\143\162\x69\x70\x74\x6f\162");
Gh:
foreach ($la as $W_) {
$wX = SAMLSPUtilities::xpQuery($W_, "\56\x2f\x73\x61\155\154\x5f\155\x65\164\x61\144\141\164\141\72\111\x44\x50\x53\123\x4f\x44\x65\x73\143\x72\x69\x70\164\157\x72");
if (empty($wX)) {
goto Rr;
}
array_push($this->identityProviders, new IdentityProviders($W_));
Rr:
NR:
}
Tb:
}
public function getIdentityProviders()
{
return $this->identityProviders;
}
public function getServiceProviders()
{
return $this->serviceProviders;
}
}
class IdentityProviders
{
private $idpName;
private $entityID;
private $loginDetails;
private $logoutDetails;
private $signingCertificate;
private $encryptionCertificate;
private $signedRequest;
public function __construct(DOMElement $l3 = NULL)
{
$this->idpName = '';
$this->loginDetails = array();
$this->logoutDetails = array();
$this->signingCertificate = array();
$this->encryptionCertificate = array();
if (!$l3->hasAttribute("\145\156\164\151\x74\x79\x49\x44")) {
goto W9;
}
$this->entityID = $l3->getAttribute("\x65\x6e\x74\151\164\171\x49\x44");
W9:
if (!$l3->hasAttribute("\127\x61\x6e\x74\101\x75\x74\150\156\122\x65\161\165\x65\163\164\163\x53\x69\147\156\145\x64")) {
goto i3;
}
$this->signedRequest = $l3->getAttribute("\127\x61\x6e\x74\101\x75\164\150\156\122\x65\161\165\145\163\164\163\x53\x69\x67\156\145\144");
i3:
$wX = SAMLSPUtilities::xpQuery($l3, "\x2e\x2f\163\x61\x6d\x6c\137\x6d\x65\164\x61\x64\141\164\x61\x3a\111\104\x50\123\x53\x4f\104\145\163\143\162\151\x70\x74\157\x72");
if (count($wX) > 1) {
goto cj;
}
if (empty($wX)) {
goto nY;
}
goto o6;
cj:
throw new Exception("\115\x6f\x72\145\x20\x74\150\141\x6e\40\x6f\156\145\40\x3c\111\104\x50\123\123\117\x44\145\x73\143\x72\x69\x70\164\x6f\162\x3e\x20\x69\x6e\40\74\105\x6e\x74\151\x74\171\x44\145\163\x63\162\151\160\164\157\162\76\56");
goto o6;
nY:
throw new Exception("\115\151\163\x73\x69\x6e\x67\40\x72\145\161\x75\151\162\x65\x64\x20\74\x49\x44\120\x53\x53\117\104\145\163\x63\x72\x69\160\x74\x6f\x72\76\40\x69\x6e\40\x3c\105\156\164\151\x74\171\x44\145\x73\143\162\x69\160\x74\157\162\76\x2e");
o6:
$oR = $wX[0];
$Yx = SAMLSPUtilities::xpQuery($l3, "\56\57\163\x61\x6d\x6c\x5f\x6d\145\164\141\x64\141\164\x61\72\x45\x78\164\x65\x6e\163\151\x6f\x6e\163");
if (!$Yx) {
goto yX;
}
$this->parseInfo($oR);
yX:
$this->parseSSOService($oR);
$this->parseSLOService($oR);
$this->parsex509Certificate($oR);
}
private function parseInfo($l3)
{
$ZA = SAMLSPUtilities::xpQuery($l3, "\x2e\57\x6d\x64\x75\x69\72\125\x49\x49\156\x66\x6f\57\155\x64\x75\151\x3a\104\x69\x73\x70\x6c\141\171\116\141\x6d\145");
foreach ($ZA as $YB) {
if (!($YB->hasAttribute("\170\x6d\154\72\154\x61\156\147") && $YB->getAttribute("\170\155\154\x3a\x6c\141\x6e\147") == "\x65\x6e")) {
goto j6;
}
$this->idpName = $YB->textContent;
j6:
ay:
}
qn:
}
private function parseSSOService($l3)
{
$Zi = SAMLSPUtilities::xpQuery($l3, "\x2e\57\x73\x61\155\154\x5f\x6d\x65\x74\x61\144\x61\x74\x61\x3a\x53\x69\x6e\x67\x6c\145\123\151\147\156\117\156\123\x65\162\166\151\x63\145");
foreach ($Zi as $cu) {
$HH = str_replace("\165\162\x6e\72\x6f\141\163\x69\163\x3a\x6e\141\155\145\163\x3a\164\x63\72\x53\101\x4d\114\72\62\x2e\x30\x3a\x62\x69\156\144\151\x6e\x67\x73\x3a", '', $cu->getAttribute("\x42\151\x6e\x64\151\x6e\x67"));
$this->loginDetails = array_merge($this->loginDetails, array($HH => $cu->getAttribute("\114\157\x63\141\164\151\x6f\156")));
DQ:
}
jT:
}
private function parseSLOService($l3)
{
$Xf = SAMLSPUtilities::xpQuery($l3, "\x2e\x2f\163\141\x6d\154\137\x6d\145\x74\x61\144\141\164\141\x3a\123\x69\156\147\154\145\x4c\x6f\147\157\165\164\x53\x65\x72\166\x69\143\x65");
if (!empty($Xf)) {
goto Ka;
}
$this->logoutDetails = array("\110\x54\x54\120\x2d\122\145\144\x69\162\145\143\x74" => '');
goto UF;
Ka:
foreach ($Xf as $Fb) {
$HH = str_replace("\165\x72\x6e\x3a\x6f\141\163\x69\163\x3a\156\141\x6d\145\163\72\x74\x63\72\123\x41\115\x4c\x3a\x32\x2e\x30\x3a\x62\x69\x6e\144\x69\x6e\x67\163\72", '', $Fb->getAttribute("\102\151\x6e\x64\x69\x6e\147"));
$this->logoutDetails = array_merge($this->logoutDetails, array($HH => $Fb->getAttribute("\x4c\x6f\143\x61\164\x69\x6f\x6e")));
Ri:
}
t_:
UF:
}
private function parsex509Certificate($l3)
{
foreach (SAMLSPUtilities::xpQuery($l3, "\56\x2f\163\141\155\154\137\155\x65\x74\141\x64\141\x74\141\72\113\145\171\104\x65\163\143\x72\151\160\164\x6f\x72") as $rF) {
if ($rF->hasAttribute("\165\x73\x65")) {
goto H_;
}
$this->parseSigningCertificate($rF);
goto F2;
H_:
if ($rF->getAttribute("\x75\163\x65") == "\x65\x6e\x63\162\x79\x70\164\x69\x6f\156") {
goto Gg;
}
$this->parseSigningCertificate($rF);
goto op;
Gg:
$this->parseEncryptionCertificate($rF);
op:
F2:
MN:
}
F9:
}
private function parseSigningCertificate($l3)
{
$dy = SAMLSPUtilities::xpQuery($l3, "\x2e\57\144\x73\72\x4b\145\x79\111\x6e\146\157\57\x64\x73\x3a\130\65\60\x39\104\141\164\141\x2f\144\163\72\x58\x35\x30\x39\x43\145\x72\x74\151\x66\151\143\141\x74\x65");
$UN = trim($dy[0]->textContent);
$UN = str_replace(array("\xd", "\xa", "\11", "\40"), '', $UN);
if (empty($dy)) {
goto XH;
}
array_push($this->signingCertificate, SAMLSPUtilities::sanitize_certificate($UN));
XH:
}
private function parseEncryptionCertificate($l3)
{
$dy = SAMLSPUtilities::xpQuery($l3, "\56\x2f\x64\163\x3a\x4b\145\171\111\x6e\x66\x6f\x2f\x64\163\x3a\130\65\x30\x39\x44\x61\164\141\x2f\x64\x73\x3a\x58\x35\x30\71\x43\x65\x72\164\151\x66\151\x63\141\x74\x65");
$UN = trim($dy[0]->textContent);
$UN = str_replace(array("\xd", "\xa", "\11", "\40"), '', $UN);
if (empty($dy)) {
goto JA;
}
array_push($this->encryptionCertificate, $UN);
JA:
}
public function getIdpName()
{
return $this->idpName;
}
public function getEntityID()
{
return $this->entityID;
}
public function getLoginURL($HH)
{
return $this->loginDetails[$HH];
}
public function getLogoutURL($HH)
{
return $this->logoutDetails[$HH];
}
public function getLoginDetails()
{
return $this->loginDetails;
}
public function getLogoutDetails()
{
return $this->logoutDetails;
}
public function getSigningCertificate()
{
return $this->signingCertificate;
}
public function getEncryptionCertificate()
{
return $this->encryptionCertificate[0];
}
public function isRequestSigned()
{
return $this->signedRequest;
}
}
class ServiceProviders
{
}<?php
include_once 'Utilities.php';
class IDPMetadataReader
{
private $identityProviders;
private $serviceProviders;
public function __construct(DOMNode $l3 = NULL)
{
$this->identityProviders = array();
$this->serviceProviders = array();
$v4 = SAMLSPUtilities::xpQuery($l3, "./saml_metadata:EntitiesDescriptor");
if (!empty($v4)) {
$la = SAMLSPUtilities::xpQuery($v4[0], "./saml_metadata:EntityDescriptor");
// [PHPDeobfuscator] Implied goto
goto Gh;
}
$la = SAMLSPUtilities::xpQuery($l3, "./saml_metadata:EntityDescriptor");
Gh:
foreach ($la as $W_) {
$wX = SAMLSPUtilities::xpQuery($W_, "./saml_metadata:IDPSSODescriptor");
if (empty($wX)) {
goto Rr;
}
array_push($this->identityProviders, new IdentityProviders($W_));
Rr:
}
}
public function getIdentityProviders()
{
return $this->identityProviders;
}
public function getServiceProviders()
{
return $this->serviceProviders;
}
}
class IdentityProviders
{
private $idpName;
private $entityID;
private $loginDetails;
private $logoutDetails;
private $signingCertificate;
private $encryptionCertificate;
private $signedRequest;
public function __construct(DOMElement $l3 = NULL)
{
$this->idpName = '';
$this->loginDetails = array();
$this->logoutDetails = array();
$this->signingCertificate = array();
$this->encryptionCertificate = array();
if (!$l3->hasAttribute("entityID")) {
goto W9;
}
$this->entityID = $l3->getAttribute("entityID");
W9:
if (!$l3->hasAttribute("WantAuthnRequestsSigned")) {
goto i3;
}
$this->signedRequest = $l3->getAttribute("WantAuthnRequestsSigned");
i3:
$wX = SAMLSPUtilities::xpQuery($l3, "./saml_metadata:IDPSSODescriptor");
if (count($wX) > 1) {
throw new Exception("More than one <IDPSSODescriptor> in <EntityDescriptor>.");
}
if (empty($wX)) {
throw new Exception("Missing required <IDPSSODescriptor> in <EntityDescriptor>.");
}
$oR = $wX[0];
$Yx = SAMLSPUtilities::xpQuery($l3, "./saml_metadata:Extensions");
if (!$Yx) {
goto yX;
}
$this->parseInfo($oR);
yX:
$this->parseSSOService($oR);
$this->parseSLOService($oR);
$this->parsex509Certificate($oR);
}
private function parseInfo($l3)
{
$ZA = SAMLSPUtilities::xpQuery($l3, "./mdui:UIInfo/mdui:DisplayName");
foreach ($ZA as $YB) {
if (!($YB->hasAttribute("xml:lang") && $YB->getAttribute("xml:lang") == "en")) {
goto j6;
}
$this->idpName = $YB->textContent;
j6:
}
}
private function parseSSOService($l3)
{
$Zi = SAMLSPUtilities::xpQuery($l3, "./saml_metadata:SingleSignOnService");
foreach ($Zi as $cu) {
$HH = str_replace("urn:oasis:names:tc:SAML:2.0:bindings:", '', $cu->getAttribute("Binding"));
$this->loginDetails = array_merge($this->loginDetails, array($HH => $cu->getAttribute("Location")));
}
}
private function parseSLOService($l3)
{
$Xf = SAMLSPUtilities::xpQuery($l3, "./saml_metadata:SingleLogoutService");
if (!empty($Xf)) {
foreach ($Xf as $Fb) {
$HH = str_replace("urn:oasis:names:tc:SAML:2.0:bindings:", '', $Fb->getAttribute("Binding"));
$this->logoutDetails = array_merge($this->logoutDetails, array($HH => $Fb->getAttribute("Location")));
}
// [PHPDeobfuscator] Implied goto
goto t_;
}
$this->logoutDetails = array("HTTP-Redirect" => '');
t_:
}
private function parsex509Certificate($l3)
{
foreach (SAMLSPUtilities::xpQuery($l3, "./saml_metadata:KeyDescriptor") as $rF) {
if ($rF->hasAttribute("use")) {
if ($rF->getAttribute("use") == "encryption") {
$this->parseEncryptionCertificate($rF);
// [PHPDeobfuscator] Implied goto
goto op;
}
$this->parseSigningCertificate($rF);
goto op;
}
$this->parseSigningCertificate($rF);
op:
F2:
}
}
private function parseSigningCertificate($l3)
{
$dy = SAMLSPUtilities::xpQuery($l3, "./ds:KeyInfo/ds:X509Data/ds:X509Certificate");
$UN = trim($dy[0]->textContent);
$UN = str_replace(array("\r", "\n", "\t", " "), '', $UN);
if (empty($dy)) {
goto XH;
}
array_push($this->signingCertificate, SAMLSPUtilities::sanitize_certificate($UN));
XH:
}
private function parseEncryptionCertificate($l3)
{
$dy = SAMLSPUtilities::xpQuery($l3, "./ds:KeyInfo/ds:X509Data/ds:X509Certificate");
$UN = trim($dy[0]->textContent);
$UN = str_replace(array("\r", "\n", "\t", " "), '', $UN);
if (empty($dy)) {
goto JA;
}
array_push($this->encryptionCertificate, $UN);
JA:
}
public function getIdpName()
{
return $this->idpName;
}
public function getEntityID()
{
return $this->entityID;
}
public function getLoginURL($HH)
{
return $this->loginDetails[$HH];
}
public function getLogoutURL($HH)
{
return $this->logoutDetails[$HH];
}
public function getLoginDetails()
{
return $this->loginDetails;
}
public function getLogoutDetails()
{
return $this->logoutDetails;
}
public function getSigningCertificate()
{
return $this->signingCertificate;
}
public function getEncryptionCertificate()
{
return $this->encryptionCertificate[0];
}
public function isRequestSigned()
{
return $this->signedRequest;
}
}
class ServiceProviders
{
}Malware detection & removal plugin for WordPress
(C)2020 Wordpress Doctor All rights reserved.