*毒電波をびびび [#za0fcd9f]
自分のWebサイトから毒電波をびびびっと送信したいぜ!な方用。~
SSTPの仕様についてはこちらをどうぞ~
-[[伺か - SSTPプロトコル:http://futaba.sora-iro.net/sstp.html]]
-[[非公式 SSTP/1.x プロトコル仕様書:http://www.ooyashima.net/db/sstp.html]]
**Perl編 [#ab1fff6c]
+このコードをメモ帳にコピペしてSSTP.cgiとか名前つけてサーバーに上げる。
+パーミッションはたぶん701くらいで動くと思う。
+このCGIにブラウザでアクセスする。
++受信側のルータの9801or9821ポートが開放されていて
++受信側のファイヤーウォールのポートも開放されていて
++受信側のSSPなどのSSTPクライアントが起動していて
++受信側のそのSSPなどのSSTPクライアントの設定が合っていて
++尚且つ、このCGIスクリプトがエラーを500エラーを吐かなければ
+SSTPが送信される。ハズ。

 #!/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);
 }

*コメント場所 [#q4cea355]
- 何か一言どうぞ。 -- [[レゴキチ]] &new{2010-04-04 (日) 23:53:29};
- レンタルサーバーだとポート開けてくれないのよね。デモページとか見たいかも。 -- [[Don]] &new{2010-04-05 (月) 00:04:46};
- 口調とかが変わるのが最大の問題かな?プロパティみたいなの送ってゴースト側で反応できたら面白いかも -- [[Wiz★]] &new{2010-04-05 (月) 05:16:59};
-送信側はポートの設定いらない気がするけど。 -- [[レゴキチ]] &new{2010-04-05 (月) 10:44:41};
- COMMUNICATE SSTP/1.1ならコミュ呼びかけなので口調の心配することもないよ! -- [[レゴキチ]] &new{2010-04-05 (月) 10:48:00};
- デモページは5月までお待ちください、というのも現在うちの鯖が電源落ちていて、物理的に離れた場所にあるので。 -- [[レゴキチ]] &new{2010-04-05 (月) 19:55:53};
- おお、いいなこれ。COMMUNICATEって書いてあった。こみゅにするのもいいけど、独自イベントみたいになげてもいいかもしれませんね。何のサイトか、拾ってゴーストが説明できるとか。 -- [[Wiz★]] &new{2010-04-10 (土) 17:55:49};

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS