python端口扫描(扫描0到1023端口)
2013-06-04 12:30
344 查看
这学期选修了“信息安全”专业的《网络安全》课程,这是网络安全课程的第一个实验,要求写一个程序,多线程扫描目的主机的端口。
很简单的一个小程序,鉴于正在学python,所以就用python写了,刚学python,所以可能有点不pythonic.
并使用了锁机制来实现线程同步。
输入的时候可以直接域名,也可以直接输入ip地址。
使用本机ip测试:
![](https://img-blog.csdn.net/20130604121950843)
使用本地域名测试
![](https://img-blog.csdn.net/20130604122047031)
启动本机的http服务,即开启本机的80端口:
![](https://img-blog.csdn.net/20130604122844671)
可以看到端口80已经被扫描到了,证明程序有效。
(程序中的中文注释在运行时要删掉,否则会提示有不能识别的编码)
很简单的一个小程序,鉴于正在学python,所以就用python写了,刚学python,所以可能有点不pythonic.
#!/usr/bin/env python # Time-stamp: <2013-06-04 10:35:58 Tuesday by pein> # Email: <pein0119@gmail.com> # -*- coding: utf-8 -*- import threading import socket def scan(ip, port): """ """ global portList #建立了一个list,将目的主机开放的端口号加入portlist中(使用append函数) try: sk = socket.socket() sk.settimeout(0.1)#设定连接时的超时限制,这里是100ms address = (ip, port) if sk.connect_ex(address) == 0: print port portList.append(port) except Exception, e: print "error %s" %e #如果出错,打印错误信息 sk.close() class sniff(threading.Thread): """ """ def __init__(self, ip): """ """ threading.Thread.__init__(self) self.ip = ip def run(self): #重写run函数 """ """ global portBegin, portEnd, mutex while True: mutex.acquire() #使用锁来实现线程同步 portBegin += 1 if portBegin > portEnd: mutex.release() break mutex.release() scan(self.ip, portBegin) def main(): #主函数 """ """ url = str(raw_input("please input a host name or a ip address\n--->")) ip = str(socket.gethostbyname(url)) threads = [] #创建list,存储线程 global mutex, portBegin, portEnd, portList portList = [] portBegin = 0 #设置起始的扫描端口 portEnd = 1023 #设置终止的扫描端口 mutex = threading.Lock() for i in range(10): #开了十个线程 thread = sniff(ip) thread.start() threads.append(thread) for thread in threads: thread.join() #等段子线程退出 portList.sort() print "on host \"",url,"\" port:[", for port in portList: print port, print "]is open" main()主要思想就是建立socket,然后使用threading模块开了十个线程,并行扫描目的主机的0~1023号端口。
并使用了锁机制来实现线程同步。
输入的时候可以直接域名,也可以直接输入ip地址。
使用本机ip测试:
使用本地域名测试
启动本机的http服务,即开启本机的80端口:
可以看到端口80已经被扫描到了,证明程序有效。
(程序中的中文注释在运行时要删掉,否则会提示有不能识别的编码)
相关文章推荐
- Python学习-端口扫描-对本地host127.0.0.1的主机进行扫描端口
- Python实现的端口扫描功能示例
- python基础教程之udp端口扫描
- 【python】批量扫描IP地址80/8080端口
- python 调用 nmap 扫描服务器开放的端口
- Python扫描端口
- PYTHON端口扫描小程序
- Python扫描IP段查看指定端口是否开放的方法
- Python 多线程端口扫描软件
- Python端口扫描简单程序
- Python2.x实现多线程主机端口扫描(入门)
- Python3 批量扫描端口
- Python实现对一个网络段扫描及端口扫描
- Python 端口扫描 报警
- 端口扫描shell版和python版
- 使用Python扫描端口情况
- 使用python实现扫描端口示例
- POPTEST老李分享源代码-扫描端口(python)
- 运维python进行(一) nmap扫描端口
- Python 第三方模块pythonnmap来实现高效的端口扫描