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 相关文章推荐
rhythmbox中文名乱码问题解决方法
Sep 06 Python
python将html转成PDF的实现代码(包含中文)
Mar 04 Python
利用Psyco提升Python运行速度
Dec 24 Python
python创建列表并给列表赋初始值的方法
Jul 28 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
python命名空间(namespace)简单介绍
Aug 10 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
Mar 10 Python
python 实现 hive中类似 lateral view explode的功能示例
May 18 Python
浅析Python迭代器的高级用法
Jul 16 Python
PyQt5的QWebEngineView使用示例
Oct 20 Python
Django基础CBV装饰器和中间件
Mar 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
MySQL数据源表结构图示
2008/06/05 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
window.location.hash 使用说明
2010/11/08 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
js跳转页面方法总结
2014/01/29 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
JSONP之我见
2015/03/24 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
小程序关于请求同步的总结
2019/05/05 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
vue element el-transfer增加拖拽功能
2021/01/15 Vue.js
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
Python 深入理解yield
2008/09/06 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
python计算auc的方法
2020/09/09 Python
华为c/c++笔试题
2016/01/25 面试题
科室工作个人总结的自我评价
2013/10/29 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
Python学习之os包使用教程详解
2022/03/21 Python
python使用torch随机初始化参数
2022/03/22 Python
Redis基本数据类型String常用操作命令
2022/06/01 Redis