使用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操作SQLite简明教程
Jul 10 Python
python获取本机mac地址和ip地址的方法
Apr 29 Python
Python制作数据导入导出工具
Jul 31 Python
用Python实现命令行闹钟脚本实例
Sep 05 Python
Python中字典(dict)合并的四种方法总结
Aug 10 Python
django项目搭建与Session使用详解
Oct 10 Python
Python正则表达式匹配数字和小数的方法
Jul 03 Python
Python如何实现强制数据类型转换
Nov 22 Python
python正则表达式实例代码
Mar 03 Python
Python实现打包成库供别的模块调用
Jul 13 Python
解决pytorch读取自制数据集出现过的问题
May 31 Python
Python编程编写完善的命令行工具
Sep 15 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
PHP中的正则表达式函数介绍
2012/02/27 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
高效率JavaScript编写技巧整理
2013/08/23 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
Node.js 路由的实现方法
2019/06/05 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
Python Tkinter简单布局实例教程
2014/09/03 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
python 常见的排序算法实现汇总
2020/08/21 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
大学生作弊检讨书
2014/02/19 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python