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用fork来创建子进程注意事项
Jul 03 Python
python中的reduce内建函数使用方法指南
Aug 31 Python
Python判断两个对象相等的原理
Dec 12 Python
Python实现二维数组输出为图片
Apr 03 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
使用k8s部署Django项目的方法步骤
Jan 14 Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 Python
python 直接赋值和copy的区别详解
Aug 07 Python
Python 音频生成器的实现示例
Dec 24 Python
Pytorch 中retain_graph的用法详解
Jan 07 Python
Tensorflow Summary用法学习笔记
Jan 10 Python
配置python的编程环境之Anaconda + VSCode的教程
Mar 29 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 闭包特性在实际应用中的问题
2009/10/30 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
2018/01/25 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
对vue中methods互相调用的方法详解
2018/08/30 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
Python多线程实例教程
2014/09/06 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
python pygame实现五子棋小游戏
2020/10/26 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
建筑班组长岗位职责
2014/01/02 职场文书
活动宣传策划方案
2014/05/23 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
python process模块的使用简介
2021/05/14 Python
详解Vue的sync修饰符
2021/05/15 Vue.js