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列表推导式的使用方法
Nov 21 Python
详解Django缓存处理中Vary头部的使用
Jul 24 Python
Python内建数据结构详解
Feb 03 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
Python中交换两个元素的实现方法
Jun 29 Python
Django实现表单验证
Sep 08 Python
django2.2安装错误最全的解决方案(小结)
Sep 24 Python
python logging.basicConfig不生效的原因及解决
Feb 20 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
Python如何获取文件路径/目录
Sep 22 Python
Python中过滤字符串列表的方法
Dec 22 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加密解密函数分享
2014/06/05 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
requireJS使用指南
2016/04/27 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
python提取内容关键词的方法
2015/03/16 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
python后端接收前端回传的文件方法
2019/01/02 Python
Python实现时间序列可视化的方法
2019/08/06 Python
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
市场营销个人求职信范文
2014/02/02 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
计算机软件专业求职信
2014/06/10 职场文书
中学生爱国演讲稿
2014/09/05 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
追悼会答谢词范文
2015/09/29 职场文书
如何撰写创业策划书
2019/06/27 职场文书
Python数据可视化之用Matplotlib绘制常用图形
2021/06/03 Python
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis
python双向链表实例详解
2022/05/25 Python