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 strip()函数 介绍
May 24 Python
在Python中使用列表生成式的教程
Apr 27 Python
在Django中限制已登录用户的访问的方法
Jul 23 Python
简述Python2与Python3的不同点
Jan 21 Python
matplotlib savefig 保存图片大小的实例
May 24 Python
在Pandas中处理NaN值的方法
Jun 25 Python
python绘制多个子图的实例
Jul 07 Python
python实现对服务器脚本敏感信息的加密解密功能
Aug 13 Python
vscode 配置 python3开发环境的方法
Sep 19 Python
Python 列表的清空方式
Jan 13 Python
python快速安装OpenCV的步骤记录
Feb 22 Python
Python可视化神器pyecharts绘制地理图表
Jul 07 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源代码
2006/10/09 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
php生出随机字符串
2017/07/06 PHP
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
在JavaScript中操作数组之map()方法的使用
2015/06/09 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
vue项目中使用Svg的方法
2018/10/24 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
vue从零实现一个消息通知组件的方法详解
2020/03/16 Javascript
vue实现购物车加减
2020/05/30 Javascript
Python使用新浪微博API发送微博的例子
2014/04/10 Python
Python中线程编程之threading模块的使用详解
2015/06/23 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
Django中template for如何使用方法
2021/01/31 Python
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
大学生两会学习心得体会
2014/03/10 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
课题研究阶段性总结
2015/08/13 职场文书
详解Vue router路由
2021/11/20 Vue.js