0x00   使用模块简介

1、optparse模块

选项分析器,可用来生成脚本使用说明文档,基本使用如下;

import optparse

#程序使用说明

usage="%prog -H <target host> -p <target port>"

#实例化optparse对象

parser=optparse.OptionParser(usage)

#添加-H参数相关内容

parser.add_option('-H',dest='host',type='string',help='target host')

#将上述dest赋给options的属性,即options.host,其值表示的是-H参数后的host值

(options,args)=parser.parse_args()

2、socket模块

socket包含一个非常强大的网络库,用于网络编程,基本用法如下:

#创建socket对象

sock=socket(AF_INET,SOCK_STREAM)

#发起连接

sock.connect((host,port))

#发送数据

sock.send()

#接收数据

sock.recv()

#关闭

sock.close()

0x01   完整脚本

#coding:utf-8

import optparse
import socket
from socket import * def main():
usage="%prog -H <target host> -p <target port>"
parser=optparse.OptionParser(usage)
parser.add_option('-H',dest='tgthost',type='string',help='target host')
parser.add_option('-p',dest='tgtport',type='string',help='target port[s]')
(options,args)=parser.parse_args()
port_list=str(options.tgtport).split(',')
for port in port_list:
portScan(options.tgthost,int(port)) def portScan(host,port):
try:
sock=socket(AF_INET,SOCK_STREAM)
sock.connect((host,port))
print "[*]%d/tcp open" % port
sock.close()
except:
print "[*]%d/tcp close" % port if __name__=='__main__':
main()

0x02   运行截图

 0x03   问题记录

简述自己遇到的几个坑:

第一个是脚本执行一直报‘module’ object no attribute ‘OptionParser’,而且脚本是无任何错误的,

最终发现是因为脚本名称和python模块名称重复了,然后改了下脚本名称,再删除之前脚本执行生成的pyc文件,

之后脚本就可以正常运行了,一个脚本文件名引发的“血案”,望诸君留意,。。

第二个是使用socket时需要

import socket

from socket import *

如果不加上第二句,脚本执行会一直显示端口关闭。。。

【Python】端口扫描脚本的更多相关文章

  1. Linux shell编写端口扫描脚本

    Linux shell编写端口扫描脚本 需求: 扫描特定主机 扫描特定主机的特定端口 扫描特定网段 扫描特定网段中哪些主机开放了特定的端口 源码如下: #/bin/bash #该脚本用于对特定目标主机 ...

  2. python端口扫描

    简易版: #author:Blood_Zero #coding:utf-8 import socket import sys PortList=[21,22,23,25,80,135] # host= ...

  3. python 端口扫描程序

    #! /usr/bin/env python3 #-*- coding:utf-8 -*- import socket import threading OPEN_COUNT = 0 lock = t ...

  4. 34.TCP非阻塞连接及套接字异常处理丶端口扫描脚本

    TCP非阻塞及套接字异常处理: TCP阻塞套接字异常捕获: 套接字创建失败,8000 socket.error 客户端连接错误: ConnectionRefusedError socket.gaier ...

  5. python端口扫描用多线程+线程安全的队列+Thread类实现

    用线程安全的队列Queue实现扫描端口数据存储 用多线程扫描端口 用Thread类实现程序组织 #coding:utf-8 import sys import socket import sys im ...

  6. python 端口扫描

    #!/usr/bin/env python #-*- coding:utf-8 -*- import socket #iptable=[] nmapport=[21, 22, 23, 80, 110] ...

  7. Python批量扫描服务器指定端口状态

    闲来无事用Python写了一个简陋的端口扫描脚本,其简单的逻辑如下: 1. python DetectHostPort.py iplist.txt(存放着需要扫描的IP地址列表的文本,每行一个地址) ...

  8. python自动化运维四:nmap端口扫描

    p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 端口扫描器: Python的第三方模块python-nmap可以实现高效的端口扫描. ...

  9. Python 网站后台扫描脚本

    Python  网站后台扫描脚本 #!/usr/bin/python #coding=utf-8 import sys import urllib import time url = "ht ...

随机推荐

  1. Fix “Could Not Find This Item” When Deleting in Windows 7

    If you’ve been using Windows for as long as I have, you have probably run into your share of weird e ...

  2. 白盒测试实践项目(day4)

    华中科技大学教材订购系统 代码评审会议纪要 与会人员: 胡俊辉.杨瑞丰.汪鸿.张颖.李建文 评审标准: 此次代码评审会议,我们小组选用了阿里巴巴Java开发手册对代码进行评审. 会议过程: 1:周末下 ...

  3. myeclipse如何取消对某个文件的验证

    在用Myeclipse导入新工程或在写代码时,最郁闷的就是它对js,jsp,html的验证太严格了,有时会呈现一个红叉或者一个黄色的感慨号,一运行就报Cannot return from outsid ...

  4. Android开发adb环境配置

    adb的全称为Android Debug Bridge,就是起到调试桥的作用. 在命令行cmd中打开adb,如果Android开发的环境配置有误,会出现如下错误提示: 解决方法,右键我的电脑-> ...

  5. SQL获取本周,上周,本月,上月第一天和最后一天[注:本周从周一到周天]

    DECLARE @ThisWeekStartTime NVARCHAR(100),@ThisWeekEndTime NVARCHAR(100),--本周 @LastWeekStartTime NVAR ...

  6. Head First Python之3文件与异常

    文件基本操作 Python从文本读取数据时,一次会到达一个数据行. sketch.txt文件 Man: Is this the right room for an argument? Other Ma ...

  7. 【小梅哥FPGA进阶教程】第十二章 数字密码锁设计

    十二.数字密码锁设计 本文由山东大学研友袁卓贡献,特此感谢 实验目的 实现数字密码锁设计,要求矩阵按键输出且数码管显示输入密码,密码输入正确与否均会有相应标志信号产生. 实验平台 芯航线FPGA核心板 ...

  8. U盘安装Centos6.2

    原文地址:http://www.dedecms.com/knowledge/servers/linux-bsd/2012/0819/8452.html. 第一步:制作系统U盘(略). 第二步:设置BI ...

  9. Maven整理笔记のMaven仓库

    Maven坐标和依赖是任何一个构件在Maven世界中的逻辑表示方式:而构件的物理表示方式是文件,Maven通过仓库来统一管理这些文件.  Maven仓库 在Maven的世界中,任何一个依赖.插件或者项 ...

  10. leetcode 存在重复元素

    给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 1: 输入: [1,2,3,1] 输出: true ...