【わしづかみたん】また俺たちの出番だが 3【ハァハァ】

このエントリーをはてなブックマークに追加
「わしづかみくん」サーバと、bbs.cgi に組み込むクライアントルーチンはもう完成してるのでしょうか?
http://pc.2ch.net/wasi.txt を読む限りでは、さくっと作れそうですが……

# Part1、Part2 は既に dat 落ちしているので未読
>>867
さくら(ry
>>869-870
バイナリにしないと重そう
しても重そうだが(藁

高い確率でパケット管理飛ぶ
パケットで管理するんだべ
パケット飛んでくるたびにリクエスト出してちゃ負荷高いべ
荒らしからすりゃからパケットバカバカ投げれば入り口が飛ぶんだから楽になる罠
という夜勤の妄想の世界のお話でした。

-----------終了-------------
937ひろゆき ◆3SHRUNYAXA :03/03/04 21:06
http://pc.2ch.net/washi001.txt
クライアントですー。>933さん
ひろゆきキタ━━━━━━(゚∀゚)━━━━━━ !!
ひぃ ろぉ ゆぅ きぃ?
940名無しさん@お腹いっぱい。:03/03/05 13:28
                   ,.-―っ / ̄ ̄ ̄ ̄ ̄
                人./ノ_ら~ | ・・・と見せかけて
           从  iヽ_)//  ∠    再 開!!!
          .(:():)ノ:://      \____
          、_):::::://(   (ひ
          )::::/∠Λ てノし)'     ,.-―-、   _
______人/ :/´А`)::   (     _ノ _ノ^ヾ_) < へヽ\
|__|__|__( (/:∴:::(  .n,.-っ⌒    (  ノlll゚∀゚) .(゚Д゚llソ |
|_|__|_人):/:・:::∵ヽ | )r'        ー'/⌒ ̄ て_)~ ̄__ イ
||__|  (::()ノ∴:・/|::| ./:/         /   ̄/__ヽ__/
|_|_| 从.从从:/ |__|::レ:/      ___/ヽ、_/
|__|| 从人人从 ..|__L_/      .( ヽ     ::|
|_|_|///ヽヾ\ .|_|_     /⌒二L_    |
────────       ー'     >ー--'
941933:03/03/06 03:04
>>937
どうも。

サーバは出来ました。
あとはクライアントの方。
942933:03/03/06 23:01
クライアント側も出来ました。
943933:03/03/07 01:54

作ったのはPerl スクリプト三つです。

(1) washi_server.pl

このスクリプトは帯域や CPU リソースに余裕のあるサーバに置いて、cron などで
定期的に実行してください。
実行すると例の proxy サーバのアドレスが掲載されているページを読みにいき、
IP アドレスのリストを作ります(denylist.txt)。
denylist.txt の形式は http://pc.2ch.net/wasi.txt から最初の "denylist"
というマジック文字列を抜いたものです。
ちなみに 20 分以上かかります(Web ページ取得 5 分 + DNS lookup 15 分以上)。

(2) washi_client.pl

このスクリプトは、それぞれの 2ch サーバで定期的に実行してください。
実行すると washi_server.pl が作成した denylist.txt を取得して、ローカルに
保存します。同時に denylist.db というバイナリファイルを生成します。
denylist.db は denylist.txt に登録された IP アドレスをソートして重複を
取り除き、それぞれを 4 バイトのバイナリに変換して連結したものです。
ソートするのは、次の check_proxy() で二分探索法を用いるためです。


(3) bbs.cgi に登録するサブルーチン check_proxy()

このサブルーチンは bbs.cgi に組み込んでください。
ホスト名(または IP アドレス)を引数にとり、denylist.db に登録されている
ホストならば 1、そうでなければ 0 を返します。

こんな感じで使う:
print "proxy ダメ\n" if check_proxy('proxy.2ch.net');
944933:03/03/07 01:59
use Socket; ←無いならこれを追加してください。inet_aton() を使うために必要
sub check_proxy($) {
    my $hostname = $_[0];
    my $ipaddr = inet_aton($hostname);
    open(IN, '<denylist.db') || return 0;
    binmode(IN);
    my $delimter = $/;
    $/ = undef;
    my $buf = <IN>;
    $/ = $delimter;
    close(IN);
    my ($low, $high, $middle, $element) = (0, (length($buf) >> 2) - 1);
    while ($low <= $high) {
        $middle = ($low + $high) >> 1;
        $element = substr($buf, $middle << 2, 4);
        if ($ipaddr lt $element) {
            $high = $middle - 1;
        } elsif ($ipaddr gt $element) {
            $low = $middle + 1;
        } else {
            return 1;
        }
    }
    return 0;
}
945その1:03/03/07 02:11
=== washi_client.pl ここから===
#!/usr/bin/perl -w

use strict;
use IO::Socket::INET;

# ファイルを取得
sub http_get($;$)
{
    my ($uri, $cookie) = @_;
    unless ($uri =~ m{^http://([^/:\@]+)(?::(\d+))?(/\S*)?$}o) {
        return undef;
    }
    my $host = $1;
    my $port = $2 || 80;
    my $path = $3;
    $path = '/' unless defined($path);
    my $sock = new IO::Socket::INET(PeerAddr => $host, PeerPort => $port, Proto => 'tcp', Timeout => 30);
    return undef unless defined($sock);
    $sock->autoflush;
    my $authority = $host;
    $authority .= ":$port" if $port != 80;
    print $sock "GET $path HTTP/1.0\r\n",
     "Host: $authority\r\n",
     "User-Agent: Mozilla/4.0 (compatible; washi_client.pl)\r\n",
     defined($cookie) ? "Cookie: $cookie\r\n\r\n" : "\r\n";
    my ($buf, $n) = '';
    1 while ($n = sysread($sock, $buf, 1024 * 8, length($buf)));
946その2:03/03/07 02:13
    if (defined($n) && $buf =~ m{^HTTP/\d+\.\d+\s+(\d+)}o && $1 =~ /^2/o) {
        return $buf;
    }
    return undef;
}

sub uniq(@)
{
    my %count;
    return grep(!$count{$_}++, @_);
}

# 適当に変更
my $url = 'http://pc.2ch.net/denylist.txt';

my $buf = http_get($url);
die("cannot get $url\n") unless defined($buf);
$buf =~ s/.+?\r?\n\r?\n//s;

# 2ch 全体で制限が必要なら
#my $url2 = 'http://pc.2ch.net/deny_global.txt';
#my $buf2 = http_get($url2);
#die("cannot get $url\n") unless defined($buf2);
#$buf2 =~ s/.+?\r?\n\r?\n//s;
#$buf .= $buf2;

947その3:03/03/07 02:15
# サーバごとに制限が必要なら
#if (open(IN, '<deny_local.txt')) {
#    while (<IN>) {
#        $buf .= $_;
#    }
#    close(IN);
#}

my @addrlist = map(inet_aton($_), $buf =~ /\s*([\d\.]+)\s*/go);
@addrlist = uniq(@addrlist);
@addrlist = sort(@addrlist);

# 適当に置くところを変えてください
open(OUT, '>denylist.db') || die("cannot open denylist.db\n");
binmode(OUT);
print OUT @addrlist;
close(OUT);

# 同じく
open(OUT, '>denylist.txt') || die("cannot open denylist.txt\n");
print OUT join("\n", map(inet_ntoa($_), @addrlist)), "\n";
close(OUT);
=== washi_client.pl ここまで===
インデントが全角空白になっているので注意
948933:03/03/07 02:21
washi_server.pl はどうしましょうか。
ここに載せると script kiddie に使われそうなのでアレです。
[email protected] に送ればいいのかな?
記念マキコ
950950:03/03/07 03:52
次スレは WebProg 板でやろう
>>950
賛成。
952933:03/03/07 09:24
Web プログラミングの要素はほとんど無いので、ここでいいです。
自分で賛成とか(ry
954951:03/03/07 12:05
>>952
じゃーム板でやれば?

>>953
違いますが、何か?
必死w
嫌がられながら続けるのもなんかなー、とか
957山崎13:03/03/08 08:07
それが漢の生きる道
感じわるー
>>952
SocketでWEB上から串を探し、
串を使ってのWEBからのアクセスを制限するというのは、
Webプログラミングそのものです。
ていうか、root権限も無いのに俺らに何かできる事あるの?
Perl のコードが出てきたけど、添削できるのはこの板の住人じゃないと思うんだが。

>>955
は?明確かつ正当な理由もないのにここでやると言い張ってるアンタの方が
必死に見えるよ(笑)。
960933:03/03/08 17:38
>>959

>ていうか、root権限も無いのに俺らに何かできる事あるの?

既知の proxy 経由での書き込みを防ぐことくらい、root 権限が無くても出来るでしょう。


> Perl のコードが出てきたけど、添削できるのはこの板の住人じゃないと思うんだが。

どうなんでしょうか。できる人が多いと思ったからこそ貼り付けたのですけどねー
私は Perl スクリプトをあまり書いたことがないので、技術レベルの高い人から見れば
いろいろ突っ込みどころがあると思います。処理効率、メモリ使用量などの点で。
2chの動作報告はここで その3
http://tmhkym.net/maka/bbs/test/read.cgi?bbs=maka&key=044895830&ls=50
167 名前:名無しマカー。 メェル:sage 投稿日:2003/03/08(土) 01:31 ID:???
http://qb.2ch.net/test/read.cgi/accuse/1046163577/890

 2chの動作報告はここで。−36−
890 :心得をよく読みましょう :03/03/08 00:17 ID:jhIkGBh1
現在.htaccessで弾いているIPのリスト。徐々に全板に広がっていくので要注意。

218.225.0.0/17  219.164.0.0/15  165.76.216.  211.120.93.  211.14.244.
220.99.134.164  211.132.22.168  203.136.15.132  211.131.195.99
133.11.12.32  219.103.115.3  210.231.40.46  210.172.221.124
220.8.32.134  211.132.202.17  133.5.6.12  12.36.111.242
61.21.57.100  61.114.196.50  61.115.195.  61.117.6.83
61.118.62.50  61.207.116.57  61.197.107.191  61.120.154.133
61.199.33.19  61.202.202.6  61.213.120.250  61.248.
64.140.49.66  64.140.49.67  66.77.73.68
202.234.172.0/25  209.237.238.
210.147.223.120  210.199.215.14   210.131.75.165   210.238.2.168
210.234.67.242   211.10.85.162   211.13.222.125
218.44.76.90   218.119.152.81   218.221.251.222   218.224.153.53
218.225.147.186   218.229.195.63   218.221.37.250
219.57.40.101   219.162.223.231   219.167.136.236
63.89.180.0/23   66.236.0.0/14
206.129.0.0/23   209.142.0.0/18   209.210.176.0/20   211.17.150.160/29
_________________________________________________________________

ということらしいので、該当する人はご注意を。 つか、泣くだけ?

168 名前:名無しマカー。 メェル:sage 投稿日:2003/03/08(土) 04:15 ID:???
>>167に関して、

hobbyの再編を考えよう。
http://qb.2ch.net/test/read.cgi/accuse/1046605519/

を頭から読んでいくと面白い。
警察の鑑識課の会話を盗み聞きしてるみたいだよ(w
>>959
俺は >>933 が1人で必死になってるように見えるw


  ま だ や っ て た ん で す か ?
  暇 人 で す ね 、 あ な た 達 。
出来る人がやるっていう、いつものことじゃん。
やらなくてもいいのに。
「自分たちでできねーなら外注しろよ」と思っちゃったり。
>>933
気にせずにガンガレ。漏れはおなえさんを支持するぞ。
応援はするが、他の板でやってくれ。なんでそんなにUnix板に固執するの?
感謝されたいとか、注目されたいからとかじゃないの?
感謝厨が湧く板を増やすのはよくないということと思われ
>>958
禿同

958 :名無しさん@お腹いっぱい。 :03/03/08 15:49
>>952
SocketでWEB上から串を探し、
串を使ってのWEBからのアクセスを制限するというのは、
Webプログラミングそのものです。
>>972
????
>>971
じゃーここでもやるなよ(´Д`)。以前どれだけ荒れたかぐらい知ってるだろ。
感謝厨が湧く板を減らしたいなら批判要望ででもやれっつーの。
>>974
激しく同意。
一部のかまって欲しいヒキーUnixerのせいで
えらい迷惑だ。
えろい迷惑だ。
さて、どこからどこまでが自作自演か。
>>977
1-997
>>978
ジサクジエーン
なぜ1-997なのかと小一時間問い詰めない
981名無しさん@お腹いっぱい。:03/03/13 09:10
埋め立て会誌
おい、おまいら自作自演はやめなさい。
983山崎渉:03/03/13 16:26
(^^)
また山崎出現か。
UNIXの人たちって、仲悪なのかぁ

内輪もめ?

それとも、ゆきひろが悪いのかぁ
>>985
真の悪はage2ch
>>986
つーことは ウニクスの人たちでも打つ手がないと・・・・言ってみるテスト

age2chの勝ちつーことデツね
>>933 まぁだぁ〜?( ´∀`)
WebProgrammingについて熱く語ってくれよ(ワラ
989名無しさん@お腹いっぱい。:03/03/14 13:20
□□□■■■■■■□□□□□■■■■■■□□□□□□□■■■□□□□□
□□■□□□□□□■□□□■□□□□□■□□□□□□■□□□■□□□□
□□□□□□□□■■□□□■□□□□□■□□□□□■□□□□□■□□□
□□□■■■■■■■□□□■□□□□□■□□□□■□□□□□□□■□□
□□■□□□□□■■□□□□■■■■■■□□□□■■■■■■■■■□□
□□■□□□□□■■□□□□□□■□□□□□□□■□□□□□□□□□□
□□■□□□□□■■□□□□■■■■■■■□□□□■□□□□□□□□□
□□■□□□□□■■□□□■□□□□□□□■□□□□■□□□□■□□□
□□□■■■■■□■■□□■□□□□□□□■□□□□□■■■■□□□□
□□□□□□□□□□∩□□□■■■■■■■□□□□□□□□□□□□□□
            |  ゝノ
           __|_______|_   ■■■■■■■■
           |iiiiiiiiiiiiiiiii|  ■■■■■■■■■ナニヤッテンダヨ!バカモノガァ!
           |iiiiiiiiiiiiiiiii| ■■■■√ === │
           |iiiiiiiiiiiiiiiii|■■■■√ ~ ミ ノノノ 彡 |
           |iiiiiiiiiiiiiiii|■■■√   ∀    ∀ \
           |iiiiiiiiiiiiiiii|■■■  ∵   (●  ●) ∴│  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           |iiiiiiiiiiiiiiii|■■■    丿■■■(  │< 常にageとけって
           |iiiiiiiiiiiiiiii|■■■     ■ д ■  |   |  言ったじゃないかぁ!
           |iiiiiiiiiiiiiiii|■■■■   ■■ ■■ ■  \_________
           |iiiiiiiiiiiiiiiiii■■■■■■■■■■■■__
           \iiiiiiiiiiiiiii■■■■■■■■■■■■iiヽ
             \iiiiiiiiiiiii■■■■■■■■■■■iiiiiii|
              |iiiiiiiiiiiiiiiii■■■■■■■■■■iiiiiiiii|
まぁ、がんばれ
991 ◆ZuhOfbs9pU :03/03/14 18:35
次擦れUNIX板じゃなかったらぶっ死ろすのでそのつもりで
2chの存続をかけた戦いなんだということがわかってないやつ
がいるな
スレタイが厨房を誘い込むように出来ちゃってるのがいかんのよ。


【対串防衛】わしづかみたんハアハア【cgi】

くらいなら、板住人からも外部からも妨害されずにやれるだろうに。
スクリプト以前にソーシャルが出来てない。
2ch がどうなろうと別にどうでもいいし。
>>993
スリランカの英帝支配時代の旧称
>>991
>>975 でも読んで頭冷やしたまえ(´ー`)y-~~
2ch のために何かしようという気持ちは無いでもないが、

   ス レ 違 い な ん だ よ 、 ボ ケ !


995は、板違いと言いたかったのか??
続きはmuttを使おうスレでやってくれ。
良い隠れ蓑だ
998
999
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。