2006年2月25日土曜日

バイナリでtelnetっぽくなツール



ものとしては非常になんともないけど、たまにむしょうに欲しくなるツール。


単に入力行を読んで%XXをみたら16進変換するだけ。


出力はout.tmpに出されるのでtail -fで読むっす。





参考までに








LF0x0A
CR0x0D
%0x25


#!/usr/bin/perl
#belnet host port
#using "output.tmp" for output
#STDIN is used only for sending message (printf format)
use IO::Socket;

($host,$port)=@ARGV;
open OUT,">output.tmp" or die("");
$sock = IO::Socket::INET->new(PeerAddr => $host,PeerPort => $port,Proto=> 'tcp',);
print STDERR "CONNECTED\n";
select OUT;
$|=1;
select $sock;
$|=1;
select STDOUT;
$|=1;
if(fork()){
while(<STDIN>){
chomp();
s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
print $sock $_;
}

}else{
while(sysread($sock,$_,1)){
print OUT $_;
}
print STDERR "WRITE END\n";
}




0 件のコメント:

コメントを投稿