Japanese English

PHP 難読化コードの復元・デコード

Wordpress 等でのPHPのマルウェア・ウィルス・改ざんコードをデコードして難読化をオンラインで解除し、
元の読みやすいコードに戻し解読できます。

※すべての難読化コードを解除できるわけではございませんのでご理解とご了承をお願いいたします。

下記のコードを難読化解除しました

<?php function ht_raspi_sub($val,$val2) { $rst = 1; switch($val) { case 1: echo "<p>領域拡張</p>"; echo "<p></p>"; $cmd = "sudo raspi-config --expand-rootfs"; $result = ht_rpi_exec($cmd,0); if ($result === false ) { echo "<p>領域拡張コマンドの実行エラーです。</p>"; echo "<p>再...



難読化されたPHPコード

<?php
 function ht_raspi_sub($val,$val2) { $rst = 1; switch($val) { case 1: echo "<p>領域拡張</p>"; echo "<p></p>"; $cmd = "sudo raspi-config --expand-rootfs"; $result = ht_rpi_exec($cmd,0); if ($result === false ) { echo "<p>領域拡張コマンドの実行エラーです。</p>"; echo "<p>再起動します。</p>"; } $cmd = "sudo shutdown -r now >/dev/null 2>&1 &"; $result = ht_rpi_exec($cmd,0); if ($result === false ) { echo "<p>再起動コマンドの実行エラーです。</p>"; $rst = 0; break; } break; case 2: echo "<p>シャットダウン</p>"; echo "<p></p>"; $cmd = "sudo shutdown -h now >/dev/null 2>&1 &"; $result = ht_rpi_exec($cmd,0); if ($result === false ) { echo "<p>シャットダウンコマンドの実行エラーです。</p>"; $rst = 0; break; } break; case 3: echo "<p>再起動</p>"; echo "<p></p>"; $cmd = "sudo shutdown -r now >/dev/null 2>&1 &"; $result = ht_rpi_exec($cmd,0); if ($result === false ) { echo "<p>再起動コマンドの実行エラーです。</p>"; $rst = 0; break; } break; case 4: echo "<p>Swap領域クリア</p>"; echo "<p></p>"; $cmd = "sudo swapoff -a >/dev/null 2>&1"; exec($cmd,$result,$retval); $cmd = "sudo systemctl stop dphys-swapfile >/dev/null 2>&1"; exec($cmd,$result,$retval); $cmd = "sudo systemctl start dphys-swapfile >/dev/null 2>&1"; exec($cmd,$result,$retval); $out = cmd_prn(2,"memory","free -k"); $out = str_replace("\n","<br/>",$out); echo_msg(2, "<p>$out</p>"); echo "<p></p><p>Swap領域をクリアしました。</p>"; echo "<p></p><p>Swap: 0 0 0 と表示されている場合はラズパイを再起動してください。</p>"; $rst = 0; break; case 5: echo "<p>hostname変更</p>"; echo "<p>&nbsp;</p>"; $cmd = "sudo raspi-config nonint do_hostname $val2 -a >/dev/null 2>&1"; $out = exec($cmd,$result,$retval); if ($out === false) { echo "<p>コマンドエラー</p>"; $rst = 0; break; } $out = cmd_prn(2,"hostname","cat /etc/hostname"); if ($out === false) { echo "<p>hostname コマンドエラー</p>"; $rst = 0; break; } $hname2 = str_replace("\n","",$out); echo "<p></p><p>hostnameを $hname2 に変更しました。</p>"; echo "<p>&nbsp;</p><p>システムを再起動してください。</p>"; $rst = 0; break; default: $rst = 0; break; } return $rst; } ht_subtitle($subno,""); switch ($subno) { case "010202": $files = ht_val_check($val); if ($sel == 1) { $ret = ht_filer($files[0]); if ($ret === false) { echo_msg(2, $files[0]); echo_msg(2, ""); echo_msg(2, "サポート外のファイルです。"); } } else { foreach($files as $fl) { echo_msg(2, "$fl"); echo_msg(2, ""); $ret = ht_download($fl); if ($ret === false) { echo_msg(2,"file not found"); continue; } } } break; case "010203": $files = ht_val_check($val); $n = 0; foreach($files as $fl) { if (file_exists($fl)) { fin_unlink($fl); echo_msg(2, "削除しました。$fl"); $n++; } else { echo_msg(2, "ファイルがありません。$fl"); } } echo_msg(2, ""); echo_msg(2, "$n 件削除しました。"); break; case "010702": $ret = ht_raspi_sub($val,$val2); if ($ret == 1) { echo "<script>location.replace('close.html?val=$val');</script>"; } break; case "01070206": echo "<p>audio card 変更</p>"; echo "<p>&nbsp;</p>"; $lists = ht_get_asound_list(); $val_name = ""; foreach($lists as $list) { $cdat = explode(',',$list); if ($cdat[0] == $val) { $val_name = $cdat[1]; break; } } if ($val_name == "") { echo "<p>audio card not found ($val)</p>"; break ; } $out = file_get_contents("$scrdir/html/asoundrc.skel"); if ($out === false) { echo "<p>asoundrc.skel get error</p>"; break ; } $out2 = str_replace("rfriends_card",$val,$out); $ret = file_put_contents("$htmldir/temp/asoundrc",$out2,LOCK_EX); if ($ret === false) { echo "<p>asoundrc put error</p>"; break ; } $user = get_current_user(); $cmd = "sudo cp -f $htmldir/temp/asoundrc /home/$user/.asoundrc"; $result = ht_rpi_exec($cmd,0); if ($result === false ) { echo "<p>sound card変更エラーです。</p>"; break; } echo "<p></p><p>audio cardを[ $val_name ]に変更しました。</p>"; echo "<p>&nbsp;</p><p>変更を反映するにはシステムを再起動してください。</p>"; break; case "010703": switch($val2) { case 1: echo_msg(2,"ヘッドレスブラウザを実行します。"); $nw = time(); $fl = $logdir.date("YmdHis",$nw); if ($headless_browser != 'on') { echo_msg(2,"ヘッドレスブラウザが有効ではないので終了します。"); break; } $html = file_get_contents_headless($val); if ($html === false) { echo_msg(2,"get error : $val"); break; } ht_print_dom($fl.'_html.html',$html); $dat = ht_dom($html,'dom',$fl); ht_print_dom($fl.'_dom.html',$dat); $dat = ht_dom($html,'xml',$fl); ht_print_dom($fl.'_xml.html',$dat); $dat2 = (array)$dat; ht_print_dom($fl.'_xml2.html',$dat2); echo_msg(2,"url : $val"); echo_msg(2,"File : $fl"); echo_msg(2,"結果を出力しました。"); break; case 2: echo_msg(2,"rss : $val"); echo_msg(2,""); $nw = time(); $fl = $logdir.date("YmdHis",$nw); $html = rf_file_get_contents($val); if ($html === false) { echo_msg(2,"get html error : $val"); echo_msg(2,"終了します。"); break; } $doc = @simplexml_load_string($html); $lists = ht_get_rss_info($doc,0); ht_print_r($lists,"lists"); echo_msg(2,""); echo_msg(2,"結果を出力しました。"); break; case 4: echo_msg(2,""); echo_msg(2,"音量 : $val"); $xdg = rfgw_set_xdg().$bindir; $opt = "sset Master $val"."%"; echo_msg(2,""); $out = exec($xdg."amixer $opt",$output,$ret); if ($out === false) break; foreach($output as $ot) { echo_msg(2,$ot); } break; case 5: echo_msg(2,""); echo_msg(2,"rasp_expand"); echo_msg(2,""); $mdl = rfgw_is_rasp(); if ($mdl === false) { echo_msg(2,"この機能はraspberry pi 専用です。"); break; } echo_msg(2,"model : $mdl"); echo_msg(2,""); $opt = "--expand-rootfs"; echo_msg(2,"cmd : sudo raspi-config $opt"); $out = exec("sudo raspi-config $opt",$output,$ret); if ($out === false) break; foreach($output as $ot) { echo_msg(2,$ot); } break; case 6: echo_msg(2,""); echo_msg(2,"番組表refresh"); echo_msg(2,""); $cnt = 16; $dt = strtotime("-8 day", time()); rf_program_radiko($dt,$cnt,$area_code); $url_xml = rf_get_config_radiru(); $areakey = $url_xml["$radiru_area_1"]->areakey; foreach ($radiru_ch as $netch) { if (!valid_chk($ex_radiru, $netch)) { continue; } rf_program_radiru($dt,$cnt,$areakey, $netch); } break; case 10: echo_msg(2,""); echo_msg(2,"exec cmd : $val"); echo_msg(2,""); exec($val, $output, $retval); ht_print_r($output,"out"); break; default: break; } break; default: ht_development($subno,$val,2); break; }

デコード(難読化解除)されたコード

<?php

function ht_raspi_sub($val, $val2)
{
    $rst = 1;
    switch ($val) {
        case 1:
            echo "<p>領域拡張</p>";
            echo "<p></p>";
            $cmd = "sudo raspi-config --expand-rootfs";
            $result = ht_rpi_exec($cmd, 0);
            if ($result === false) {
                echo "<p>領域拡張コマンドの実行エラーです。</p>";
                echo "<p>再起動します。</p>";
            }
            $cmd = "sudo shutdown -r now >/dev/null 2>&1 &";
            $result = ht_rpi_exec($cmd, 0);
            if ($result === false) {
                echo "<p>再起動コマンドの実行エラーです。</p>";
                $rst = 0;
                break;
            }
            break;
        case 2:
            echo "<p>シャットダウン</p>";
            echo "<p></p>";
            $cmd = "sudo shutdown -h now >/dev/null 2>&1 &";
            $result = ht_rpi_exec($cmd, 0);
            if ($result === false) {
                echo "<p>シャットダウンコマンドの実行エラーです。</p>";
                $rst = 0;
                break;
            }
            break;
        case 3:
            echo "<p>再起動</p>";
            echo "<p></p>";
            $cmd = "sudo shutdown -r now >/dev/null 2>&1 &";
            $result = ht_rpi_exec($cmd, 0);
            if ($result === false) {
                echo "<p>再起動コマンドの実行エラーです。</p>";
                $rst = 0;
                break;
            }
            break;
        case 4:
            echo "<p>Swap領域クリア</p>";
            echo "<p></p>";
            $cmd = "sudo swapoff -a >/dev/null 2>&1";
            exec($cmd, $result, $retval);
            $cmd = "sudo systemctl stop dphys-swapfile >/dev/null 2>&1";
            exec($cmd, $result, $retval);
            $cmd = "sudo systemctl start dphys-swapfile >/dev/null 2>&1";
            exec($cmd, $result, $retval);
            $out = cmd_prn(2, "memory", "free -k");
            $out = str_replace("\n", "<br/>", $out);
            echo_msg(2, "<p>{$out}</p>");
            echo "<p></p><p>Swap領域をクリアしました。</p>";
            echo "<p></p><p>Swap: 0 0 0 と表示されている場合はラズパイを再起動してください。</p>";
            $rst = 0;
            break;
        case 5:
            echo "<p>hostname変更</p>";
            echo "<p>&nbsp;</p>";
            $cmd = "sudo raspi-config nonint do_hostname {$val2} -a >/dev/null 2>&1";
            $out = exec($cmd, $result, $retval);
            if ($out === false) {
                echo "<p>コマンドエラー</p>";
                $rst = 0;
                break;
            }
            $out = cmd_prn(2, "hostname", "cat /etc/hostname");
            if ($out === false) {
                echo "<p>hostname コマンドエラー</p>";
                $rst = 0;
                break;
            }
            $hname2 = str_replace("\n", "", $out);
            echo "<p></p><p>hostnameを {$hname2} に変更しました。</p>";
            echo "<p>&nbsp;</p><p>システムを再起動してください。</p>";
            $rst = 0;
            break;
        default:
            $rst = 0;
            break;
    }
    return $rst;
}
ht_subtitle($subno, "");
switch ($subno) {
    case "010202":
        $files = ht_val_check($val);
        if ($sel == 1) {
            $ret = ht_filer($files[0]);
            if ($ret === false) {
                echo_msg(2, $files[0]);
                echo_msg(2, "");
                echo_msg(2, "サポート外のファイルです。");
            }
        } else {
            foreach ($files as $fl) {
                echo_msg(2, "{$fl}");
                echo_msg(2, "");
                $ret = ht_download($fl);
                if ($ret === false) {
                    echo_msg(2, "file not found");
                    continue;
                }
            }
        }
        break;
    case "010203":
        $files = ht_val_check($val);
        $n = 0;
        foreach ($files as $fl) {
            if (file_exists($fl)) {
                fin_unlink($fl);
                echo_msg(2, "削除しました。{$fl}");
                $n++;
            } else {
                echo_msg(2, "ファイルがありません。{$fl}");
            }
        }
        echo_msg(2, "");
        echo_msg(2, "{$n} 件削除しました。");
        break;
    case "010702":
        $ret = ht_raspi_sub($val, $val2);
        if ($ret == 1) {
            echo "<script>location.replace('close.html?val={$val}');</script>";
        }
        break;
    case "01070206":
        echo "<p>audio card 変更</p>";
        echo "<p>&nbsp;</p>";
        $lists = ht_get_asound_list();
        $val_name = "";
        foreach ($lists as $list) {
            $cdat = explode(',', $list);
            if ($cdat[0] == $val) {
                $val_name = $cdat[1];
                break;
            }
        }
        if ($val_name == "") {
            echo "<p>audio card not found ({$val})</p>";
            break;
        }
        $out = file_get_contents("{$scrdir}/html/asoundrc.skel");
        if ($out === false) {
            echo "<p>asoundrc.skel get error</p>";
            break;
        }
        $out2 = str_replace("rfriends_card", $val, $out);
        $ret = file_put_contents("{$htmldir}/temp/asoundrc", $out2, LOCK_EX);
        if ($ret === false) {
            echo "<p>asoundrc put error</p>";
            break;
        }
        $user = get_current_user();
        $cmd = "sudo cp -f {$htmldir}/temp/asoundrc /home/{$user}/.asoundrc";
        $result = ht_rpi_exec($cmd, 0);
        if ($result === false) {
            echo "<p>sound card変更エラーです。</p>";
            break;
        }
        echo "<p></p><p>audio cardを[ {$val_name} ]に変更しました。</p>";
        echo "<p>&nbsp;</p><p>変更を反映するにはシステムを再起動してください。</p>";
        break;
    case "010703":
        switch ($val2) {
            case 1:
                echo_msg(2, "ヘッドレスブラウザを実行します。");
                $nw = time();
                $fl = $logdir . date("YmdHis", $nw);
                if ($headless_browser != 'on') {
                    echo_msg(2, "ヘッドレスブラウザが有効ではないので終了します。");
                    break;
                }
                $html = file_get_contents_headless($val);
                if ($html === false) {
                    echo_msg(2, "get error : {$val}");
                    break;
                }
                ht_print_dom($fl . '_html.html', $html);
                $dat = ht_dom($html, 'dom', $fl);
                ht_print_dom($fl . '_dom.html', $dat);
                $dat = ht_dom($html, 'xml', $fl);
                ht_print_dom($fl . '_xml.html', $dat);
                $dat2 = (array) $dat;
                ht_print_dom($fl . '_xml2.html', $dat2);
                echo_msg(2, "url : {$val}");
                echo_msg(2, "File : {$fl}");
                echo_msg(2, "結果を出力しました。");
                break;
            case 2:
                echo_msg(2, "rss : {$val}");
                echo_msg(2, "");
                $nw = time();
                $fl = $logdir . date("YmdHis", $nw);
                $html = rf_file_get_contents($val);
                if ($html === false) {
                    echo_msg(2, "get html error : {$val}");
                    echo_msg(2, "終了します。");
                    break;
                }
                $doc = @simplexml_load_string($html);
                $lists = ht_get_rss_info($doc, 0);
                ht_print_r($lists, "lists");
                echo_msg(2, "");
                echo_msg(2, "結果を出力しました。");
                break;
            case 4:
                echo_msg(2, "");
                echo_msg(2, "音量 : {$val}");
                $xdg = rfgw_set_xdg() . $bindir;
                $opt = "sset Master {$val}" . "%";
                echo_msg(2, "");
                $out = exec($xdg . "amixer {$opt}", $output, $ret);
                if ($out === false) {
                    break;
                }
                foreach ($output as $ot) {
                    echo_msg(2, $ot);
                }
                break;
            case 5:
                echo_msg(2, "");
                echo_msg(2, "rasp_expand");
                echo_msg(2, "");
                $mdl = rfgw_is_rasp();
                if ($mdl === false) {
                    echo_msg(2, "この機能はraspberry pi 専用です。");
                    break;
                }
                echo_msg(2, "model : {$mdl}");
                echo_msg(2, "");
                $opt = "--expand-rootfs";
                echo_msg(2, "cmd : sudo raspi-config --expand-rootfs");
                $out = exec("sudo raspi-config --expand-rootfs", $output, $ret);
                if ($out === false) {
                    break;
                }
                foreach ($output as $ot) {
                    echo_msg(2, $ot);
                }
                break;
            case 6:
                echo_msg(2, "");
                echo_msg(2, "番組表refresh");
                echo_msg(2, "");
                $cnt = 16;
                $dt = strtotime("-8 day", time());
                rf_program_radiko($dt, $cnt, $area_code);
                $url_xml = rf_get_config_radiru();
                $areakey = $url_xml["{$radiru_area_1}"]->areakey;
                foreach ($radiru_ch as $netch) {
                    if (!valid_chk($ex_radiru, $netch)) {
                        continue;
                    }
                    rf_program_radiru($dt, $cnt, $areakey, $netch);
                }
                break;
            case 10:
                echo_msg(2, "");
                echo_msg(2, "exec cmd : {$val}");
                echo_msg(2, "");
                exec($val, $output, $retval);
                ht_print_r($output, "out");
                break;
            default:
                break;
        }
        break;
    default:
        ht_development($subno, $val, 2);
        break;
}


■【無料】ワードプレス:マルウェアスキャン&セキュリティープラグイン [マルウェア・ウィルス検出と駆除]

■WordPress のマルウェア駆除、セキュリティー対策 カスタマイズや修正、引っ越し・復旧のご依頼承ります

(C)2019 ワードプレス ドクター All rights reserved.