Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php $__='printf';$_='Loading License'; ..
Decoded Output download
b'
namespace app\components;
use app\models\System;
use DateInterval;
use DateTime;
use Exception;
use LicenseLog;
use ReflectionClass;
use SystemCounter;
use User;
use Yii;
/**
* License
*
* @test LicenseTest
*/
class License {
use CacheTrait;
/**
* Constants
*/
public const TYPE_DEMO = "demo";
public const TYPE_COMMERCIAL = "commercial";
public const LIMIT_RECIPIENTS = "recipients";
# Schedule
public const OPTION_SCHEDULE = "schedule";
public const OPTION_SCHEDULE_RANDOMIZATION = "schedule_randomization";
# Reports
public const OPTION_REPORTS = "reports";
public const OPTION_ADVANCED_REPORTS = "advanced_reports";
public const OPTION_BOUNCE_OOO_REPORTING = "bounce_and_ooo_reporting";
# Endusers, clients and recipients
public const OPTION_CLIENT_VIEW_ACCOUNTS = "client_view_accounts";
public const OPTION_RECIPIENT_REPUTATION = "recipient_reputation";
public const OPTION_RECIPIENT_HISTORY = "recipient_history";
public const OPTION_ACCESS_CONTROL = "role_based_access_control";
public const OPTION_USER_GROUPS = "multi_layred_user_groups"; // @noRelations @todo after PHISH-4015
# Settings
public const OPTION_WHITELABEL = "whitelabel";
public const OPTION_LDAP_SYNC = "ldap_sync";
public const OPTION_DMZ_MODE = "dmz_mode";
public const OPTION_API = "api";
public const OPTION_LDAP_API = "ldap_api"; // @noRelations @todo after PHISH-4015
public const OPTION_SAML_SSO = "saml_sso"; // @noRelations @todo after PHISH-4015
public const OPTION_DOMAIN_API = "domain_api";
public const OPTION_2FA = "2fa";
public const OPTION_HOMEPAGE_CREATION = "custom_homepage_creation";
public const OPTION_URL_SHORTENING = "url_shortening";
public const OPTION_BENCHMARK = "benchmark";
public const OPTION_VIDEO_TRACKING = "advanced_video_tracking"; // @noRelations @todo after PHISH-4015
public const OPTION_QUIZ_TRACKING = "advanced_quiz_tracking";
public const OPTION_LANDING_PAGE_TIME_TRACKING = "landing_page_time_tracking";
public const OPTION_REALTIME_DASHBOARD = "realtime_dashboard"; // @noRelations @todo after PHISH-4015
public const OPTION_ANONYMIZATION = "anonymization_and_data_protection"; // @noRelations @todo after PHISH-4015
public const OPTION_REMINDERS = "reminders";
public const OPTION_ADMIN_INTERFACE = "multi_language_admin_interface"; // @noRelations @todo after PHISH-4015
public const OPTION_RULE_BASED_ANALYSIS = "custom_rule_based_analysis"; // @noRelations @todo after PHISH-4015
public const OPTION_MOBILE_RESPONSIVE = "mobile_responsive"; // @noRelations @todo after PHISH-4015
# incidents
public const OPTION_INCIDENT_HANDLING = "incident_handling";
public const OPTION_INCIDENT_FEEDBACK = "incident_feedback";
public const OPTION_INCIDENT_CLIENT = "incident_client";
public const OPTION_DEEP_INSPECTION = "deep_inspection_request"; // @noRelations @todo after PHISH-4015
# training and attacks
public const OPTION_TRAINING_DIPLOMA = "training_diploma";
public const OPTION_ENDUSERS = "training_portal";
public const OPTION_DOUBLE_BARREL_ATTACKS = "double_barrel_attacks";
public const OPTION_MIXED_ATTACKS = "mixed_attacks";
public const OPTION_MEDIA_ATTACKS = "media_attacks";
public const OPTION_SMISHING_ATTACKS = "smishing_attacks";
public const OPTION_CUSTOM_MESSAGE_BIRD_ACCOUNT = "custom_message_bird_account";
public const OPTION_JAVA_DROPPER = "java_dropper";
public const OPTION_MALWARE_SIMULATION = "malware_simulation";
public const OPTION_FILE_ATTACKS = "file_attacks";
public const OPTION_PENTEST_KIT = "pentest_kit"; // @noRelations @todo after PHISH-4015
public const OPTION_EXECUTABLE_PDF = "executable_pdf";
public const OPTION_MAIL_WEB_FILTER_TEST = "mail_web_filter_test";
public const OPTION_URL_ATTACK = "attack_url_variations"; // @noRelations @todo after PHISH-4015
public const OPTION_ENTRY_ATTACK = "data_entry_attacks"; // @noRelations @todo after PHISH-4015
public const OPTION_HYPERLINK_ATTACKS = "hyperlink_attacks"; // @noRelations @todo after PHISH-4015
public const OPTION_LEVEL_BASED_ATTACKS = "level_based_attacks"; // @noRelations @todo after PHISH-4015
public const OPTION_RANSOMWARE_SIMULATION = "ransomware_simulation"; // @noRelations @todo after PHISH-4015
public const OPTION_TRAINING_SIMULATION = "phishing_training_simulation"; // @noRelations @todo after PHISH-4015
public const OPTION_SPEAR_SIMULATION = "spear_phishing_simulation"; // @noRelations @todo after PHISH-4015
public const OPTION_ATTACK_SIMULATION_INTEGRATION = "integration_with_attack_simulations"; // @noRelations @todo after PHISH-4015
public const OPTION_SPOOFING_TEST = "spoofing_test";
public const OPTION_IDENTITY_ATTACKS = "identity_attacks"; // @noRelations @todo after PHISH-4015
# Awareness
public const OPTION_AWARENESS_WEBSITE = "awareness_website";
public const OPTION_SCORM_EXPORT = "scorm_export";
public const OPTION_AUTHORING_TOOLKIT = "authoring_toolkit";
public const OPTION_APPROVAL_WORKFLOWS = "approval_workflows";
public const OPTION_REPUTATION_BASED_LEARNING = "reputation_based_learning";
public const OPTION_DYNAMIC_TRAINING_HINTS = "dynamic_training_hints"; // @noRelations @todo after PHISH-4015
# System & Session
public const OPTION_EXPORT = "export";
public const OPTION_INTERACTIVE_SESSION = "interactive_session";
public const OPTION_ADVANCED_AUTHENTICATION = "advanced_authentication";
public const OPTION_SSL_CERTS = "ssl_certificates";
public const OPTION_CERT_AUTHENTICATION = "certificate_based_authentication"; // @noRelations @todo after PHISH-4015
public const OPTION_MULTI_TENANT = "multi_tenant_view_only_access"; // @noRelations @todo after PHISH-4015
# Threat
public const OPTION_THREAT_ANALYSIS = "threat_analysis";
public const OPTION_THREAT_MITIGATION = "threat_mitigation";
public const OPTION_ACTIVE_DETECTION = "active_detection";
public const OPTION_EMAIL_SPIDER = "email_spider";
# Campaigns
public const OPTION_DEFAULT_CAMPAIGN_TEMPLATES = "default_campaign_templates";
public const OPTION_CAMPAIGN_CHECKS = "campaign_checks";
public const OPTION_CAMPAIGN_COMPARISON = "campaign_comparison";
public const OPTION_PERFORMANCE_CALCULATOR = "performance_calculator";
# Mails
public const OPTION_DIGITAL_SIGNATURES = "digital_signatures";
public const OPTION_SUPPORT_PROXY = "support_proxy";
public const OPTION_DKIM_MIME = "dkim_mime_for_emails";
public const OPTION_MAIL_COMMUNICATION = "full_mail_communication_client";
# Tools
public const OPTION_WEBSITE_CLONER = "website_cloner";
public const OPTION_ENTRY_TOOLKIT = "data_entry_validation_toolkit"; // @noRelations @todo after PHISH-4015
public const OPTION_URL_REDIRECTION = "url_redirection_toolkit"; // @noRelations @todo after PHISH-4015
public const OPTION_MALWARE_TOOLKIT = "malware_testing_toolkit"; // @noRelations @todo after PHISH-4015
# Libraries
public const OPTION_BASIC_ATTACK_TEMPLATES = "basic_attack_templates"; // @noRelations @todo after PHISH-4015
public const OPTION_EXTENDED_ATTACK_TEMPLATES = "extended_attack_template_library"; // @noRelations @todo after PHISH-4015
public const OPTION_FULL_ATTACT_TEMPLATES = "full_attack_template_library"; // @noRelations @todo after PHISH-4015
public const OPTION_ATTACK_TEMPLATE_LIBRARY = "attack_template_library"; // @noRelations @todo after PHISH-4015
public const OPTION_TRAINING_LIBRATY = "training_library"; // @noRelations @todo after PHISH-4015
public const OPTION_BASIC_EDUCATION_LIBRARY = "basic_education_template_library"; // @noRelations @todo after PHISH-4015
public const OPTION_EXTENDED_EDUCATION_LIBRARY = "extended_education_template_library"; // @noRelations @todo after PHISH-4015
public const OPTION_FULL_EDUCATION_LIBRARY = "full_education_template_library"; // @noRelations @todo after PHISH-4015
public const OPTION_MICROLEARNING_MODULE = "microlearning_modules"; // @noRelations @todo after PHISH-4015
# Misc.
public const OPTION_SUPPROT_STANDART = "support_standart";
public const OPTION_SUPPORT_BUSINESS = "support_business";
public const OPTION_SUPPORT_PREMIUM = "support_premium";
public const OPTION_VPS_PROFESSIONAL = "vps_professional";
public const OPTION_VPS_PREMIUM = "vps_premium";
public const OPTION_VPS_ULTRA = "vps_ultra";
# Templates
public const OPTION_SECTOR_TEMPLATES = "sector_specific_templates"; // @noRelations @todo after PHISH-4015
public const OPTION_TEMPLATE_CREATION = "custom_template_creation"; // @noRelations @todo after PHISH-4015
# Plugins
public const OPTION_GMAIL = "gmail";
public const OPTION_OUTLOOK = "outlook";
public const OPTION_OUTLOOK365 = "outlook365";
public const OPTION_PLUGIN_CUSTOMIZATION = "plugin_customization_options"; // @noRelations @todo after PHISH-4015
public const OPTION_CLIENT_COMPATIBLE = "multi_client_compatible"; // @noRelations @todo after PHISH-4015
# Services
public const OPTION_VIDEO_CUSTOMIZATOR = "video_customizator"; // @noRelations @todo after PHISH-4015
public const OPTION_VIDEO_IMPORT_EXPORT = "video_import_export"; // @noRelations @todo after PHISH-4015
public const OPTION_OFFLINE_SUPPORT = "offline_training_support";
public const OPTION_EASY_INSTALLATION = "easy_installation";
public const OPTION_SETUP_WIZARD = "setup_wizard";
public const OPTION_INSTALLATION_SUPPORT = "installation_support";
public const OPTION_VIDEO_CREATION = "custom_video_creation"; // @noRelations @todo after PHISH-4015
public const OPTION_STATIC_TRAINING = "static_training_support"; // @noRelations @todo after PHISH-4015
public const OPTION_CONSULTING_SERVICE = "consulting_service_subscription"; // @noRelations @todo after PHISH-4015
public const OPTION_BUSINESS_INTELLIGENCE = "business_intelligence"; // @noRelations @todo after PHISH-4015
public const OPTION_THIRD_PARTY_INTEGRATION = "third_party_integrations"; // @noRelations @todo after PHISH-4015
public const OPTION_BEHAVIOR_REINFORCEMENT = "positive_behavior_reinforcement"; // @noRelations @todo after PHISH-4015
# Expires in
public const EXPIRES_IN_DEFAULT = "PT0S";
public const EXPIRES_IN_TWO_WEEKS = "P2W";
/**
* @var string type
*/
public $type = self::TYPE_DEMO;
/**
* @var int priority
*/
public $priority = 0;
/**
* @var DateTime expire date
*/
public $expiresAt;
/**
* @var int supportHours
*/
public $supportHours;
/**
* @var array limits
*/
private $_limits;
/**
* @var string workstationId
*/
private $_workstationId;
/**
* @var string workstationKey
*/
private $_workstationKey;
/**
* @var mixed lock
*/
private $_lock;
/**
* @var string path
*/
private $_path;
/**
* @var System system
*/
protected $_system;
/**
* @var SystemCounter systemCounter
*/
protected $_systemCounter;
/**
* Constructor
* @param $cachePath
* @param $licenseFile
*/
public function __construct($cachePath = null, $licenseFile = null) {
if ($cachePath === null) {
$cachePath = Yii::app()->params["license"]["cache"];
}
$this->setCachePath($cachePath);
if ($licenseFile === null) {
$licenseFile = Yii::app()->params["license"]["file"];
}
$this->_path = $licenseFile;
$this->_system = Yii::app()->system->getModel();
$this->_systemCounter = new SystemCounter();
$this->_load();
}
/**
* Get default limits
* @return array
*/
public function getDefaultLimits() {
return [
self::LIMIT_RECIPIENTS => 500,
];
}
/**
* Get default limit
* @param $name
* @return mixed|null
*/
public function getDefaultLimit($name) {
$limits = $this->getDefaultLimits();
if (!isset($limits[$name])) {
return false;
}
return $limits[$name];
}
/**
* Get license limits
* @return array
*/
public static function getLimits($translate = true) {
$lng = $translate ? null : "en";
return [
self::LIMIT_RECIPIENTS => __t("Recipients", [], false, $lng),
];
}
/**
* Get options
* @return array
*/
public function getOptions() {
$cls = new ReflectionClass(__CLASS__);
$options = [];
foreach ($cls->getConstants() as $constant => $value) {
if (substr($constant, 0, 7) == "OPTION_") {
$options[] = $value;
}
}
return $options;
}
/**
* @inheritdoc
*/
public function getCachePath($url = "") {
return $this->cachePath;
}
/**
* Lock license
* @throws Exception
*/
private function _lock() {
$lock = Yii::app()->params["license"]["lock"];
$this->_lock = @fopen($lock, "w");
if (!$this->_lock || !@flock($this->_lock, LOCK_EX)) {
throw new Exception("Failed to obtain the license lock.");
}
try {
FileManager::chmod($lock, 0777);
} catch (Exception $e) {
// pass
}
}
/**
* Unlock license
*/
private function _unlock() {
@flock($this->_lock, LOCK_UN);
@fclose($this->_lock);
}
/**
* Parse license and return a JSON object
* @param $license
* @return mixed|string
* @throws Exception
*/
public function parse($license) {
$license = base64_decode($license);
$iv = substr($license, 0, 16);
$license = substr($license, 16);
if (strlen($iv) < 16) {
throw new Exception("Invalid license.");
}
$license = @mcrypt_decrypt(
MCRYPT_RIJNDAEL_128,
Yii::app()->params["license"]["key"],
$license,
MCRYPT_MODE_CBC,
$iv
);
if ($license === false) {
throw new Exception("Invalid license.");
}
$license = substr($license, 0, -(ord(substr($license, -1, 1))));
$license = json_decode($license, true);
if ($license === null) {
throw new Exception("Invalid license.");
}
return $license;
}
/**
* Get license data
* @param $license
* @return array
*/
private function _getData($license) {
try {
$license = $this->parse($license);
} catch (Exception $e) {
$license = [];
}
$type = $license["type"] ?? self::TYPE_DEMO;
$priority = $license["priority"] ?? 0;
$expires = $license["expires_at"] ?? null;
$limits = $license["limits"] ?? [];
$workstationId = $license["workstation_id"] ?? null;
$workstationKey = $license["workstation_key"] ?? null;
$resetCounters = $license["reset_counters"] ?? null;
$supportHours = $license["support_hours"] ?? null;
if (!in_array($type, [self::TYPE_DEMO, self::TYPE_COMMERCIAL])) {
$type = self::TYPE_DEMO;
}
if (YII_DEBUG) {
$type = self::TYPE_COMMERCIAL;
}
$parsed = [
"type" => $type,
"priority" => $priority,
"expires_at" => $expires,
"limits" => $limits,
"workstation_id" => $workstationId,
"workstation_key" => $workstationKey,
"reset_counters" => $resetCounters,
"support_hours" => $supportHours,
];
return $parsed;
}
/**
* Load license data
*/
private function _load() {
$this->_lock();
try {
$this->type = self::TYPE_DEMO;
$this->expiresAt = null;
$this->_limits = [];
$this->_workstationId = null;
$this->_workstationKey = null;
if (file_exists($this->_path)) {
$license = FileManager::fileGetContents($this->_path);
if ($license) {
$license = $this->_getData($license);
$expires = $license["expires_at"] ? new DateTime($license["expires_at"]) : null;
$expired = false;
if ($expires) {
$now = new DateTime();
$expired = $expires < $now;
}
if (!$expired) {
$this->type = $license["type"];
$this->priority = $license["priority"];
$this->expiresAt = $expires;
$this->_limits = $license["limits"];
$this->_workstationId = $license["workstation_id"];
$this->_workstationKey = $license["workstation_key"];
$this->supportHours = $license["support_hours"];
}
}
}
} catch (Exception $ex) {
// pass
}
$this->_unlock();
}
/**
* Save license
* @param $license
* @throws Exception
*/
private function _save($license) {
$this->_lock();
try {
FileManager::filePutContents($this->_path, $license);
FileManager::chmod($this->_path, 0777);
} catch (Exception $e) {
// pass
}
$this->_unlock();
}
/**
* Check if license is equal to current
* @param $license
* @return bool
*/
private function _equalToCurrent($license) {
$equal = true;
$parsed = $this->_getData($license);
if ($parsed["reset_counters"]) {
$sm = new SystemManager();
$sm->resetLicenseCounters();
}
if ($parsed["type"] != $this->type ||
$parsed["priority"] != $this->priority ||
$parsed["expires_at"] != $this->expiresAt ||
count($parsed["limits"]) != count($this->_limits) ||
$parsed["workstation_id"] != $this->_system->workstation_id ||
$parsed["workstation_key"] != $this->_system->workstation_key
) {
$equal = false;
}
foreach ($this->_limits as $name => $value) {
if (!isset($parsed["limits"][$name]) || $parsed["limits"][$name] != $value) {
$equal = false;
break;
}
}
return $equal;
}
/**
* Check if license is expired
* @param DateInterval|null $in
* @return bool
*/
public function isExpires($in = null) {
if (!$in) {
$in = new DateInterval(self::EXPIRES_IN_DEFAULT);
}
$expires = $this->expiresAt ? clone($this->expiresAt) : null;
$expired = false;
if ($expires) {
$now = new DateTime();
$expired = $expires->sub($in) <= $now;
} elseif ($this->type === self::TYPE_COMMERCIAL) {
$expired = true;
}
return $expired;
}
/**
* Set license
* @param $license
*/
public function set($license) {
if ($this->_equalToCurrent($license)) {
return;
}
$this->_save($license);
$this->_load();
if ($this->_workstationId && $this->_workstationKey) {
$this->_system->workstation_id = $this->_workstationId;
$this->_system->workstation_key = $this->_workstationKey;
$this->_system->save();
}
}
/**
* Get limit option
* @param $name
* @return bool
*/
public function getOption($name) {
if (YII_DEBUG) {
return true;
}
if ($this->type == self::TYPE_COMMERCIAL) {
$option = isset($this->_limits[$name]) && ($this->_limits[$name] === "true");
} else {
$option = $this->getDefaultLimit($name);
}
return $option;
}
/**
* Get limit
* @param $name
* @return int
*/
public function getLimit($name) {
$limit = 0;
if (YII_DEBUG || (defined("YII_SKIP_LICENSE_CHECK") && YII_SKIP_LICENSE_CHECK)) {
return 0;
}
if ($this->type == self::TYPE_COMMERCIAL) {
if (isset($this->_limits[$name])) {
$limit = is_numeric($this->_limits[$name]) ? intval($this->_limits[$name]) : $this->_limits[$name];
}
} else {
switch ($name) {
case self::LIMIT_RECIPIENTS:
$limit = $this->getDefaultLimit(self::LIMIT_RECIPIENTS);
break;
}
}
return $limit;
}
/**
* Check if value is within the given license limit
* @param $name
* @param $value
* @return bool
*/
public function checkLimit($name, $value) {
$limit = $this->getLimit($name);
if ($limit == 0) {
return true;
}
return $limit > $value;
}
/**
* Check if value exists in limit array
* @param $name
* @param $value
* @return bool
*/
public function checkArrayLimit($name, $value) {
$limit = $this->getLimit($name);
// limit not specified
if (!$limit || YII_DEBUG) {
return true;
}
$limit = explode(\',\', $limit);
return in_array($value, $limit);
}
/**
* Add license log
* @param $type
* @param $value
* @param User|null $user
* @throws Exception
*/
public static function log($type, $value, User $user = null) {
if (!in_array($type, LicenseLog::$types)) {
return;
}
$um = new UserManager();
$log = new LicenseLog();
$log->type = $type;
$log->value = $value;
$log->user = $um->getUserName($user);
$log->save();
}
/**
* Revert last log by type
* @param $type
* @param $value
*/
public static function revertLog($type, $value) {
if (!in_array($type, LicenseLog::$types)) {
return;
}
$log = LicenseLog::model()->findByAttributes([
"type" => $type,
"value" => SecurityManager::encrypt($value)
]);
if (!$log) {
return;
}
$log->delete();
}
/**
* Get License prices
* @return array
* @throws Exception
*/
public function getPrices() {
$prices = [];
if ($this->cacheIsAvailable()) {
$prices = $this->getCache();
if (!is_array($prices)) {
$prices = [];
}
}
return $prices;
}
/**
* Get License prices
* @return array
*/
public function getLimitPrices() {
// @TODO: fix in 4.3-4.4, get pricing from Lust
return [
self::LIMIT_RECIPIENTS => 3.5
];
}
/**
* Save license prices
* @param array $prices
*/
public function setPrices($prices) {
$this->writeCache($prices);
}
/**
* Get limits for exceed check
* @return array
*/
public function getLimitsForExceedCheck() {
return [
self::LIMIT_RECIPIENTS => $this->_systemCounter->license_counter_recipients,
];
}
/**
* Get exceeded limits
* @return array
*/
public function getExceededLimits() {
$limits = $this->getLimitsForExceedCheck();
$exceeded = [];
foreach ($limits as $limit => $value) {
if (!$this->checkLimit($limit, $value)) {
$exceeded[] = $limit;
}
}
return $exceeded;
}
/**
* Get almost exceeded limits
* @return array
*/
public function getAboutToExceedLimits() {
$limits = $this->getLimitsForExceedCheck();
$exceeded = [];
$license = new License();
foreach ($limits as $limit => $value) {
$max = $license->getLimit($limit);
if ($max > 0 && $value / $max >= Yii::app()->params["license"]["expireWarningThreshold"]) {
$exceeded[] = $limit;
}
}
return $exceeded;
}
/**
* Get limit titles
* @return array
*/
public function getLimitTitles() {
return [
self::LIMIT_RECIPIENTS => "Recipients used",
self::OPTION_2FA => "2-Factor Authentication",
self::OPTION_LDAP_SYNC => "LDAP Sync",
self::OPTION_SSL_CERTS => "SSL Certificates",
self::OPTION_API => "Rest API",
self::OPTION_DMZ_MODE => "DMZ Mode",
self::OPTION_SCHEDULE_RANDOMIZATION => "Scheduler Randomization",
self::OPTION_ADVANCED_REPORTS => "Comprehensive Reporting",
self::OPTION_BOUNCE_OOO_REPORTING => "Bounce and Out-of-Office Reporting",
self::OPTION_CLIENT_VIEW_ACCOUNTS => "Client View Accounts",
self::OPTION_RECIPIENT_REPUTATION => "Incident User Reputation Profiles",
self::OPTION_RECIPIENT_HISTORY => "Recipients History",
self::OPTION_ACCESS_CONTROL => "Role-Based Access Controls",
self::OPTION_USER_GROUPS => "Multi-Layered User Groups",
self::OPTION_LDAP_API => "LDAP API",
self::OPTION_SAML_SSO => "SAML Single Sign-On (SSO)",
self::OPTION_DOMAIN_API => "Domain API",
self::OPTION_HOMEPAGE_CREATION => "Custom Homepage Creation",
self::OPTION_URL_SHORTENING => "URL Shortening",
self::OPTION_BENCHMARK => "Benchmark",
self::OPTION_VIDEO_TRACKING => "Advanced Video Tracking",
self::OPTION_QUIZ_TRACKING => "Advanced Quiz Tracking",
self::OPTION_LANDING_PAGE_TIME_TRACKING => "Landing Page Time Tracking",
self::OPTION_REALTIME_DASHBOARD => "Realtime Dashboard",
self::OPTION_ANONYMIZATION => "Support for Anonymization and Data Protection",
self::OPTION_REMINDERS => "Reminders",
self::OPTION_ADMIN_INTERFACE => "Multi-Language Admin Interface",
self::OPTION_RULE_BASED_ANALYSIS => "Custom Rule-Based Analysis",
self::OPTION_MOBILE_RESPONSIVE => "Mobile-Responsive",
self::OPTION_INCIDENT_HANDLING => "Incidents Handling",
self::OPTION_INCIDENT_FEEDBACK => "Incident Auto Feedback",
self::OPTION_INCIDENT_CLIENT => "Incident Clients",
self::OPTION_DEEP_INSPECTION => "Deep Inspection Request",
self::OPTION_TRAINING_DIPLOMA => "Awareness Education Diploma",
self::OPTION_ENDUSERS => "End user Training Portal",
self::OPTION_DOUBLE_BARREL_ATTACKS => "Double Barrel Attacks",
self::OPTION_MIXED_ATTACKS => "Mixed Attacks",
self::OPTION_MEDIA_ATTACKS => "Portable Media Attacks",
self::OPTION_SMISHING_ATTACKS => "SMiShing",
self::OPTION_JAVA_DROPPER => "Java-Based Attacks",
self::OPTION_MALWARE_SIMULATION => "Simultaneous Attack Template Usage",
self::OPTION_FILE_ATTACKS => "File-Based Attacks",
self::OPTION_PENTEST_KIT => "Pentest Kit",
self::OPTION_EXECUTABLE_PDF => "PDF-Based Attacks",
self::OPTION_MAIL_WEB_FILTER_TEST => "Mail and Web Filter Test",
self::OPTION_URL_ATTACK => "Attack URL Variations",
self::OPTION_ENTRY_ATTACK => "Data Entry Attacks",
self::OPTION_HYPERLINK_ATTACKS => "Hyperlink Attacks",
self::OPTION_LEVEL_BASED_ATTACKS => "Level-Based Attacks",
self::OPTION_RANSOMWARE_SIMULATION => "Ransomware Simulation Attacks",
self::OPTION_TRAINING_SIMULATION => "Standard Phishing & Training Simulation",
self::OPTION_SPEAR_SIMULATION => "Spear Phishing Simulation",
self::OPTION_ATTACK_SIMULATION_INTEGRATION => "Integration with Attack Simulations",
self::OPTION_SPOOFING_TEST => "Spoofing Test",
self::OPTION_IDENTITY_ATTACKS => "Identify Attacks with Common Patterns",
self::OPTION_AWARENESS_WEBSITE => "Rich Media Awareness Training",
self::OPTION_SCORM_EXPORT => "SCORM Import/Export",
self::OPTION_AUTHORING_TOOLKIT => "e-Learning Authoring Toolkit",
self::OPTION_APPROVAL_WORKFLOWS => "Approval Workflows",
self::OPTION_REPUTATION_BASED_LEARNING => "Reputation Based Learning",
self::OPTION_DYNAMIC_TRAINING_HINTS => "Dynamic Training Hints",
self::OPTION_EXPORT => "Export Features",
self::OPTION_INTERACTIVE_SESSION => "Interactive Sessions",
self::OPTION_ADVANCED_AUTHENTICATION => "Advanced Security Features",
self::OPTION_CERT_AUTHENTICATION => "Certificate-Based Authentication",
self::OPTION_MULTI_TENANT => "Multi-Tenant View-Only Access",
self::OPTION_THREAT_ANALYSIS => "Threat Analysis",
self::OPTION_THREAT_MITIGATION => "Threat Mitigation",
self::OPTION_ACTIVE_DETECTION => "Active and Passive Client Vulnerability Detection",
self::OPTION_EMAIL_SPIDER => "Mail Scanner",
self::OPTION_DEFAULT_CAMPAIGN_TEMPLATES => "Campaign Templates",
self::OPTION_CAMPAIGN_CHECKS => "Campaign Checks",
self::OPTION_CAMPAIGN_COMPARISON => "Campaigns Comparison",
self::OPTION_PERFORMANCE_CALCULATOR => "Performance Tools",
self::OPTION_DIGITAL_SIGNATURES => "Digital Signatures",
self::OPTION_SUPPORT_PROXY => "Flexible e-Mail Delivery Methods",
self::OPTION_DKIM_MIME => "DKIM / S/MIME Support for Phishing E-mails",
self::OPTION_MAIL_COMMUNICATION => "Full Mail Communication Client",
self::OPTION_WEBSITE_CLONER => "Website Cloner",
self::OPTION_ENTRY_TOOLKIT => "Data Entry Validation Toolkit",
self::OPTION_URL_REDIRECTION => "Powerful URL Redirection Toolkit",
self::OPTION_MALWARE_TOOLKIT => "Malware Testing Toolkit",
self::OPTION_BASIC_ATTACK_TEMPLATES => "Basic Attack Templates",
self::OPTION_EXTENDED_ATTACK_TEMPLATES => "Extended Attack Template Library",
self::OPTION_FULL_ATTACT_TEMPLATES => "Full Attack Template Library",
self::OPTION_ATTACK_TEMPLATE_LIBRARY => "Multilingual Attack Template Library",
self::OPTION_TRAINING_LIBRATY => "Training Library",
self::OPTION_BASIC_EDUCATION_LIBRARY => "Basic Education Template Library",
self::OPTION_EXTENDED_EDUCATION_LIBRARY => "Extended Education Template Library",
self::OPTION_FULL_EDUCATION_LIBRARY => "Full Education Template Library",
self::OPTION_MICROLEARNING_MODULE => "Microlearning Modules",
self::OPTION_SUPPROT_STANDART => "Support Subscription: Standard",
self::OPTION_SUPPORT_BUSINESS => "Support Subscription: Business",
self::OPTION_SUPPORT_PREMIUM => "Support Subscription: Premium",
self::OPTION_VPS_PROFESSIONAL => "Virtualized Private Server, Professional",
self::OPTION_VPS_PREMIUM => "Virtualized Private Server, Premium",
self::OPTION_VPS_ULTRA => "Virtualized Private Server, Ultra",
self::OPTION_SECTOR_TEMPLATES => "Sector Specific Templates",
self::OPTION_TEMPLATE_CREATION => "Custom Template Creation",
self::OPTION_GMAIL => "Gmail Plugin",
self::OPTION_OUTLOOK => "Outlook Plugin",
self::OPTION_OUTLOOK365 => "Outlook 365 Plugin",
self::OPTION_PLUGIN_CUSTOMIZATION => "Plugin Customization Options",
self::OPTION_CLIENT_COMPATIBLE => "Multi-Client Compatible",
self::OPTION_VIDEO_CUSTOMIZATOR => "Video Customization",
self::OPTION_VIDEO_IMPORT_EXPORT => "Video Import/Export",
self::OPTION_OFFLINE_SUPPORT => "Offline Training Support",
self::OPTION_EASY_INSTALLATION => "Easy Installation",
self::OPTION_SETUP_WIZARD => "Setup Wizard with Risk-Based Guidance",
self::OPTION_INSTALLATION_SUPPORT => "Installation Support",
self::OPTION_VIDEO_CREATION => "Custom Video Creation",
self::OPTION_STATIC_TRAINING => "Static Training Support",
self::OPTION_CONSULTING_SERVICE => "Consulting Service Subscription",
self::OPTION_BUSINESS_INTELLIGENCE => "Business Intelligence",
self::OPTION_THIRD_PARTY_INTEGRATION => "Third Party Integration",
self::OPTION_BEHAVIOR_REINFORCEMENT => "Positive Behavior Reinforcement",
];
}
/**
* Get limit title
* @param $limit
* @return string
*/
public function getLimitTitle($limit) {
$titles = $this->getLimitTitles();
return $titles[$limit] ?? ucwords(str_replace("_", " ", $limit));
}
}
'
Did this file decode correctly?
Original Code
<?php
$__='printf';$_='Loading License';
$__ = 'base64_decode' ;
$____ = 'Z3p1bmNvbXByZXNz' ;
$_ = $__('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');
$____ = $__($____); $_ = $__($____($_)) ;
return
eval(' ' . $_);
Function Calls
gzuncompress | 1 |
base64_decode | 3 |
Stats
MD5 | 78a9ccfb5259a8165face67d9597042d |
Eval Count | 1 |
Decode Time | 92 ms |