MT(movable type)のパスワード強制上書き

2016/05/16

MT(movable type)のログインパスワードが分からない。

調べると色々と方法があるけど、どれもバージョンの問題だったり、他の問題でよくわからない。

DBにアクセスできるんだからパスワードを強制上書きしちゃえってコトで調べてみた。

パスワードの保存場所

DBの「テーブル:mt_author」がアカウント情報っぽい。
その中にある「カラム:author_password」がログインパスワードっぽい。

問題はログインパスワードが暗号化された状態で格納されている。
「{SHA}○○○○○○」って感じ。

あとは適当なパスワードを暗号化して、上書きすればOKなはず。

パスワードの暗号化

色々調べると・・・MTの「lib/MT/Author.pm」の「set_password」っていう関数(?)が文字を暗号化してるらしい。

あとはココの部分を抜き出して実行ファイルを用意すればOKだそうだ。
他のサイトのヤツと私のMTではバージョンが違うらしいので、作り変える。

#!/usr/bin/perl -w

use strict;
use lib qw ( lib extlib );
use MT::Util;

my $pass = $ARGV[0];
my @alpha = ( ‘a’ .. ‘z’, ‘A’ .. ‘Z’, 0 .. 9 );
my $salt = join ”, map $alpha[ rand @alpha ], 1 .. 16;
my $crypt_sha;

if ( eval { require Digest::SHA } ) {
    # Can use SHA512
    $crypt_sha
        = ‘$6$’
        . $salt . ‘$’
        . Digest::SHA::sha512_base64( $salt . $pass );
}
else {
    # Use SHA-1 algorism
    $crypt_sha
        = ‘{SHA}’
        . $salt . ‘$’
        . MT::Util::perl_sha1_digest_hex( $salt . $pass );
}
print $crypt_sha;

※「use lib qw ( lib extlib );」はMTの「lib」と「extlib」のPATHにする。

実行

実行方法はCMDから、上記を実行。

  • 上記スクリプトのファイル名を「mtpwd.pl」とする。
  • パスワードは「zebra」とする。

▼CMDで叩くコマンド

> mtpwd.pl zebra

※「cd ○○○」は省略(カレントディレクトリがmtpwd.plのあるトコならOK。)

これで暗号化された「パスワード:zebra」が出力されるはず。

あとは、出力された暗号化のパスワードで対象のアカウントの「mt_author.author_password」を書き換える。

注意

すべて自己責任で何かあってイヤなら別の手段を考えたほうがいい。

新着(ニュース関連以外)

2017-06-27
MACにWin10をインストールしてみた:再挑戦。
2017-06-25
「簡単」っていうヤツらが多いけど・・・難しいぞ。
2017-06-06
FuelPHPのOILでtry・catchを使ったらエラーになった。
2017-04-11
動画をライトボックス風に表示したい・・・ライトボックス風って何? とりあえずbootstrapで対応したい。
2017-04-05
GitHubとかでzipをダウンロードすると・・・srcとdistと中身が似たようなのがよくあるので調べてみた。