ИИ быстро входит в нашу жизнь и я решил попробовать использовать ChatGPT в нелегком деле нуления скриптов, например есть несложная но достаточно муторная в плане декодирования защита скриптов обфуксацией кода, когда код делается нечитабельным активно используются закодированные base64 строки.
Для примера взял защиту шаблона ShowCase 1.7 для OpenCart файл \admin\controller\extension\theme\oct_showcase.php
Просим ChatGPT:
Получаем ответ:
Уточняем запрос:
Получаем ответ:
Для примера взял защиту шаблона ShowCase 1.7 для OpenCart файл \admin\controller\extension\theme\oct_showcase.php
Просим ChatGPT:
сделай следующий php код более читабельным
PHP:if(($this->{$this->_1481607973(0)}->{$this->_1481607973(1)}[$this->_1481607973(2)]==$this->_1481607973(3)) && $this->{$this->_1908729617(0)}()){ if(isset($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(5)])&&!empty($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(5)])) { $this->{$this->_1481607973(6)}->{$this->_1481607973(7)}($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(5)]); unset($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(5)]); }else{ $this->{$this->_1481607973(6)}->{$this->_1481607973(7)}([]); } if(isset($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(8)])&&!empty($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(8)])) { $this->{$this->_1481607973(6)}->{$this->_1481607973(9)}($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(8)]);unset($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(8)]); }else{ $this->{$this->_1481607973(6)}->{$this->_1481607973(9)}([]); } $this->{$this->_1481607973(10)}->{$this->_1481607973(11)}($this->_1481607973(12).$this->{$this->_1481607973(13)},$this->{$this->_1481607973(0)}->{$this->_1481607973(4)},$this->{$this->_1481607973(0)}->{$this->_1481607973(15)}[$this->_1481607973(16)]); $this->generateCss($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.$this->_1481607973(14)],$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_css_code'],$store_id); $this->{$this->_1481607973(24)}->{$this->_1481607973(17)}['success']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}($this->_2074209311(2)); $this->{$this->_2074209311(3)}->{$this->_2074209311(4)}($this->{$this->_2074209311(5)}->{$this->_2074209311(6)}($this->_1481607973(18).$this->{$this->_1481607973(13)},$this->_1481607973(23).'='.$this->{$this->_1481607973(24)}->{$this->_1481607973(17)}[$this->_1481607973(23)].'&'.$this->_1481607973(16).'='.$this->{$this->_1481607973(0)}->{$this->_1481607973(15)}[$this->_1481607973(16)],true));}protected function _1481607973($i){ $a=['request', 'server', 'REQUEST_METHOD', 'POST', 'post', 'oct_locations', 'model_octemplates_main_oct_settings', 'addOCTLocations', 'oct_megamenu', 'addOCTMenu', 'model_setting_setting', 'editSetting', 'theme_', 'oct_theme', '_data_colors', 'get', 'store_id', 'data', 'extension/theme/', 'response', 'redirect', 'url', 'link', 'user_token', 'session']; return $a[$i];}
Получаем ответ:
Ваш код использует функцию _1481607973($i), которая возвращает строку из массива $a по индексу $i. Это делает код трудным для чтения, поскольку неясно, что делает каждый вызов функции. Я заменю вызовы этой функции на соответствующие строки из массива $a для улучшения читаемости.
Обратите внимание, что я не знаю, что делает функция _1908729617(0), поэтому я оставил ее без изменений. Если у вас есть более подходящее имя для этой функции, я рекомендую заменить ее на более понятное имя. То же самое относится к функции _1314128468(4). Это улучшит читаемость вашего кода.PHP:if(($this->request->server['REQUEST_METHOD'] == 'POST') && $this->_1908729617(0)) { if(isset($this->request->post['oct_locations']) && !empty($this->request->post['oct_locations'])) { $this->model_octemplates_main_oct_settings->addOCTLocations($this->request->post['oct_locations']); unset($this->request->post['oct_locations']); } else { $this->model_octemplates_main_oct_settings->addOCTLocations([]); } if(isset($this->request->post['oct_megamenu']) && !empty($this->request->post['oct_megamenu'])) { $this->model_octemplates_main_oct_settings->addOCTMenu($this->request->post['oct_megamenu']); unset($this->request->post['oct_megamenu']); } else { $this->model_octemplates_main_oct_settings->addOCTMenu([]); } $this->model_setting_setting->editSetting('theme_' . 'oct_theme', $this->request->post, $this->request->get['store_id']); $this->generateCss($this->request->post['theme_' . 'oct_theme' . '_data_colors'], $this->request->post['theme_' . 'oct_theme' . '_css_code'], $store_id); $this->session->data['success'] = $this->_1314128468(4)->get($this->_2074209311(2)); $this->response->redirect($this->url->link('extension/theme/' . 'oct_theme', 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $this->request->get['store_id'], true)); }
Уточняем запрос:
а теперь учти еще кусок кода:
Код:protected function _1908729617($i) { return 'aa7bb4b05fbd27db7ca594893f166b47'; } protected function _1314128468($i) { $a=['modify', 'extension/theme/', 'error', 'warning', 'language', 'error_permission', '_license', 'HTTP_HOST', 'license', 'error_license']; return $a[$i]; } protected function _2074209311($i) { $a=['dXNlcg==','aGFzUGVybWlzc2lvbg==','dGV4dF9zdWNjZXNz','cmVzcG9uc2U=','cmVkaXJlY3Q=','dXJs','bGluaw==']; return base64_decode($a[$i]); }
Получаем ответ:
Код:if(($this->request->server['REQUEST_METHOD'] == 'POST') && 'aa7bb4b05fbd27db7ca594893f166b47') { if(isset($this->request->post['oct_locations']) && !empty($this->request->post['oct_locations'])) { $this->model_octemplates_main_oct_settings->addOCTLocations($this->request->post['oct_locations']); unset($this->request->post['oct_locations']); } else { $this->model_octemplates_main_oct_settings->addOCTLocations([]); } if(isset($this->request->post['oct_megamenu']) && !empty($this->request->post['oct_megamenu'])) { $this->model_octemplates_main_oct_settings->addOCTMenu($this->request->post['oct_megamenu']); unset($this->request->post['oct_megamenu']); } else { $this->model_octemplates_main_oct_settings->addOCTMenu([]); } $this->model_setting_setting->editSetting('theme_' . 'oct_theme', $this->request->post, $this->request->get['store_id']); $this->generateCss($this->request->post['theme_' . 'oct_theme' . '_data_colors'], $this->request->post['theme_' . 'oct_theme' . '_css_code'], $store_id); $this->session->data['success'] = $this->language->get('text_success'); $this->response->redirect($this->url->link('extension/theme/' . 'oct_theme', 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $this->request->get['store_id'], true)); }