このブログはURLが変更になりました

新しいブログはこちら→ https://matsuu.hatenablog.com/

2chの書き込み規制のしくみを調べてみた

規制されてないのに2chに書き込めない原因判明

スレを読み進めていくと、どうやら
206.223.144.0/20
207.29.224.0/19
からのTCPポート
443
995
1723
へのアクセスをフィルタすれば書き込めるらしい。

書き込むたびにTCPポートスキャンをしているの?と興味が湧いたので調べてみた。
ちなみに元記事には情報源スレッドのURLが記載されているが、読み方がわからなかったので読んでない。

Twitterに全部書いたので再掲

tcpdumpで確認したのだが、上記の443、995、1723以外は確認できなかった。2,3回しか試してないので実際には他のパターンもあるかもしれない。
クッキーを食わせた状態でもう一度書き込んだ場合はポートスキャンは来なかった。

書き込みテストは「2ch 書き込み テスト」でググって出てきたここに。
書き込みテスト 専用スレッド637
書き込みの作法を知らないのでよくわからなかったんだけども。

ポートの待ち受けはPerlでIO::Socket::INETを使ってテキトーに書いた。

#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket::INET;

my $s = IO::Socket::INET->new(Listen => 5, LocalPort => $ARGV[0], Proto => 'tcp', ReuseAddr => 1) or die $!;

$s->listen;

while(my $c = $s->accept) {
  while(my $q = $c->getline) {
    print $q;
    $c->print($q);
  }
  $c->close;
}
$s->close;

3ハンドシェイク後にFIN-ACKをすぐ投げてるので何も出力されなかった。

まとめ

TCPポートスキャンは不正アクセスにあたるのかについては詳しくないのだけれども、3ハンドシェイクとFIN-ACKだけならまぁ許容範囲じゃないですかね。
これだけだと簡単にすり抜けられるけど、かといってより良い方法は今すぐ思いつかない。お手軽にチェックする実装としてはまぁアリかなと思いました。