使用Python编写简单的端口扫描器的实例分享


Posted in Python onDecember 18, 2015

单线程实现
单线程实现道理比较简单,这里尝试Soket连接3389,连接成功说明端口开放,否则说明没有开远程服务。随便修改了一下就ok了,代码如下,最终得到自己的IP地址。

#!/usr/bin/env python 
import socket 
if __name__=='__main__': 
  port=3389  
  s=socket.socket() 
  for cnt in range(253,2,-1): 
    address='XXX.XXX.XXX.'+str(cnt) #XXX.XXX.XXX IP网段 
    try: 
      s.connect((address,port)) 
      print address 
    except socket.error,e: 
      print 'Error OR Port Not Opened'

Python的代码简单明了,但是功能不简单,速度有些慢,主要还是单线程和网络的原因吧。改进一下可以当一个简陋的端口扫描器使用了,扫描指定网段、指定端口,多线程速度可能能好一点吧。

多线程实现
前几天看了个讲使用Python扫描端口的教程,看了之后自己也写了个扫描端口的脚本。记录下来,方便自己以后回顾。
端口扫描端口效果图

使用Python编写简单的端口扫描器的实例分享

python扫描器源代码

# -*- coding:utf8 -*-
#!/usr/bin/python
# Python:     2.7.8
# Platform:    Windows
# Authro:     wucl
# Program:     端口扫描
# History:     2015.6.1
 
import socket, time, thread
socket.setdefaulttimeout(3)
 
def socket_port(ip,port):
  """
  输入IP和端口号,扫描判断端口是否开放
  """
  try:
    if port>=65535:
      print u'端口扫描结束'
    s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    result=s.connect_ex((ip,port))
    if result==0:
      lock.acquire()
      print ip,u':',port,u'端口开放'
      lock.release()
    s.close()
  except:
    print u'端口扫描异常'
 
def ip_scan(ip):
  """
  输入IP,扫描IP的0-65534端口情况
  """
  try:
    print u'开始扫描 %s' % ip
    start_time=time.time()
    for i in range(0,65534):
      thread.start_new_thread(socket_port,(ip,int(i)))
    print u'扫描端口完成,总共用时 :%.2f' %(time.time()-start_time)
    raw_input("Press Enter to Exit")
  except:
    print u'扫描ip出错'
     
 
if __name__=='__main__':
  url=raw_input('Input the ip you want to scan:\n')
  lock=thread.allocate_lock()
  ip_scan(url)
Python 相关文章推荐
树莓派中python获取GY-85九轴模块信息示例
Dec 05 Python
Python中optionParser模块的使用方法实例教程
Aug 29 Python
Python中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
python实现下载指定网址所有图片的方法
Aug 08 Python
python生成验证码图片代码分享
Jan 28 Python
Python使用微信SDK实现的微信支付功能示例
Jun 30 Python
在python中实现强制关闭线程的示例
Jan 22 Python
python+selenium 鼠标事件操作方法
Aug 24 Python
IronPython连接MySQL的方法步骤
Dec 27 Python
python enumerate内置函数用法总结
Jan 07 Python
使用TensorFlow搭建一个全连接神经网络教程
Feb 06 Python
Python采集爬取京东商品信息和评论并存入MySQL
Apr 12 Python
十个Python程序员易犯的错误
Dec 15 #Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 #Python
Python中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 #Python
分享Python字符串关键点
Dec 13 #Python
Python实时获取cmd的输出
Dec 13 #Python
一篇文章入门Python生态系统(Python新手入门指导)
Dec 11 #Python
深入源码解析Python中的对象与类型
Dec 11 #Python
You might like
Yii2框架数据库简单的增删改查语法小结
2016/08/31 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
告诉大家什么是JSON
2008/06/10 Javascript
JS支持带x身份证号码验证函数
2008/08/10 Javascript
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
python进行两个表格对比的方法
2018/06/27 Python
使用Python实现一个栈判断括号是否平衡
2018/08/23 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
Linux Interview Questions For software testers
2012/06/02 面试题
Ajxa常见问题都有哪些
2014/03/26 面试题
网站编辑求职信
2013/10/17 职场文书
优秀员工获奖感言
2014/03/01 职场文书
经理助理岗位职责
2014/03/05 职场文书
小学生学习感言
2014/03/10 职场文书
座谈会主持词
2014/03/20 职场文书
高中家长寄语
2014/04/02 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
留学推荐信英文范文
2015/03/26 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书