PHPでbase64デコードしたソースを表示する方法とは?

このQ&Aのポイント
  • base64でエンコードされたPHPソースをデコードして表示する方法をご紹介します。
  • ブラウザに表示される文字化けした内容を元のソースに戻す方法を解説します。
  • base64デコードしたソースを元の状態で表示させるスクリプトをダウンロードできます。
回答を見る
  • ベストアンサー

base64_decodeに関して

base64でエンコードされたPHPソースをデコードし、 その内容を表示させるスクリプト(base64.php)を 実行すると、ブラウザには decode.txt の様に 文字化けした内容が表示されます。 元のソースを表示させる方法は無いでしょうか? base64.php、decode.txt は以下よりダウンロードし、 検討して下さい。 ================================================================ http://www.hp-toolbox.com/base64_decode.zip ================================================================ 宜しくお願い致します。

  • PHP
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

デコード結果を送ること自体には別に気にすることはありませんが、 ひとつ問題があります。 ここの利用規約に、質問者もしくは回答者個人を特定することのできる 情報を書いてはいけないというのがあったと記憶しています。 つまり、質問者さんがここへ送ってくれとか書いたとしても、削除対象になってしまう 可能性が大いにあるってことです。 で、デコードするPerlスクリプトについて補足すると、あれはコマンドラインに 直接書いて実行した一行野郎なので、そのままスクリプトに落とし込んでもだめです。 スクリプトにするならこんな感じ #!/usr/bin/perl use strict; use MIME::Base64; use Encode qw(encode); use Fatal qw(open); open my $fh, '>', 'decoded.php'; while (<>) { $_ = decode_base64($_); tr[123456aouie][aouie123456]; s/&#([0-9]+);/chr $1/ge; $_ = encode('shiftjis', $_); tr/\r//d"; print $fh $_; } これをdecode.pl というファイルにでもして perl decode.pl admin.php として実行すれば、実行したディレクトリに decoded.php というファイルに 変換結果を出力します。 Perlのバージョンが5.8以上でないと動作しませんのでその辺ご注意を。 もしこれでもだめならそのとき考えましょう。

das_horn
質問者

お礼

丁寧にご回答ありがとうございます。 早速 Vector から perl をダウンロードして 実行してみましたが、バージョンが低い(5.003_07)せいか、 以下のようなエラーコマンドが出て実行できませんでした。 ================================================================ Can't locate MIME/Base64.pm in @INC at decode.pl line 3. BEGIN failed--compilation aborted at decode.pl line 3. ================================================================ そこで、申し訳ないですが、やはりデコードしたものを 送って頂けないでしょうか? 私は HP-TOOLBOX というサイトを運営しておりまして、 このスクリプトは相互リンク集に使用しているものの一部です。 ホームページアドレスは以下の通りです。 http://www.hp-toolbox.com/ そこのお問い合わせフォームより、添付ファイルにて お送り頂ければ幸いです。 (添付ファイルが送信できるメールフォームを設置しております。) 念のため、以下がデコードしたいスクリプトです。 ================================================================ http://www.hp-toolbox.com/admin.zip ================================================================ 以上、お手数をお掛けし申し訳ありませんが、 宜しくお願い致します。

das_horn
質問者

補足

ActivePerl 5.8.8 Build 822 をインストールし、 無事にデコードすることが出来ました。 この度は本当にありがとうございました。 感謝いたします。

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

いや、だから eval の中身で何しているのかよく読んでくださいということです。 その、source.php として得られたテキストにもう一段操作を加えているはずです。 perl で片付けるとこう。 #おまけで数値表現のデコードとsjisへの変換、余計なコードの除去もしましたが >perl -MMIME::Base64 -MEncode -pe "$_=decode_base64($_); tr[123456aouie][aouie123456]; s/&#([0-9]+);/chr $1/ge; $_=Encode::encode('shiftjis', $_); tr/\r//d" admin.php >decoded.php 結果の頭のところ。 ?><?php ///////////////////////////////////////////////////////////////////////////////////////////// /// /// リンクフィフティープラス /// /// 名前:WebTrigger /// 作成:2006/07/13 /// Version 1.0.2 /// 文字コード:Shift-JIS /// 修正: ///////////////////////////////////////////////////////////////////////////////////////////// # エラー非表示 error_reporting(0); # Include Files require_once('setup.php'); # Const define(Category, 'category.dat'); define(Data , 'data.dat'); なんか90日無償とかあやしいコメントがあるんですけど、 リバースエンジニアリング(笑)しちゃっていいんですか?

das_horn
質問者

お礼

ご回答ありがとうございます。 凄いですねっ!尊敬しちゃいます。 eval の中身って言われても、イマイチ分かってないです。 申し訳ありません。 記載していただきました perl で以下のように記述し、 実行してみましたがエラーになりました。 ================================================================ #!/usr/bin/perl > perl -MMIME::Base64 -MEncode -pe "$_=decode_base64($_); tr[123456aouie][aouie123456]; s/&#([0-9]+);/chr $1/ge; $_=Encode::encode('shiftjis', $_); tr/\r//d" admin.php > decoded.php ================================================================ ド素人で申し訳ありません。 ちなみに、このスクリプトは、お金を払って購入しています。 作成者にバグの修正を依頼したところ、 多忙につき対応不可ということだったので、なんとか自分で 修正しようともがいています。 可能ならデコードしたソースを送って頂けると非常に有り難いです。 (自分でしろって?笑)

das_horn
質問者

補足

もしデコードしたソースを送って下さるなら、 以下のものをデコードして下さい。 ================================================================ http://www.hp-toolbox.com/admin.zip ================================================================ 宜しくお願い致します。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

暗号化されたソースをデコードできませんか? -OKWave http://okwave.jp/qa3600462.html にで得られたスクリプトをよく読んでみてください。 base64_decodeした文字列を変数にセットした後に もう一回別の文字列に対してbase64_decodeしているでしょう(でその結果をevalしてます)? そっちのデコード結果を読めば、何をすべきかわかりますよ。 頭のところだけ見るとこんな感じ ?><?php ///////////////////////////////////////////////////////////////////////////////////////////// /// /// リンクフィフティープラス /// /// 名前:WebTrigger /// 作成:2006/07/13 /// Version 1.0.2 /// 文字コード:Shift-JIS /// 修正: ///////////////////////////////////////////////////////////////////////////////////////////// # エラー非表示 error_reporting(0); # Include Files require_once('setup.php');

das_horn
質問者

お礼

ご回答ありがとうございます。 http://okwave.jp/qa3600462.html にて得られたスクリプトは以下になります。 ================================================================ http://www.hp-toolbox.com/source.zip ================================================================ 元々デコードしたいスクリプトは以下になります。 ================================================================ http://www.hp-toolbox.com/admin.zip ================================================================ eval もしてるかもしれません。 やはり元のソースコードに復号するのは無理でしょうか?

関連するQ&A

  • 暗号化されたソースをデコードできませんか?

    暗号化されたPHPスクリプトのソースを デコードしたいのですが無理でしょうか? ソースを以下URLよりダウンロードして検証ください。 ================================================================ http://www.hp-toolbox.com/admin.zip ================================================================ 宜しくお願い致します。

    • 締切済み
    • PHP
  • base64?デコード?

    「テキストファイルを送るからデコードして使って」と言われ、 下記のような内容のファイルをもらったのですが、デコードとはどうすればいいのでしょうか? ・1つ目のテキストファイル "begin-base64 664 ○○(ファイル名).zip&#xA;fsjiiafaBABAEakhajkiij~(以降ランダムな文字列)" info="base64&gt;&gt;zip" ・2つ目のテキストファイル "FkufaskKKSDOkaklaaeiijjn~(以降ランダムな文字列)=" info="○○(ファイル名)&#xA;base64-&gt;rar" ネットで調べて、「このテキストファイルをバイナリソフトでデコードすれば目的のファイルになる」 ということはわかったんですが、 テキストの中のどこからどこまでをコピーすればいいのかわかりません。 ランダムな文字列の部分だけの新しいテキストファイルをつくってデコードをしたんですがエラーが出ました。 エンコードしたソフトでデコードすればいいのでしょうか? よろしくお願いいたします。

  • BASP21によるbase64のデコードについて

    base64でエンコードされた画像ファイルを表示したいと思っています。 basp21でデコードして、BinaryWriteで書き出したんですがうまく表示できません。 CAPICOMを使った場合は正しく表示されます。 basp21でデコードする際になにか処理をはさむ必要があるのでしょうか? 以下作成したサンプルソースです。 ---ソース------------------------------------------ <%@ Language="VBScript" %> <% Set Stream = Server.CreateObject("ADODB.Stream") Set CAPIUtil = Server.CreateObject( "CAPICOM.Utilities" ) Set objBasp = Server.CreateObject("basp21") strEncoded = "/9j/kL・・base64でエンコードされたJpegファイル" strDecoded = CAPIUtil.Base64Decode( strEncoded ) strDecoded2 = objBasp.Base64(strEncoded, 1) Response.ContentType = "image/jpeg" ' Response.BinaryWrite strDecoded ' Response.BinaryWrite strDecoded2 %> ---------------------------------------------ここまで----- 以上よろしくお願いいたします。

  • base64encodeでの文字化けについて

    先日、PHPとjavascriptのエンコードについて質問をしました。 http://okwave.jp/qa/q8512040.html その後いろいろと試してみたところ、javascript上で 日本語の文字列に対してbase64_encodeをして、 base64_decodeをすると文字化けが起こりました。 ソースは以下の通りです。 <html> <head> <title>サンプル</title> <script type="text/JavaScript" src="base64.js"></script> </head> <body> <script type="text/javascript"> <!-- str="abcde12345あいうえお"; encode_str=base64encode(str); decode_str=base64decode(encode_str); document.write("元の文字列:"+str+"<br>変換後の文字列:"+decode_str); // --> </script> </body> </html> base64.jsは以下のサイトのものを使用しています。 http://www.onicos.com/staff/iz/amuse/javascript/expert/ 結果は以下の通りです。 元の文字列:abcde12345あいうえお 変換後の文字列:abcde12345BDFHJ 文字コードはUTF-8を使用しているのですが、他の文字コードで 試してみても文字化けします。 原因や対処方法がおわかりの方がいらっしゃれば、教えて下さい。 よろしくお願いします。

  • MacブラウザのSafariで文字化けします。

    あるサイトからフリーのPHPスクリプトをダウンロードして サーバーにアップロードしたのですが、 Mac標準のブラウザSafariで閲覧すると文字化けしてしまいます。 http://www.hp-toolbox.com/sample.html Windows版のIE、Firefox、Netscapeではいずれも正常に表示されます。 http://www.hp-toolbox.com/blink.php 当該スクリプトは以下よりダウンロードできます。 http://www.hp-toolbox.com/WebTrigger.lzh 文字化けを回避できないでしょうか?教えて下さい。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • base64 デコード方法

    base64を使ってデコード(txtからrarへ)しているのですが、rarファイルの作成まではいくのですが解凍(ダブルクリック)すると、未知の形式か~壊れています。とエラーメッセージがでます。 改行コードを無改行にしたら、エラーメッセージは出なくなりましたが、解凍ができません。右クリックから"中身を表示する"で展開したのですが、どうも 納得できません。正しい設定方法を教えて下さい。よろしくお願い致します。

  • Perl utf8上でshiftjisをデコード

    以下の環境にてURLエンコード(shiftjis)された文字を、UTF8として ブラウザに表示させたいのですが、上手く表示されません。 環境: サーバ:linux apache レンタルサーバ ※Encode.pm、Jcode.pm無し。追加モジュールインストール不可。 Perl version: 5.006001 ソースエンコード:utf-8 実行ソース: ------------------------------------ use utf8; require 'jacode.pl'; # $mojiに予めURLエンコードされた文字が格納されています。 # 例として「マウス」デコード前(%83%7D%83E%83X)とします。 #URLデコード $moji =~ s/%(..)/pack("c",hex($1))/ge;  #デコードされたsjis文字をUTF8へコンバート jcode::convert(\$moji, "utf8","sjis"); print ($moji); ----------------------------------- 例のように「マウス」と言う文字が$mojiに格納されている場合、 以下のような文字化けとなってしまいます。 ツマ燿セツス 正常にマウスと表示させるにはどうすればよろしいのでしょうか。 アドバイスを宜しくお願いします。

    • ベストアンサー
    • Perl
  • サーバーでのデコード方法(例えばbase64)

    質問内容 サーバーでのPHPスクリプトではアップロードされたファイルのデコードを行うにはContent-Transfer-Encoding: base64をみて 適切にデコード処理をするのだと考えますがContent-Transfer-Encoding: base64を取得する方法はどのようにすればいいか わからなくて困っています。 $_FILES,getallheaders(),file_get_contents('php://input')等を試しましたが必要な情報は得られませんでした。 知りたい内容は 1.ポストされたアップロードファイルのデコードはどのような判定方法になるか。 2.私は先にも記述しましたがContent-Transfer-Encoding: base64行を判定の基準とするものとと考えています、でもその内容の取得方法がわかりません。 3.および、これらの関連として生のデータ取得についても教えていただければ幸いです。($_POSTや$_FILESに加工される前の情報) 環境: SERVER_SOFTWARE : Apache/2.2.11 (Win32) mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.8 下記はHTTPプロトコルでサーバーに送られたデータストリームです。 (info1とinfo2は質問内容には直接関係はありません) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ POST /test/xxxx.php HTTP/1.0 Host: 192.168.xxx.uuu User-Agent: wxWidgets 2.x Content-Length: nnn Content-type: multipart/form-data; boundary=_--Boundary_separator --_--Boundary_separator Content-Disposition: form-data; name="info1" AAAAAAAAAAAAAAA --_--Boundary_separator Content-Disposition: form-data; name="info2" BBBBBBBBBBBBBBB --_--Boundary_separator Content-Disposition: form-data; name="file"; filename="anyfile.jpg" Content-Type: multipart/form-data Content-Transfer-Encoding: base64 base64でencodeされたデータ内容の羅列 --_--Boundary_separator-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 以上 よろしくお願いします。

    • ベストアンサー
    • PHP
  • JavaでBase64をエンコード・デコード(長めです)

    初めまして。今,Javaの勉強をしています。 Base64のエンコード・デコードを行うプログラムをコマンドプロンプトでコンパイルまでは成功するのですが,いざ実行してみると >java Base64 Exception in thread "main" java.lang.NoClassDefFoundError: Base64 (wrong name: d escriber/Base64) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) というエラーがでます。 プログラムは下記のサイトを参考にさせていただきました。 http://www.ki.rim.or.jp/~kuro/Java/Etc/Etc-03-SunMisc.html クラス名とファイル名は同じはずなのですが…。 実行方法が悪いのかどうなのかわかりませんが,よろしければ指摘お願いします 。 わかりにくい文章ですみません。。

    • ベストアンサー
    • Java
  • メールのサブジェクトのデコードを行いたいのですが・・

    VBで、メールのログをDBに保存するためにBASE64のデコードを行うファンクションを作ろうと思っています。 下記のサイトを参考にして作ってみたのですが、 どうも全角ひらがなのサブジェクトが元通りになりません。 メールのエンコード方式など詳しくないので、なにか勘違いをしてるのでしょうか? JIS-SJIS変換はBVで実装しており、BASE64のデコードはOracleで用意されているようなのでそれを使おうと思って試してみたのですが・・ よろしくお願いします。 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_pl12.htm