Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19912435
  • 博文数量: 679
  • 博客积分: 10495
  • 博客等级: 上将
  • 技术积分: 9308
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-18 10:51
文章分类

全部博文(679)

文章存档

2012年(5)

2011年(38)

2010年(86)

2009年(145)

2008年(170)

2007年(165)

2006年(89)

分类: Python/Ruby

2009-09-13 08:34:41

使用python扫描端口

2009-9-13

磁针石:xurongzhong#gmail.com

博客:oychw.cublog.cn


    本文为学习python的socket时候所写,当然python用来扫描端口的效率并不高,这里仅仅是为了study。




#!/usr/bin/env python

import socket

def check_server(address,port):
    s=socket.socket()
    try:
        s.connect((address,port))
        return True
    except socket.error,e:
        return False
   
if __name__=='__main__':
    from optparse import OptionParser
    parser=OptionParser()
    parser.add_option("-a","--address",dest="address",default='localhost',help="Address for server",metavar="ADDRESS")
    parser.add_option("-s","--start",dest="start_port",type="int",default=1,help="start port",metavar="SPORT")
    parser.add_option("-e","--end",dest="end_port",type="int",default=1,help="end port",metavar="EPORT")
    (options,args)=parser.parse_args()
    print 'options: %s, args: %s' % (options, args)
    port=options.start_port
    while(port<=options.end_port):
        check = check_server(options.address, port)
        if (check):
            print 'Port  %s is on' % port
        port=port+1

不过好像没有看到python中有加加运算符号。这里代码在ubuntu 9.04中调试通过。

# ./port_scan.py -h
Usage: port_scan.py [options]

Options:
  -h, --help            show this help message and exit
  -a ADDRESS, --address=ADDRESS
                        Address for server
  -s SPORT, --start=SPORT
                        start port
  -e EPORT, --end=EPORT
                        end port


# ./port_scan.py -a 192.168.1.1 -s 1 -e 100
options: {'end_port': 100, 'start_port': 1, 'address': '192.168.1.1'}, args: []
Port  21 is on
Port  23 is on
Port  80 is on



阅读(5405) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~