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模块restful使用方法实例
Dec 10 Python
Python中实现结构相似的函数调用方法
Mar 10 Python
在Django的URLconf中进行函数导入的方法
Jul 18 Python
python中的break、continue、exit()、pass全面解析
Aug 05 Python
Python3.6简单操作Mysql数据库
Sep 12 Python
python smtplib发送带附件邮件小程序
May 22 Python
python寻找list中最大值、最小值并返回其所在位置的方法
Jun 27 Python
Random 在 Python 中的使用方法
Aug 09 Python
set在python里的含义和用法
Jun 24 Python
配置python的编程环境之Anaconda + VSCode的教程
Mar 29 Python
JupyterNotebook 输出窗口的显示效果调整方法
Apr 13 Python
python将dict中的unicode打印成中文实例
May 11 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缓存类分享     php缓存机制
2014/01/22 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
Laravel框架下的Contracts契约详解
2020/03/17 PHP
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
学习ExtJS accordion布局
2009/10/08 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
[49:11]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.20
2020/12/23 DOTA
Python计算三维矢量幅度的方法
2015/06/15 Python
在windows系统中实现python3安装lxml
2016/03/23 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
12月红领巾广播稿
2014/02/13 职场文书
机械专业求职信
2014/05/25 职场文书
2016春节放假通知范文
2015/08/18 职场文书
入党申请书怎么写?
2019/06/11 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书
python实现的web监控系统
2021/04/27 Python