Tag Archives: PROGRAM - Page 3

Java で Hello Word を表示させてみる

Perlが一応落ち着いたのでJavaに手を出すことにした。そこでPerlと同じ様に基礎周辺をブログに書き残しておく。コンパイラはパソコンにインストールされている事を前提にメモを書く。

まず、Javaのコンパイルは直接マシン語に訳すのではなく、Javaバイトコード(.class)と呼ばれるものを作成する。通常の言語とは異なりJava VMで実行させる独自の言語となっている。

ファイル作成についてもCやPerl等と大きく異なりプログラム中に宣言するクラスと同じ名前でなければならない。よって下のソースをコンパイルするには”public class Hello_Word”で宣言していることからファイル名を”Hello_Word.java”とする必要がある。なお、”public”とはクラスやメソッドを外部から呼び出せるかどうかを指定している。

実際にコンパイルするにはjavacというコマンドを使用し”javac [ファイル名].java”として実行するとコンパイルすることが可能である。下記の例では次のようにコンパイルする。

# javac Hello_Word.java

上記で記述したようにjavaはコンパイル後マシン語で直接実行ファイルを作成するのではないので、Java VMを呼び出しクラスファイルを指定させた上で実行する必要がある。よって次の様に実行する。

# java Hello_Word

この時、拡張子”.class”は省略する。 (つけて実行するとエラーとなる。)

1
2
3
4
5
public class Hello_Word {
   public static void main(String args[]) {
       System.out.println("Hello Word");
   }
}

Visitors 0.7日本語化 色々修正版

ソフトの窓様がVisitorsの日本語化をされていらっしゃいましたので、ファイルを元にその日本語化をもっと徹底的に行ないました。

修正内容
・残りの英語表記であった部分を日本語化しました。
・解析結果を表示するページが左寄でしたので中央寄せに修正しました。

visitors-0.7-JPORSP.tar.gz

使い方はソフトの窓様を参考にお願いします。

Perl 正規表現 半角文字全てにマッチ

意外にもあまり紹介されていないのでメモしておきたいと思う。
EUC-JPの文字コード表では次の通りに並んでる。

!”#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~

よって/[!-~]/iこれで全ての半角英数文字をマッチすることが可能である。

ORSP ブラクラ判定 リファラ隠蔽 公式サービス提供開始

http://jump.orsx.net/
リファラの隠蔽により掲示板等の設置場所をアクセス先の管理人に悟られなくする機能に加えブラウザクラッシャーや不快動画・画像、ウイルス、グロ画像、パス抜きサイト等のURLが含まれていた場合過去の経歴より判別し即座に警告表示を出す機能を追加しました。また今回、利用者自信も自分で危険なURLを登録することが可能です。よって自分でオリジナルの環境をカスタムすることが可能となっております。

利用例)
https://www.orsx.net/ へリンクしたい場合は下記の②通りの書き方が可能です
http://jump.orsx.net/www.orsx.net/blog/
http://jump.orsx.net/https://www.orsx.net/

このサービスはRental Orbit Spaceの公式サービスとして認定されております。

2ch ジャンプ確認 再現 ime.nu

全く同じ働きをするCGIを書いてみました。
※私の妄想にしか過ぎないので間違ってる可能性もあります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/perl
#===================================
#スクリプト名:ジャンプCGI
#作者:ORBIT
#===================================
 
# URLの後ろパスがついているかチェック
if ($ENV{'PATH_INFO'} eq ""){&error;}
 
# パスにhttp:/が含まれている場合削除
$ENV{'PATH_INFO'} =~ s/http:///;
 
# URLの作成
$PATH = "http:/$ENV{'PATH_INFO'}";
 
# 出力
print "Content-type: text/htmlnn";
print <<EOT
<html><head>
<title>jump</title></head>
<body>
以下のURLに飛びますよろしいですか?<br>
<a href="$PATH">$PATH</a>
</body></html>
EOT
;
 
# パスが見つからなかった場合は下記を出力
sub error {
print "Content-type: text/htmlnn";
print <<EOT
<html><head>
<title>jump</title></head>
<body>
test
</body></html>
EOT
;
exit;
}

これをエラーページにしてるのかリダイレクトしてるのか多分そんなところかと思います。

CentOS 5.4 Python CGI対応

自分は使うことは無いので触る予定はありませんでしたが利用者が使いたい方もおられるでしょうので一応対応させました。
これはその際のメモです。

# yum install *python*
# ln -s /usr/bin/python /usr/local/bin/python

これで対応します。

Python CGIプログラミング入門
ここの例文を利用させていただいたところ無事動作を確認できました^^

Apache1/2のDos攻撃に対する脆弱性

先日からの不正アクセスからの状況から色々セキュリティー関連を調べていたら
恐ろしい物を見つけました。

Slowloris HTTP DoS
WS000031

一般的にサーバをダウンさせるには大量のマシンから大量のリクエストを送信する必要がありますが、今回紹介したツールはApacheのセキュリティーホールを突き、少数のマシンから少数のリクエストでサーバをダウンさせてしまいます。

非常に危険で恐ろしいツールですね。
当サーバでも対策を急がないといけないです(汗

cpanでIO::Socket::SSLがインストールできない場合は下記が入ってない可能性がありますので追加します。
# apt-get install openssl libssl-dev

ポートスキャンプログラムの構造解説と作成 Perl

原本に一部間違いや遠回りをしていると思われる点がありましたので修正してあります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/perl
#-------------------------------------------------#
# Name: Port Scan Program
# 原作: Perl scan port
# 解説: ORBIT SPACE
# 目的: ポートスキャンプログラムの構造の
#       理解とモジュール利用方法等の理解
#       を行う為に今回構造の解説とプログ
#       ラムの変更を行いました。
#-------------------------------------------------#
 
#モジュール使用宣言
use IO::Socket;
 
# Very Simple Scan Port Write in Perl
 
# MAIN PROG
 
print "Perl Scan Port V1.0nn";
 
# User Var
 
# perl port.pl 127.0.0.1のように入力されたIPアドレスを取得
my $iptarget $ARGV[0];
unless($ARGV[0]){die "MISSING IP ADRESSnn";}
 
print "Interesting ports on $iptargetnn";
 
print "PORT // STATE // SERVICEn";
 
# Scanning fonction
# ポート番号をインクリメントして作成する。
for(my $iport = 0; $iport != 65537; $iport++){
# 指定されたIPアドレスのポートへ接続
if (my $remote = IO::Socket::INET->new(
    Proto => "tcp",
    PeerAddr => $iptarget,
    PeerPort => $iport,
    Timeout => "5")){
 
    # サービス内容(http,ftp,ssh等)の表示し格変数へ格納
    (my $name, my $aliases, my $port_number, my $protocol_name) =+
    getservbyport($iport , "tcp");
 
    # サービス名が不明な場合NAを格納
    unless($name){$name = "NA";}
    # 出力
    print "$iport     open      $namen";
    # 切断
    close($remote);
    }
}
 
print "Scan Finishn";

容量の大きいファイル検索スクリプト Bash

このごろ鯖をファイル置き場として利用する方々の為にせっせと毎回コマンド叩くのが
面倒なのでスクリプトを作成しました。
珍しくBash(SH)で書きました^^
やっぱ慣れていないのでPerlのようにすらすら書けないですね~
効率悪すぎ!!とか言わないで~(汗

#!/bin/sh
# 初期設定(メール送信宛先、件名、コマンド)
address=”メール送信宛先@”
subject=”容量の大きいファイル”

exe=”find /home -name “*.exe” -size +100000k”
iso=”find /home -name “*.iso” -size +100000k”
cso=”find /home -name “*.cso” -size +100000k”
zip=”find /home -name “*.zip” -size +100000k”
rar=”find /home -name “*.rar” -size +100000k”
cab=”find /home -name “*.cab” -size +100000k”
lzh=”find /home -name “*.lzh” -size +100000k”
avi=”find /home -name “*.avi” -size +100000k”
wmv=”find /home -name “*.wmv” -size +100000k”
wma=”find /home -name “*.wma” -size +100000k”

df=”df”;

# 件名の文字コードをJISに変換
subject=`echo $subject | nkf -j`
# メール送信(コマンド結果はSJISに変換)
mail -s “$subject” $address << HONBUN ====================[ exe ]==================== `$exe | nkf -s` ====================[ iso ]==================== `$iso | nkf -s` ====================[ cso ]==================== `$cso | nkf -s` ====================[ zip ]==================== `$zip | nkf -s` ====================[ rar ]==================== `$rar | nkf -s` ====================[ cab ]==================== `$cab | nkf -s` ====================[ lzh ]==================== `$lzh | nkf -s` ====================[ avi ]==================== `$avi | nkf -s` ====================[ wmv ]==================== `$wmv | nkf -s` ====================[ wma ]==================== `$wma | nkf -s` =============================================== HONBUN # 終了 exit [/bash]

ROS カウンター Ver.1.03

どうしてもカウンターがリセットされる現象を回避できなくて頭を悩ましていました^^;
どうもflock関数(ファイルロック)が理解できていなかったと言うのが結論。
にしても酷いな・・・・勉強の大切さを理解しました。

カウンターでこのざまなら掲示板はどうなるんだ?
最初から作り直したほうが早いかもな・・・・・インストーラも効率悪かったし^^;

すばらしく分かりやすく解説していただいたサイト
CGIやDBのロックと同時実行制御

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/perl
#######################################################
#スクリプト名:ROS カウンター Ver.1.03
#作者:ORBIT
#著作権:ORBIT SPACEに帰属します。
#著作権表示は一切行いません。自由にお使いください。
#######################################################
 
#各種設定
#------------------------------------------------------
#イメージの保存ディレクトリ
$imgs = './img/';
#ログの保存場所
$ip_log = 'ip.log';
$counts_log = 'counts.log';
#------------------------------------------------------
 
#IPを取得
$ip = $ENV{'REMOTE_ADDR'};
 
#GETのデータから位を取得
$buf = $ENV{'QUERY_STRING'};
--$buf;
 
#過去ログの取得
open (IN_OUT,"+<$counts_log");
flock IN_OUT, 2;
$counts_data = <in_OUT>;
 
open (IP_IN_OUT,"+<$ip_log");
flock(IP_IN_OUT, 1);
@ip_data = <ip_IN_OUT>;
chomp($ip_data[0]);
if($ip eq $ip_data[0]){&img;}
$ip_data[0] = "$ip_data[0]n";
 
#インクリメントして保存
if($counts_data eq ""){$counts_data = "00000000"};
++$counts_data;
seek IN_OUT, 0, 0;
print IN_OUT $counts_data;
close(IN_OUT);
 
#IPを記録
unshift @ip_data, "$ipn";
seek IP_IN_OUT, 0, 0;
print IP_IN_OUT @ip_data;
close(IP_IN_OUT);
 
&img;
 
# 画像表示
sub img{
#過去ログを取得し逆順に並べ替える
@list = split(//,$counts_data);
@img_list = reverse (@list);
$nu = $img_list[$buf];
 
open(IG,"$imgs$nu.gif");
print "Content-type: image/gifnn";
binmode(IG);
binmode(STDOUT);
print <ig>;
close(IG);
exit;
}