過去のエントリーで「ハッキングの仕方」なんて思い切った記事があり、
読んでみると
4-1. telnet辺りが開いていればパスワードツール(perlでも作成可)を使って侵入。
なんて書いてある。

自分が書いた記事でなんなのだが、
果たして本当にperlでパスワードツールは作ることができるのか考えてみた。


そもそもパスワードツールとはなんなのか?
これは僕特有のバズワードで、ここではID及びパスワードを自動で次々に入力するアプリケーション又はプログラムのことを言っています。

さっそく「perl」「telnet」でググってみる。(当のgoogleはこういった使われ方を嫌がっているようです。)
すると、perlでtelnetを制御するには「Net::Telnetモジュール」が必要なことがわかった。
ということで、まずは「Net::Telnet」を以下より入手しインストール。
http://search.cpan.org/CPAN/authors/id/J/JR/JROGERS/Net-Telnet-3.03.tar.gz

さて、ここからプログラミングです。
以下に「Net::Telnet」を使ったプログラム例が紹介されています。
TELNETによるコマンド実行 - MASのページ
# お手軽な方法

use strict;
use Net::Telnet;

# 接続情報(環境に合わせて修正する)
my $host = 'hostname';	# 接続ホスト名 or IPアドレス
my $user = 'username';	# ユーザ名
my $pass = 'password';	# パスワード
my $prompt = '/\[.+\]\$ $/';	# プロンプト(正規表現)

my $telnet = new Net::Telnet(
	Timeout => 10,
	Prompt => $prompt,
);

# ホストに接続してログインする
$telnet->open($host);
$telnet->login($user, $pass);

# コマンドの実行
my @result;
@result = $telnet->cmd("pwd");
print @result;

# コマンドの実行
@result = $telnet->cmd("ls -l");
print @result;

# 接続の切断
$telnet->close;

最初に気になったのが
use strict;
って部分。
ここに関しては以下のサイトに詳しく乗ってます。
iandeth. - Perl/CGI辞典 - 土井 毅さん 著 - にて use strict が推奨されていない件について

注目すべきは「ホストに接続してログインする」の
$telnet->login($user, $pass);
ここをfor文やforeach文でループさせて、$pass++やら正規表現やらを使い、
ID及びパスワードを無作為入力させるスクリプトは理論上つくれるハズ。
あとは、それぞれのアルゴリズムをいかに解析していくか。
ま、この部分が一番難しくて奥が深いところなのでしょう。

実際は、サーバーのほうで連続してIDやパスワードを入力できない設定になっていたりするでしょうから、
ほぼ成功する可能性はゼロに近いと思います。
逆に言うとそういう設定にしておけば安全だと言うことです。

いずれにせよ、あまり詳しく調べたり実験したりするとあれなので、
もう、この件に関しては終わりにしたいと思います。