LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 743|回复: 7

帮忙看看那里错了一个扫描软件代码

[复制链接]
发表于 2004-9-27 11:42:31 | 显示全部楼层 |阅读模式
#!usr/bin/perl #perl程序开头标式
use IO::Socket; #载如IO::Socket包
print "请输入你要扫描的主机:";
&#8194;$ARGV[0]=<STDIN>; #从键盘上输入数据到&#8194;$ARGV[0]
chop($ARGV[0]); #把最后一个字符删除
&#8194;$host=$ARGV[0];
&#8194;$file="ports.txt";
open(FILE,"&#8194;$file")||die "&#8194;$file端口文件是不是你搞丢了啊?自己重写一个吧\n"; #打开文件
while(@all=<FILE>){ #循环读取文件中的端口
print"正在扫描&#8194;$host……\n";
foreach &#8194;$port (@all){
&#8194;$sock=IO::Socket::INET->new(PeerAddr=>&#8194;$host,PeerPort=>&#8194;$port,Timeout=>60); #新建IO::Socket::INET对象 &#8194;$sock
if(&#8194;$sock){ #判断端口是否打开
print("&#8194;$host主机->&#8194;$port端口打开着!\n");&#8194;$sock->close; #关闭SOCKET对象
}else{
print "&#8194;$port关闭着!\n";
}
}print("\n");
}print("端口扫描结束,谢谢使用!");
exit 1;


我觉得好象是循环那里出错 没有循环扫描端口啊 而且问问ports.txt里的端口是否是竖着排列 还是用空格横着排? 谢谢老大门了
发表于 2004-9-27 15:34:23 | 显示全部楼层
虽然不知道.
         顶
发表于 2004-9-27 20:53:48 | 显示全部楼层
while(@all=<FILE> ){ #循环读取文件中的端口
print"正在扫描&#8194;$host……\n";
foreach &#8194;$port (@all){
&#8194;$sock=IO::Socket::INET->new(PeerAddr=>&#8194;$host,PeerPort=>&#8194;$port,Timeout=>60); #新建IO::Socket::INET对象 &#8194;$sock
if(&#8194;$sock){ #判断端口是否打开
print("&#8194;$host主机->&#8194;$port端口打开着!\n");&#8194;$sock->close; #关闭SOCKET对象
}else{
print "&#8194;$port关闭着!\n";
}
}print("\n");
}print("端口扫描结束,谢谢使用!");


  1. while(<FILE>)
  2. {
  3.     print"正在扫描&#8194;$host……\n";
  4.   $sock=IO::Socket::INET->new(PeerAddr=>&#8194;$host,PeerPort=>&#8194;$_,Timeout=>60);

  5. ## skip ...
复制代码
 楼主| 发表于 2004-9-29 18:53:30 | 显示全部楼层
谢谢大哥 不过运行时好象说无法辨认ports。txt的东西 我试过横或者竖排列都不行 究竟是什么回事还是程序本来还有些不完善的地方 谢谢大哥的耐性指点
发表于 2004-9-30 10:19:18 | 显示全部楼层

  1. sh-2.05b$ cat ports.txt
  2. 21
  3. 22
  4. 25
  5. 80

复制代码


  1. use IO::Socket;

  2. $host = "linuxsir.cn";

  3. open PORTS, "ports.txt" or die "$!\n";

  4. while(<PORTS>)
  5. {
  6.     next if /^\s/;
  7.     chop;
  8.     $socket = IO::Socket::INET->new(PeerAddr=>$host,PeerPort=>$_,Timeout=>60);
  9.     print "$host:$_ is open!\n" if defined $socket;
  10. ## skip..
  11. }

复制代码


你地 ports.txt 是什么内容?
 楼主| 发表于 2004-9-30 20:34:42 | 显示全部楼层
谢谢老大的不吝指教~
我是这样写的ports.txt里不知道对不对
80
25
139
3389
有的端口我知道是打开了的  我又试过这样的格式
80,455,1025
也是不行
不过用老大的可以了 也不知道是不是原来程序的问题 谢谢老大了
发表于 2004-10-3 15:48:48 | 显示全部楼层

re

我用你的源程序没有一点问题
文件里面应该竖着排列
 楼主| 发表于 2004-10-19 20:39:21 | 显示全部楼层
谢谢楼上那位大哥 不过我就是不行也不知道什么问题虽然能运行但 只是输出一个端口(port里排第一那个而且我的机子根本没开那端口)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表