Index

鏡(ROMチェック)
このタグは,CGIを利用します。CGIが動く環境をお持ちでない場合は,ご利用になれません。
以下のタグは,環境に合わせてサーバ名やアカウント名を読み替えてください。
<img src="http://www.hostname.ne.jp/~yourname/ws.cgi?xxx">
上記のタグを書き込むと時計の絵が出ます。そうすると,その絵を読み込んだ人の情報が,上記の例の場合, http://www.hostname.ne.jp/~yourname/wspy.htmlに表示されます。

正義の手鏡 スクリプト(タグではありません)
下記のプログラムの他に,情報格納用の"wspy.html"という,空のファイルが必要です。 このプログラムがいかなる不都合を生じても私は一切の責任を負いません。
#! /bin/perl
#↑あなたのサーバの設定に合わせて書き換えて下さい。
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  正義の手鏡 ---Web Spy Mini
#
#  綾瀬 慶助
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
use GD;
#↑GD.pmが使用できるサーバ以外は,改造が必要です。
#
######まずはこのCGIを設置する時にカスタマイズしてくれぇ。
$log_file = './wspy.html';#公開用。ファイル名は適当に変えておいた方がいいかも。
$jtitle = '正義の鏡';#このプログラムの和名
$title = 'Web Spy';#このプログラムの英名

#####Spyが捕まえた人の調査はここから。

$url = $ENV{'SERVER_NAME'}.$ENV{'SCRIPT_NAME'};#このプログラムが置かれてる場所。
$referer = $ENV{'HTTP_REFERER'};#Spyの派遣先。
$host = $ENV{'REMOTE_HOST'};#まずはドメイン名から。基本だね。
$ip = $ENV{'REMOTE_ADDR'};#IPアドレス取得。Nuke撃つなよ。
$agent = $ENV{'HTTP_USER_AGENT'};#ブラウザチェック。
$host = "$host <font color=teal>via proxy</font>" if $agent=~/via /;
$host = $host." <FONT COLOR=sandybrown>$ip</FONT>";
$query = $ENV{'QUERY_STRING'};
$query =~s/\t/ /g;
$query =~s/\n/ /g;
$query =~s/&/&amp;/g;
$query =~s/</&lt;/g;

#ファイルの表示です。
if(!$query){
        print "Content-type: text/html\n\n";
        open(F,$log_file) || &ended;
        seek(F,0,0);
        @lines = <F>;
        close(F);
        print << "        _HEAD_";
        <HTML><HEAD><TITLE>$title</TITLE></HEAD><BODY BGCOLOR=#fff5ee>
        <FONT SIZE=5 COLOR=red><i>$jtitle ---$title</i></FONT>
        <TABLE BORDER><TD>
        <FONT SIZE=2><NOBR>&lt;img src=\"http://$url?xxx\"></NOBR></TABLE>
        <FONT SIZE=2><B>
        上記のHTMLを,アクセス状況を取得したいチャットで書き込んで下さい。
        (\"xxx\"は変えて下さい)
        <FONT COLOR=TEAL>画像を出せるWebチャット専用です。
        但し,エラーになるチャットもあります。</FONT></B></FONT><BR><BR>
        <font color=blue size=2>$titleを表示したURL</font>
        <font color=gray size=2>日付
        <font color=maroon>IPアドレス
        (<font color=teal>Proxy使用時の本当のIP</font>)</font></font><HR>\n
        _HEAD_
        print @lines;
        $sign = '<H5 ALIGN=right><A HREF=\"http://www.geocities.co.jp/SiliconValley/3955/\">Web-Spy by けいすけ</A></H5>';
        print << "        _FOOT_";
        <HR><FONT COLOR=TEAL SIZE=2><B>絶対に悪用しないで下さい。
        このプログラムが,大小を問わずいかなる不都合を招こうが,私は一切の責任を負いません。</B></FONT>$sign</BODY></HTML>
        _FOOT_
        exit;
}

#プロキシで入ってきてる人の本当のアドレスを調べるよ。(不完全です)
$via = $ENV{'HTTP_VIA'} if $ENV{'HTTP_VIA'}=~s/.*\s(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/;
$via = $ENV{'HTTP_X_FORWARDED_FOR'} if $ENV{'HTTP_X_FORWARDED_FOR'}=~s/^(\d+)\.(\d+)\.(\d+)\.(\d+)(\D*).*/$1.$2.$3.$4/;
$via = $ENV{'HTTP_FORWARDED'} if $ENV{'HTTP_FORWARDED'}=~s/.*\s(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/;
if($via =~/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/){
        if($via =~/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/){
                $ipvia = "$1.$2.$3.$4";
                $addr = (gethostbyaddr(pack('C4',$1,$2,$3,$4),2))[0];
                if($addr ne ''){$via = $addr;}else{$via = $ipvia;}
        }
}
$host = "$host ← <font color=teal>$via</font> <font color=green>$ipvia</font>" if $via;

#捕まえた日付と時間をチェック。
($month,$mday,$hour,$min)=(localtime)[4,3,2,1];
$min = "0$min" if ($min < 10);$month++;
$date = "$month/$mday $hour:$min";

#Spyがホシを捕まえたページのURLを抽出します。
$question = index($referer,'?');
$referer = substr($referer,0,$question) if $question != -1;
$html = '<i><b><font color=red>NOT CHATROOM?</font></b></i>' if ($referer =~/\/$/ | $referer =~/\.html$/);

#データをHTMLに変換!
$mem="<font size=2><a href=\"$referer\">$query</a></font><font color=red></font><font color=gray size=2> $date <font color=maroon>$host</font> $agent</font><br><br>\n";

#####画像出力です。
$| = 1;
print "Content-Type: Image/gif\nPragma: no-cache\n\n";
$rad=3.1415926*2;
$min_rad=$min/60*$rad;
$hour_rad=($hour % 12)/12 *$rad;
$hour_rad+=$min_rad/12;
$hour_x=16+sin($hour_rad)*16*0.6;
$hour_y=16-cos($hour_rad)*16*0.6;
$min_x=16+sin($min_rad)*16*0.9;
$min_y=16-cos($min_rad)*16*0.9;
$clock=new GD::Image(32,32);
$seashell=$clock->colorAllocate(245,235,228);
$white=$clock->colorAllocate(255,255,255);
$black=$clock->colorAllocate(0,0,0);
$red=$clock->colorAllocate(255,0,0);
for($i=0;$i<12;$i++){
        $min_rad=$i/12*$rad;
        $x1=16+sin($min_rad)*16*0.8;
        $y1=16-cos($min_rad)*16*0.8;
        $x2=16+sin($min_rad)*16;
        $y2=16-cos($min_rad)*16;
        $clock->line($x1,$y1,$x2,$y2,$red);
}
$clock->line(16,16,$hour_x,$hour_y,$black);
$clock->line(16,16,$min_x,$min_y,$black);
$clock->line(0,0,0,31,$white);
$clock->line(0,0,31,0,$white);
$clock->line(31,0,31,31,$black);
$clock->line(0,31,31,31,$black);
print $clock->gif;

#####データもそろったことですし,記録しようぜ。

open(FILE,"$log_file") || die;
seek(FILE,0,0);
@logs = <FILE>;
close(FILE);
@logs = @logs[0..39];
unshift(@logs,$mem);
open(FILE,">$log_file") || die;
eval 'flock(DB,2);';
seek(FILE,0,0);
print FILE @logs;
eval 'flock(DB,8);';
close(FILE);

exit;
サンプル

Index

絵英字作成
ご好評をいただいておりましたこのタグですが,都合によりサービスを終了させて頂きます。ご利用ありがとうございました。

このページは GeoCitiesです 無料ホームページをどうぞ