毒電波をびびび†自分のWebサイトから毒電波をびびびっと送信したいぜ!な方用。 Perl編†
#!/usr/bin/perl # !/usr/local/bin/perlの場合もあるよ! # 送信内容 $request = 'COMMUNICATE SSTP/1.1' ."\r\n" .'Sender: カードキャプター' ."\r\n" .'Sentence: 今日は寒いなー。' ."\r\n" .'Option: substitute' ."\r\n" .'Charset: Shift_JIS' ."\r\n" ."\r\n"; # かなり泥臭い設定。joinしろよと(ry print "Content-type: text/plain\n\n"; # 「何か」の存在チェック&SSTP-Scriptデータの送信 $port_number = '9801'; $check_nanika = &sstp_send($request,$port_number); if (!$check_nanika) { $port_number = '9821'; $check_nanika = &sstp_send($request,$port_number); } exit; # ---------------------------------------- # ■以下、サブルーチン # ▼TCPポート処理 (C)黒衣氏 # 戻り値:SSTPサーバーからのリザルト # $send='送信内容' $port='出力port' # $addr='送出先アドレス' $proto='使用プロトコル' $ent='ネットワークアドレス' sub sstp_send { use Socket; my ($send, $port, $addr, $proto, $ent, $result) = @_; # タイムアウト予約 $SIG{'ALRM'} = sub {$resp='408 Request Timeout'."\r\n"."\r\n";}; alarm 1; # 送信先IPアドレスの取得 $addr = $ENV{'HTTP_X_FORWARDED_FOR'}; if (index($addr,'.') == -1 ) { $addr = $ENV{'REMOTE_ADDR'}; } print 'IP: '.$addr."\r\n"; print 'Port: '.$port."\r\n"; print "\r\n"; # プロトコル名の取得 $proto = getprotobyname('tcp'); # ポートに接続 if (! socket(S, &PF_INET, &SOCK_STREAM, $proto)) { # $resp = 'TCPポート処理','指定されたソケットがOPENできません'."\r\n"; } # ネットワークアドレスの取得 $ent = sockaddr_in($port, inet_aton($addr)); # print 'NetworkAddress: '.$ent."\r\n"; # 接続開始 if (connect(S, $ent)) { select(S); $| = 1; select(STDOUT); # SSTP送信 print S $send; $result = <S>; close(S); }else{ # $resp = ''."\r\n"; } print '===== send ====='."\r\n"; print $send; # タイムアウト初期化 alarm 0; $resp ||= $result; print '===== response ====='."\r\n"; print $resp; return($result); } コメント場所†
|