use Socket;について熱く語るスレ
■ このスレッドは過去ログ倉庫に格納されています
0001use Socket;
02/03/10 01:50ID:Q1gcj2Im※質問は専用スレへ。CGI串ってどこ?といった類もお断り
0002nobodyさん
02/03/10 01:50ID:???0003nobodyさん
02/03/10 01:58ID:WvppN2j7 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
0004nobodyさん
02/03/10 02:03ID:???0005nobodyさん
02/03/10 02:08ID:???0006use Socket;
02/03/10 02:26ID:Q1gcj2Im#!/usr/local/bin/perl
use IO::Socket;use LWP::Simple;
while(1){$n=IO::Socket::INET->new(LocalPort=>80,Listen=>10)->accept();
print$n get((split/ /,<$n>)[1]);$n->close();}
ほれ、君たちの大好きなProxyじゃ。ただしGETのみ
0007nobodyさん
02/03/10 02:31ID:???スレなんですね。失礼させて頂きます。
0008nobodyさん
02/03/10 02:33ID:???0009use Socket;
02/03/10 02:33ID:???ここは別に厨対象じゃねーぞ。
3とかのアホ向け(藁
0010nobodyさん
02/03/10 02:40ID:???初心者なのでちょっとわからないのですが、#!/usr/local/bin/perl〜
で続く行がホスト名なのでしょうか?IEだと文字数オーバーしてしまい、
入らないのですが・・・。あとポート番号はデフォルトの8080でしょうか?
0012nobodyさん
02/03/10 02:42ID:???つーかこんな時間なのに人いるね
0013nobodyさん
02/03/10 02:45ID:???0014nobodyさん
02/03/10 02:51ID:???それはホスト名ではなくProxyのプログラム自体だ。
たとえばこれをprx.plという名前で保存してUNIXやActivePerlの
導入された環境下においてコマンドプロンプトから
A:\>Perl prx.pl
ちなみにこの場合Proxyのホスト名は君が診断君などのページへ逝ったとき
REMOTE_HOSTとして表示されている変数に入っている。ポート番号は80だ。
わかったかな、>>10よ
0015nobodyさん
02/03/10 02:54ID:???あったから回線遅くするためのプロクシスクリプトは書いたな。
まあソケットから読み込むバッファサイズとスリープする秒数を
調整してselect挟むだけだけど。
普通のプロクシスクリプトも作ったけど、ただ単にHTTP1.0で
GET、POSTのみなら簡単なんだけど、HTTP1.1サポートするのが鬼の
ように面倒だったからやめたよ。httpsもあるし。使用用途はリクエストと
レスポンス(ヘッダだけじゃなく内容も)を全て記録したかったのと、
HTMLのフィルタリング、あとはハニーポットに使ったぐらいかな。
漏れはuse Socketだけでガリガリ書いてたから面倒に感じただけで、
他のモジュール使えば簡単にできんのかな。
0016nobodyさん
02/03/10 02:55ID:???0017use Socket;
02/03/10 02:59ID:???贅沢な悩みだな。しかしuse Socketだけで書くとは漢だな。
私も以前はuse Socketで最初から書いていたがだんだんConnectとListen
が定型文なのでサブルーチン化しちゃったのでuse IO::Socketと
変わらなくなったのでさっさと乗り換えた。
>HTMLのフィルタリング、あとはハニーポットに使ったぐらいかな。
なんかアホが引っかかったか?(藁
0018use Socket;
02/03/10 03:01ID:???接続をcloseせずにwhileでループしてクリアしてるCGIを見たことあるけど
どうなのかな
0019nobodyさん
02/03/10 03:01ID:???アホ引っ掛けるためじゃなく、CodeRedI〜III騒ぎの時だよ。
ちなみにHTMLのフィルタリングは一度全部バッファに読み込んで
からじゃないとHTMLいじれないんで、遅いからやめた。forkしないと
遅すぎ。
0020use Socket;
02/03/10 03:08ID:???あーなるほど。うちはファイアーウォールで中国鯖をカットしてたけど
それでもいくらかアタックがきたかな。アパッチなので無意味だけど(藁
最近はSELECT使うようになったけど、やっぱProxyにはfork使うべきじゃないかな
鯖系スクリプト一般に思うんだけど、プロセス数を少なくしようとしてSELECT
使うのはわかるけど、別スレッドに任せておいたほうがプログラム的に
すっきりするし、何より軽い感じがする。
0022nobodyさん
02/03/10 03:23ID:???リストファイル読み込んで任意の数に分割して平行でダウソ
する奴。リジューム付き。でももっと高機能な奴を発見した時点で
開発やめちゃったよ。CGIばっか仕事で作らされるとつまらなくなって
来るから、仕事してるフリをするために書いてたようなもんだし。
ところでPerlでRAWソケットって扱ったこと無いんだけど、なんか
楽ができるモジュールないのかな。さすがにガリガリ書くのは面倒。
まあ素直にCで書けって言われそうだけど。
0023use Socket;
02/03/10 03:35ID:???作ったことないのであまり大きな顔できんが・・・
http://9mm.com/philez/lego
とりあえずこの人のを参考に作ったよ
どっちかっていうとPerlの知識って言うよりIPの知識が必要だった。
0024use Socket;
02/03/10 03:38ID:???PerlのRAWソケットもやっぱりRootじゃないと使えないのだろうか。
Cでは使えなかったような気がする。
あーなんかRAWソケットというとステルスポートスキャナとかSYN Floodとか
厨なものしか作ってない。鬱
生ソケット使って実用的なものって作れるんかいな?
0025nobodyさん
02/03/10 03:40ID:???お、貴重なサンプルスクリプトをありがとう。
でもやっぱりガリガリ書くのか(w
ちょっとARPを弄りたいんで色々やってみるよ。
まあ仕事のフリをしながら書くんだけどね
0027nobodyさん
02/03/10 13:59ID:???Socket自体をrootでないと使えないということはない。
一般ユーザーに制限がかかるのはbindできるportナンバー。
0029nobodyさん
02/03/11 12:03ID:???Net::RawIPはどうか。サンプルスクリプトもいくつか付いてるし。
一部の人が喜びそうなlandとかoshareのサンプルもあり(w
関係ないけどNet::Pcapも楽ができる
0030use Socket;
02/03/11 19:29ID:???いや、サーバー側じゃなくてクライアント側がね。
確かにサーバー側は重いかもしれんが所詮Perl串なんて不特定多数に
公開するものでもないのでforkを私はお勧めする。
>>22
名前からして便利そうな感じだがとりあえずオフィシャルサイト覗いてみると落ちてた(汗
とりあえず情報サンクス
http://quake.skif.net/RawIP/
0031nobodyさん
02/03/11 19:48ID:lmK+A0LG0032use Socket;
02/03/11 20:50ID:???oshareパケット、LAN内のWin98に向けてで実行してみたらまじでクラッシュしたよ(汗
98SEなら大丈夫なのかな?
それよりもtracerouteを生パケットレベルからやってるとこには感動
open( TR,"/usr/bin/traceroute $host" );
print while <TR>;
close( TR );
これだけで済むといえば済むのだが自分で1から作ってみるのも結構面白い。
なんかRAW SOCKETにはまりそうだ。
0033nobodyさん
02/03/11 21:57ID:m0K7iM7P>>18 コマンドパイプライニングが面倒。Keep-Alive許されるか否かがやってみないと判らないとい
うのは実装考えてつくった規格とは思えない。
0034nobodyさん
02/03/11 22:04ID:???0035nobodyさん
02/03/11 22:06ID:???0036nobodyさん
02/03/11 22:09ID:Nq6ZCTrF0037use Socket;
02/03/12 00:43ID:???・・・単に労力の差か。
>>33
リクエストのパイプライン化は確かに面倒だが、Keep-Aliveが実現できているサーバーなら、
リソースを取得してクライアントへの送信のみを行う子プロセスをつくって
親プロセスはリクエストを受け取り専門になって子プロセスにどんどん指示を出していき、
タスクリストを追加していく、という方法で逝けないかな。
ただその場合子プロセスのリソース取得方法もKeep-Aliveをサポートしないと逝けない
と考えると多少鬱になる。これぐらいはHTTP1.0で許してもらおう(笑
0038use Socket;
02/03/12 18:53ID:???さびしくなってきたな(藁
0039nobodyさん
02/03/12 19:08ID:???うぃraw_socketはrootじゃないと起こられる。Win32は関係ないけど。
raw_socket周りで面白かったのはicmp-echoとreplyでファイル転送ツールを作った時。
pingが通ればファイル転送可能!
でも激オソ。バグ多数(涙)
0040use Socket;
02/03/12 19:38ID:???pingでファイル転送デスカ・・・。おつかれさん。
私はUDPファイル転送なんて作ったことあるけど分割パケットを受信側で組み立てる
作業が難しかったね。LAN内では別にエラー訂正なんて要らないほど正確だったけど
インターネットに持ち出すとパケットの死ぬこと死ぬこと(藁
0041use Socket;
02/03/12 19:40ID:YB/JsQLE0043nobodyさん
02/03/12 23:08ID:???>>33
Keep-Aliveなサーバでも勝手に切ってくる時もあったり…
0044nobodyさん
02/03/13 00:19ID:???0045nobodyさん
02/03/13 00:22ID:???#!/usr/local/bin/perl
while(1){if(fork()==0){while(1){print "氏ね\n";}}}
ほれ
0046nobodyさん
02/03/13 03:21ID:???スクリプトを書くにはどうしたらいいんですか?
0047nobodyさん
02/03/13 09:56ID:???use Google;
$g = new Google(lang => 'ja');
$rh = $g->request('ほげ!');
while($r = $rh->fetch){
print "URI:", $r->uri, "\n";
}
__END__
…とかな(うそ
まぁお前、>>46はLWPでも調べなさいってこった。
0048nobodyさん
02/03/13 13:38ID:???暇だなぁ。
http://gikotk.tripod.co.jp/dust/Google.pm
use IO::Socketしてるのはやはりヘタレか?
004946
02/03/13 17:03ID:???0050use Socket;
02/03/13 17:45ID:???お、あんたギコTkの作者かい。PerlでGUIとは熱いね。
005247
02/03/13 19:06ID:???ちょっと修正したけどけっこう途切れたり関連サイトのURIが取れなかったりする。
それにしてもGoogleのソースって読みづらいなぁ…。
■ このスレッドは過去ログ倉庫に格納されています