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 Mysql自动备份脚本
Jul 14 Python
python自带的http模块详解
Nov 06 Python
Python实现打印螺旋矩阵功能的方法
Nov 21 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 Python
Flask框架配置与调试操作示例
Jul 23 Python
PyQt5组件读取参数的实例
Jun 25 Python
python实现发送form-data数据的方法详解
Sep 27 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
Python pandas对excel的操作实现示例
Jul 21 Python
Python字典取键、值对的方法步骤
Sep 30 Python
通过代码实例了解Python3编程技巧
Oct 13 Python
Python  Asyncio模块实现的生产消费者模型的方法
Mar 01 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
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
PHP 引用文件技巧
2010/03/02 PHP
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
js以对象为索引的关联数组
2010/07/04 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
JS功能代码集锦
2016/05/04 Javascript
bootstrap table小案例
2016/10/21 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
Node.js 回调函数实例详解
2017/07/06 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
Python psutil模块简单使用实例
2015/04/28 Python
Python做文本按行去重的实现方法
2016/10/19 Python
基于Python的接口测试框架实例
2016/11/04 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
Keras loss函数剖析
2020/07/06 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
英国电气世界:Electrical World
2019/09/08 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
高中自我评价分享
2013/12/05 职场文书
北京离婚协议书范文2014
2014/09/29 职场文书
培训计划通知
2015/07/15 职场文书
进行数据处理的6个 Python 代码块分享
2022/04/06 Python
css3 选择器
2022/05/11 HTML / CSS