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基于queue和threading实现多线程下载实例
Oct 08 Python
在Python中使用HTML模版的教程
Apr 29 Python
使用Python的package机制如何简化utils包设计详解
Dec 11 Python
Django中间件工作流程及写法实例代码
Feb 06 Python
python实现泊松图像融合
Jul 26 Python
详解Django中间件的5种自定义方法
Jul 26 Python
python的依赖管理的实现
May 14 Python
详解python 中in 的 用法
Dec 12 Python
keras CNN卷积核可视化,热度图教程
Jun 22 Python
图解Python中深浅copy(通俗易懂)
Sep 03 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
Django分页器的用法你都了解吗
May 26 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的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
In Javascript Class, how to call the prototype method.(three method)
2007/01/09 Javascript
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
JavaScript异步编程:异步数据收集的具体方法
2013/08/19 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
2015/09/04 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
2016/01/01 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
在项目vue中使用echarts的操作步骤
2020/09/07 Javascript
Python模块学习 filecmp 文件比较
2012/08/27 Python
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
Python写的Socks5协议代理服务器
2014/08/06 Python
利用python为运维人员写一个监控脚本
2018/03/25 Python
基于pip install django失败时的解决方法
2018/06/12 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
销售文员岗位职责
2013/11/29 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
文言文辞职信
2015/02/28 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
慰问信格式规范
2015/03/23 职场文书
2015年服务员工作总结
2015/04/08 职场文书
党员廉政准则心得体会
2016/01/20 职场文书