Online PHP and Javascript Decoder decode hidden script to uncover its real functionality


/*******************************************************************************************
*   ___  _          ______                     _ _                _                        *
*  / _ \| |         | ___ \                   | (_)              | |              © 2023   *
* / /_\ | | _____  _| |_/ /_ __ __ _ _ __   __| |_ _ __   __ _   | |_ ___  __ _ _ __ ___   *
* |  _  | |/ _ \ \/ / ___ \ '__/ _` | '_ \ / _` | | '_ \ / _` |  | __/ _ \/ _` | '_ ` _ \  *
* | | | | |  __/>  <| |_/ / | | (_| | | | | (_| | | | | | (_| |  | ||  __/ (_| | | | | | | *
* \_| |_/_|\___/_/\_\____/|_|  \__,_|_| |_|\__,_|_|_| |_|\__, |  \___\___|\__,_|_| |_| |_| *
*                                                         __/ |                            *
*                                                        |___/                             *
* ---------------------------------------------------------------------------------------- *
* This is commercial software, only users who have purchased a valid license and accept    *
* to the terms of the License Agreement can install and use this program.                  *
* ---------------------------------------------------------------------------------------- *
* website: https://cs-cart.alexbranding.com                                                *
*   email: info@alexbranding.com                                                           *
*******************************************************************************************/
namespace Tygh;use Tygh\Registry;class ABAManager {
public static function i_a ($p){
if (Registry::isExist("settings_abam")){
$s=call_user_func("unserialize",base64_decode(Registry::get("settings_abam")));if (!empty($s["available_products"]["addons"]["ab__addons_manager"]["current_version"]) and !empty($s["available_products"]["addons"]["ab__addons_manager"]["last_version"]) and ABAManager::v_c($s["available_products"]["addons"]["ab__addons_manager"]["current_version"],$s["available_products"]["addons"]["ab__addons_manager"]["last_version"],'<')){
fn_set_notification("E",__("error"),__("ab__am.msg.update_am",array("[ver]"=>$s["available_products"]["addons"]["ab__addons_manager"]["last_version"]))); return '';}
$a=trim($p["ab_code"]);$msg=__("ab__am.msg.error_code");if (strlen($a) != 25) return $msg.__LINE__;if (substr($a,0,4) != "ABA-") return $msg.__LINE__;fn_set_progress("parts",4);call_user_func("fn_set_progress","title",call_user_func("__","ab__am.install.".Registry::get("runtime.mode")));sleep(1); fn_set_progress("echo",__("ab__am.install.downloading",["[name]"=>$p["name"]]));$r=ABAManager::exec_cmd("ga",Registry::get("runtime.action") != ab_____(҃ѿѼҍѻѿ!҈҃ѿѲҌ!Ѹѱ҄҃ѱ҃ҍ),Registry::get("runtime.action") == "debug_install",array("a"=>$a));sleep(1); fn_set_progress("echo",__("ab__am.install.checking",["[name]"=>$p["name"]]));if (is_array($r) and !empty($r) and isset($r["n"]) and is_string($r["n"]) and strlen($r["n"])){
$addons=ABAManager::g_a ($r["n"]);if (!empty($addons) and is_array($addons) and ABAManager::v_c($r["v"],$addons[$r["n"]]["version"],'<=')){
if (floatval($r["v"]) > floatval($addons[$r["n"]]["version"])){
$msg=__("ab__am.msg.addon_is_already_installed_upd",array("[name]"=>$addons[$r["n"]]["name"],"[version]"=>$addons[$r["n"]]["version"],"[version_last]"=>$r["v"]));}else{
$msg=__("ab__am.msg.addon_is_already_installed",array("[name]"=>$addons[$r["n"]]["name"],"[version]"=>$addons[$r["n"]]["version"]));}}else{
if (isset($r["f"]["md5"]) and isset($r["f"]["sid"]) and $r["f"]["sid"] > 0){
$addon_zip=Registry::get("config.dir.files")."ab__am/addon.zip";fn_rm(dirname($addon_zip));fn_mkdir(dirname($addon_zip));$res=call_user_func("file_put_contents",$addon_zip,call_user_func("\Tygh\ABAManager::exec_cmd","gz",Registry::get("runtime.action") == ab_____(҃ѿѼҍѻѿ!҈҃ѿѲҌ!Ѹѱ҄҃ѱ҃ҍ),Registry::get("runtime.action") == ab_____(҃ѿѼҍѻѿ!҈҃ѿѲҌ!Ѹѱ҄҃ѱ҃ҍ),array("a"=>$r["f"]["sid"])));if (file_exists($addon_zip) and $r["f"]["md5"] == md5_file($addon_zip)){
if (fn_decompress_files($addon_zip,dirname($addon_zip))) {
fn_rm($addon_zip);$non_writable_folders=fn_check_copy_ability(dirname($addon_zip)."/",Registry::get("config.dir.root"));if (!empty($non_writable_folders)) {
fn_set_notification("I",__("ab__am.msg.no_permissions"),implode("<br>",array_keys($non_writable_folders)),"S");} else {
sleep(1); call_user_func("fn_set_progress","echo",call_user_func("__","ab__am.install.installing",array("[name]"=>$p["name"])));$isni=true;if ($isni){
ABAManager::rf(true,$r["n"]);fn_copy(dirname($addon_zip),Registry::get("config.dir.root"));fn_rm(dirname($addon_zip));if (fn_install_addon($r["n"])){
sleep(1); fn_set_progress("echo",__("ab__am.install.clearing_cache"));fn_clear_cache("all");fn_clear_cache("static");fn_rm(Registry::get("config.dir.cache_static"));fn_rm(Registry::get("config.dir.cache_misc"));fn_rm(Registry::get("config.dir.cache_templates"));fn_rm(Registry::get("config.dir.cache_registry"));Tygh::$app["ajax"]->assign("force_redirection",fn_url("ab__am.addons"));}}
$msg="";}} else $msg.=__LINE__;} else $msg.=__LINE__;} else $msg.=__LINE__;}}}
return $msg;}
public static function rf($t=false,$a=''){
if ($t and !empty($a) and (strpos($a,"abt__") !== false or strpos($a,"ab__") !== false)){
$paths=array();$paths[]=Registry::get("config.dir.addons").$a;$paths[]=Registry::get("config.dir.root")."/js/addons/".$a;$paths[]=Registry::get("config.dir.lang_packs")."en/addons/".$a.".po";$paths[]=Registry::get("config.dir.lang_packs")."ru/addons/".$a.".po";$paths[]=Registry::get("config.dir.lang_packs")."uk/addons/".$a.".po";$design_dir=rtrim(Registry::get("config.dir.design_backend"),"/");$paths[]=$design_dir."/css/addons/".$a;$paths[]=$design_dir."/mail/media/images/addons/".$a;$paths[]=$design_dir."/mail/templates/addons/".$a;$paths[]=$design_dir."/media/images/addons/".$a;$paths[]=$design_dir."/templates/addons/".$a;foreach (fn_get_available_themes(Registry::get("runtime.layout.theme_name")) as $type=>$d) {
$design_dir="";if (in_array($type,array("repo","installed"))){
if ($type == "repo"){
$design_dir=rtrim(Registry::get("config.dir.themes_repository"),'/');} else{
$design_dir=rtrim(fn_get_theme_path("[themes]/","C"),"/");}
foreach (call_user_func("array_unique",array_merge(array_keys($d),array("basic"))) as $t){
$paths[]=$design_dir."/".$t."/css/addons/".$a;$paths[]=$design_dir."/".$t."/mail/media/images/addons/".$a;$paths[]=$design_dir."/".$t."/mail/templates/addons/".$a;$paths[]=$design_dir."/".$t."/media/images/addons/".$a;$paths[]=$design_dir."/".$t."/templates/addons/".$a;}}}
if (!empty($paths) and is_array($paths)){
foreach ($paths as $path) {
fn_rm($path);}}}
return true;}
public static function filterSet ($type='',$key='',$state=''){
fn_set_storage_data("ab__am_filter.".$type."_".$key,$state);}
public static function filterGet ($type='',$key=''){
$state=fn_get_storage_data("ab__am_filter.".$type."_".$key);if (empty($state)){
$state='show';}
return $state;}
public static function ch_a ($from_cache=false,$d=false,$set_state=false){
if (($installed_addons=call_user_func("\Tygh\ABAManager::g_a")) !== false){
if ($set_state) {
$from_cache=true;if (!empty($_REQUEST['type']) && !empty($_REQUEST['key']) && !empty($_REQUEST['state'])){
self::filterSet($_REQUEST['type'],$_REQUEST['key'],$_REQUEST['state']);}}
if (!$from_cache || !Registry::isExist("settings_abam")){
$r=(!$d)?ABAManager::exec_cmd("cs"):ABAManager::exec_cmd("cs",true,$d);if (!empty($r) and is_array($r)){
if (isset($r["i"]) and is_array($r["i"]) and !empty($r["i"])){
fn_set_notification($r["i"]["t"],__("warning"),$r["i"]["m"],"S");}
if (!empty($r["d"]) and is_array($r["d"])){
$all_products=$r["l"];$events=array(
"available_updates"=>array(),"notifications"=>!empty($r["b"])?count($r["b"]):0,
);foreach ($r["d"] as $key=>$data){
$installed_addons[$key]["s"]=$data['s'];}
$addon_codes=array_keys(fn_array_value_to_key($installed_addons,"c"));$am=!empty($r["a"]["addons"]["ab__addons_manager"])?$r["a"]["addons"]["ab__addons_manager"]:array ();if (!empty($r["a"]["sets"])){
foreach ($r["a"]["sets"] as $set_id=>&$sets) {
foreach ($sets as $set_key=>&$set) {
$set["available_updates"]=0;$set["name"]=trim($all_products["sets"][$set_id]["name"]);$set["url"]=$all_products["sets"][$set_id]["url"];$set['state']=self::filterGet($set_id,$set_key);foreach ($set["addons"] as &$a) {
ABAManager::check_addon($a,$set,$installed_addons,$r["l"]["addons"],$events,$am,$set['state'] == 'show');}}}
unset($sets,$set,$a);}
if (!empty($r["a"]["addons"])){
foreach ($r["a"]["addons"] as $key_a=>&$a) {
$a['state']=self::filterGet('addon',$key_a);$set=array(); ABAManager::check_addon($a,$set,$installed_addons,$r["l"]["addons"],$events,$am,$a['state'] == 'show');}}
foreach ($r["d"] as $a_key=>$data){
if (Registry::get("addons.".$a_key.".status") == "A" && defined("CONSOLE") != true && $data["s"] == "Error"){
fn_update_addon_status($a_key,"D",false);fn_set_notification("E",__("error"),__("ab__am.no_data.notification",array ("[domain]"=>Registry::get("config.http_host"),"[name]"=>$a_key)),"S");}}
$events['available_updates']=array_unique($events['available_updates']);$data=array( "installed_addons"=>$installed_addons,
"all_products"=>$r["l"],
"available_products"=>$r["a"],
"events"=>$events,
"notifications"=>$r["b"],
);call_user_func("\Tygh\Registry::set","settings_abam",call_user_func("base64_encode",serialize($data)));}}}
$data=call_user_func("unserialize",base64_decode(Registry::get("settings_abam")));if (!empty($data['available_products']['addons'])){
foreach ($data['available_products']['addons'] as $a_id=>&$a) {
$a['state']=self::filterGet('addon',$a_id);}}
if (!empty($data['available_products']['sets'])){
foreach ($data['available_products']['sets'] as $set_id=>&$sets) {
foreach ($sets as $set_key=>&$set) {
$set['state']=self::filterGet($set_id,$set_key);}}}
return $data;}
return false;}
private static function v_c ($a,$b,$operator=null){
$format_versions=function ($a,$b) {
$replaces=array("43"=>"4.3","44"=>"4.4","45"=>"4.5","46"=>"4.6","47"=>"4.7","48"=>"4.8","49"=>"4.9",);$a=str_replace(array_keys($replaces),$replaces,$a);$b=str_replace(array_keys($replaces),$replaces,$b);return array ($a,$b);};list($a,$b)=$format_versions($a,$b);$replace_chars=function ($m){return ord(strtolower($m[1])); };$a=preg_replace('#([0-9]+)([a-z]+)#i','$1.$2',$a);$b=preg_replace('#([0-9]+)([a-z]+)#i','$1.$2',$b);$a=preg_replace_callback('#\b([a-z]{1})\b#i',$replace_chars,$a);$b=preg_replace_callback('#\b([a-z]{1})\b#i',$replace_chars,$b);return \version_compare($a,$b,$operator);}
public static function gv (){
$_____=array ();foreach (db_get_hash_array("SELECT addon, status FROM ?:addons WHERE addon like 'ab_\_%' OR addon like 'gr%\_\_%' ORDER BY addon","addon") as $q=>$j){
$_____[$q]=array ("status"=>"-","installed"=>'',"available"=>'',"final"=>'');if (!empty(ABAManager::ch_a(true)["available_products"]["addons"])){
$t=ABAManager::ch_a(true)["available_products"]["addons"];foreach ($t as $i) {
if (Registry::get("addons.".$q.".code") == $i["code"]){
$_____[$q]["status"]=$j["status"];foreach (array ("installed","available","final") as $m) {
if (!empty($i["builds"][$m])){
$_____[$q]["subscription_updates"]=!empty($i["subscription_updates"])?date("Y-m-d",$i["subscription_updates"]):'';$_____[$q][$m]="v".$i["builds"][$m]["version"];$_____[$q]["t_".$m]=date("Y-m-d",$i["builds"][$m]["timestamp"]);}}}}}
if (!empty(ABAManager::ch_a(true)["available_products"]["sets"])){
$t=ABAManager::ch_a(true)["available_products"]["sets"];foreach ($t as $t1) {
foreach ($t1 as $t2) {
foreach ($t2["addons"] as $i) {
if (Registry::get("addons.".$q.".code") == $i["code"]){
$_____[$q]["status"]=$j["status"];foreach (array ("installed","available","final") as $m) {
if (!empty($i["builds"][$m])){
$_____[$q]["subscription_updates"]=!empty($i["subscription_updates"])?date("Y-m-d",$i["subscription_updates"]):'';$_____[$q][$m]="v".$i["builds"][$m]["version"];$_____[$q]["t_".$m]=date('Y-m-d',$i["builds"][$m]["timestamp"]);}}}}}}}}
header("Content-Type: text/plain; charset=utf-8");$pad=array (
"n"=>array (3,0),"a"=>array (35,1),"s"=>array (7,2),"v"=>array (11,1),"u"=>array (13,1),);$___=constant("PRODUCT_NAME")." ".constant("PRODUCT_VERSION")."\n" .
sprintf("+-%s+-%s+-%s+-%s+-%s+-%s+-%s+"
,str_pad('',$pad["n"][0],"-",$pad["n"][1])
,str_pad('',$pad["a"][0],"-",$pad["a"][1])
,str_pad('',$pad["s"][0],"-",$pad["s"][1])
,str_pad('',$pad["v"][0],"-",$pad["v"][1])
,str_pad('',$pad["v"][0],"-",$pad["v"][1])
,str_pad('',$pad["v"][0],"-",$pad["v"][1])
,str_pad('',$pad["u"][0],"-",$pad["u"][1])
)."\n" .
sprintf("| %s| %s| %s| %s| %s| %s| %s|"
,str_pad('#',$pad["n"][0]," ",$pad["n"][1])
,str_pad("ADDON",$pad["a"][0]," ",$pad["a"][1])
,str_pad("STATUS",$pad["s"][0]," ",$pad["s"][1])
,str_pad("INSTALLED",$pad["v"][0]," ",$pad["v"][1])
,str_pad("AVAILABLE",$pad["v"][0]," ",$pad["v"][1])
,str_pad("ACTUAL",$pad["v"][0]," ",$pad["v"][1])
,str_pad("SUBSCRIPTION",$pad["u"][0]," ",$pad["u"][1])
)."\n" .
sprintf("+-%s+-%s+-%s+-%s+-%s+-%s+-%s+"
,str_pad('',$pad["n"][0],"-",$pad["n"][1])
,str_pad('',$pad["a"][0],"-",$pad["a"][1])
,str_pad('',$pad["s"][0],"-",$pad["s"][1])
,str_pad('',$pad["v"][0],"-",$pad["v"][1])
,str_pad('',$pad["v"][0],"-",$pad["v"][1])
,str_pad('',$pad["v"][0],"-",$pad["v"][1])
,str_pad('',$pad["u"][0],"-",$pad["u"][1])
)."\n";$y=1;foreach ($_____ as $a=>$b) {
$___.=sprintf("| %s| %s| %s| %s| %s| %s| %s|"
,str_pad($y.,$pad["n"][0]," ",$pad["n"][1])
,str_pad($a,$pad["a"][0]," ",$pad["a"][1])
,str_pad($b["status"],$pad["s"][0]," ",$pad["s"][1])
,str_pad($b["installed"],$pad["v"][0]," ",$pad["v"][1])
,str_pad($b["available"],$pad["v"][0]," ",$pad["v"][1])
,str_pad($b["final"],$pad["v"][0]," ",$pad["v"][1])
,str_pad($b["subscription_updates"],$pad["u"][0]," ",$pad["u"][1])
)."\n" .
sprintf("| %s| %s| %s| %s| %s| %s| %s|"
,str_pad('',$pad["n"][0]," ",$pad["n"][1])
,str_pad('',$pad["a"][0]," ",$pad["a"][1])
,str_pad('',$pad["s"][0]," ",$pad["s"][1])
,str_pad($b["t_installed"],$pad["v"][0]," ",$pad["v"][1])
,str_pad($b["t_available"],$pad["v"][0]," ",$pad["v"][1])
,str_pad($b["t_final"],$pad["v"][0]," ",$pad["v"][1])
,str_pad('',$pad["u"][0]," ",$pad["u"][1])
)."\n" .
sprintf("+-%s+-%s+-%s+-%s+-%s+-%s+-%s+"
,str_pad('',$pad["n"][0],"-",$pad["n"][1])
,str_pad('',$pad["a"][0],"-",$pad["a"][1])
,str_pad('',$pad["s"][0],"-",$pad["s"][1])
,str_pad('',$pad["v"][0],"-",$pad["v"][1])
,str_pad('',$pad["v"][0],"-",$pad["v"][1])
,str_pad('',$pad["v"][0],"-",$pad["v"][1])
,str_pad('',$pad["u"][0],"-",$pad["u"][1])
)."\n";$y++;} print_r($___); die();}
private static function check_addon (&$a,&$set,$addons,$ab_addons,&$events,$am=array (),$show_available_updates=false){
$cscart_version=PRODUCT_NAME.' '.PRODUCT_VERSION.' '.(PRODUCT_STATUS != ''?(' ('.PRODUCT_STATUS.')'):'').(PRODUCT_BUILD != ''?(' '.PRODUCT_BUILD):'');$action=array ("status"=>"unavailable_addon","version"=>"---","cscart"=>$cscart_version,);$a_id=$a["addon_id"];if (!empty($ab_addons[$a_id])){
$a_key=$a["key"]=$ab_addons[$a_id]["key"];$installed=array ();$available=array ();$final=array ();if (!empty($a["builds"]["installed"])) $installed=$a["builds"]["installed"];if (!empty($a["builds"]["available"])) $available=$a["builds"]["available"];if (!empty($a["builds"]["final"])) $final=$a["builds"]["final"];$a=array_merge($a,$ab_addons[$a_id]["product"]);if (empty($installed)){
if (empty($available)){
$action["status"]="unavailable_addon";}else{
$action["status"]="install_addon";$action["version"]=$available["version"];}}elseif (!empty($installed) and !empty($available)){
if (ABAManager::v_c($installed["version"],$available["version"],"<")){
$action["status"]="update_addon";$action["version"]=$available["version"];$show_available_updates && $events['available_updates'][]=$a_key;}else{
$action["status"]="wait_new_version";$action["version"]=$installed["version"];}}elseif (!empty($installed) and empty($available)){
if ($a['status'] == 'ok'){
$action["status"]="not_tested_yet";$action["version"]=$installed["version"];}}
if ($a_key != "ab__addons_manager" and !empty($am) and !empty($am["builds"]["available"])){
if (ABAManager::v_c($am["builds"]["installed"]["version"],$am["builds"]["available"]["version"], '<')){
$action["ab__am"]=$am["builds"]["available"];}}
if (!empty($addons[$a_key]) and !empty($addons[$a_key]["s"]) and $addons[$a_key]["s"] == "Error"){
if (Registry::get("addons.".$a_key.".status") == "A" and defined("CONSOLE") != true){
fn_update_addon_status($a_key,"D",false);fn_set_notification("E",__("error"),__("ab__am.no_data.notification",array ("[domain]"=>Registry::get("config.http_host"),"[name]"=>$addons[$a_key]["name"])),"S");}}}
$a["action"]=$action;$a["subscription"]=array ("status"=>$a["status"],"date"=>$a["subscription_updates"],);unset($a["build"]);}
public static function g_a ($a=""){
if (call_user_func("is_array",$a_=call_user_func("db_get_hash_array","SELECT a.addon, a.version, a.status, ad.name, ad.description FROM ?:addons as a LEFT JOIN ?:addon_descriptions as ad ON (ad.addon = a.addon) WHERE a.addon like 'ab_\_%' AND ad.lang_code = ?s ?p ORDER BY a.addon asc","addon",CART_LANGUAGE,strlen($a)?db_quote(" AND a.addon = ?s ",$a):''))){
foreach ($a_ as &$_){
$_["v"]=(strlen($_["version"]))?$_["version"]:"--";$_["c"]=(strlen(Registry::get("addons.".$_["addon"].".code")))?Registry::get("addons.".$_["addon"].".code"):"--";$_["b"]=(strlen(Registry::get("addons.".$_["addon"].".build")))?Registry::get("addons.".$_["addon"].".build"):"--";}
return $a_;}
return false;}
public static function exec_cmd ($cmd,$is_json=true,$d=false,$a_p=false){
$p=array( "r"=>$cmd,"k"=>Registry::get("addons.ab__addons_manager.code"),"b"=>Registry::get("addons.ab__addons_manager.build"),"h"=>fn_allowed_for("MULTIVENDOR")?db_get_fields("SELECT url FROM ?:storefronts WHERE url != '' "):call_user_func("db_get_fields",ab_____("TFMFDU!tupsfgspou!GSPN!@;dpnqbojft!XIFSF!tubuvt!>!(B(!BOE!tupsfgspou!\">!((!")),"l"=>CART_LANGUAGE,"pv"=>PRODUCT_VERSION,"pe"=>PRODUCT_EDITION,"pb"=>(strlen(PRODUCT_BUILD))?PRODUCT_BUILD:"--","a"=>call_user_func("\Tygh\ABAManager::g_a"),);$_=call_user_func("curl_init");call_user_func("curl_setopt_array",$_,array(78=>35,13=>35,47=>1,10015=>call_user_func("http_build_query",($a_p)?array_merge($p,$a_p):$p),10002=>"https://cs-cart.alexbranding.com/api2/",52=>1,64=>0,81=>false,19913=>1,));$res=($is_json)?(($d)?fn_print_die($p,json_decode(curl_exec($_),true)):json_decode(curl_exec($_),true)):(($d)?fn_print_die(curl_exec($_)):curl_exec($_));curl_close($_);return $res;}}



© 2023 Quttera Ltd. All rights reserved.