Python实现的端口扫描功能示例


Posted in Python onApril 08, 2018

本文实例讲述了Python实现的端口扫描功能。分享给大家供大家参考,具体如下:

一 代码

import sys
import socket
import multiprocessing
def ports(ports_service):
  #获取常用端口对应的服务名称
  for port in list(range(1,100))+[143,145,113,443,445,3389, 8080]:
    try:
      ports_service[port] = socket.getservbyport(port)
    except socket.error:
      pass
def ports_scan(HOST, ports_service):
  ports_open = []
  try:
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    #sock.settimeout(60)
  except socket.error:
    print('socket creation error')
    sys.exit()
  for port in ports_service:
    try:
      #尝试连接指定端口
      sock.connect((HOST,port))
      #记录打开的端口
      ports_open.append(port)
      sock.close()
    except socket.error:
      pass
  return ports_open
if __name__=='__main__':
  m = multiprocessing.Manager()
  ports_service = dict()
  results = dict()
  ports(ports_service)
  #创建进程池,允许最多8个进程同时运行
  pool = multiprocessing.Pool(processes=8)
  net = '192.168.0.'
  for host_number in map(str,range(105,106)):
    host = net+host_number
    #创建一个新进程,同时记录其运行结果
    results[host] = pool.apply_async(ports_scan, (host, ports_service))
    print('starting '+host+'...')
  #关闭进程池,close()必须在join()之前调用
  pool.close()
  #等待进程池中的进程全部执行结束
  pool.join()
  #打印输出结果
  for host in results:
    print('='*30)
    print(host,'.'*10)
    for port in results[host].get():
      print(port, ':', ports_service[port])

二 运行结果

starting 192.168.0.105...
==============================
192.168.0.105 ..........
80 : http

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
实例讲解Python中的私有属性
Aug 21 Python
python获取当前用户的主目录路径方法(推荐)
Jan 12 Python
详解python 爬取12306验证码
May 10 Python
python中metaclass原理与用法详解
Jun 25 Python
Django发送邮件功能实例详解
Sep 02 Python
pycharm修改file type方式
Nov 19 Python
python+OpenCV实现图像拼接
Mar 05 Python
Python自动化操作实现图例绘制
Jul 09 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
Jul 13 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
python基于tkinter制作m3u8视频下载工具
Apr 24 Python
Python 制作自动化翻译工具
Apr 25 Python
Python简单实现的代理服务器端口映射功能示例
Apr 08 #Python
pandas修改DataFrame列名的方法
Apr 08 #Python
Python数据分析库pandas基本操作方法
Apr 08 #Python
浅谈pandas中shift和diff函数关系
Apr 08 #Python
使用DataFrame删除行和列的实例讲解
Apr 08 #Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 #Python
pandas创建新Dataframe并添加多行的实例
Apr 08 #Python
You might like
PHP面向对象之旅:深入理解static变量与方法
2014/01/06 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
JavaScript暂停和继续定时器的实现方法
2016/07/18 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
Python中的pack和unpack的使用
2018/03/12 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
人力资源主管职责范本
2014/03/05 职场文书
高三高考决心书
2014/03/11 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
留学推荐信范文
2014/05/10 职场文书
2015年企业新年寄语
2014/12/08 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
中学生自我评价2015
2015/03/03 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书