python基础教程之udp端口扫描


Posted in Python onFebruary 10, 2014

一、概述
任务描述:
开发一个程序,用于获取局域网中开启snmp服务的主机ip地址列表,并写入相应文件以便其它程序使用。
背景知识:
SNMP是基于UDP的,而且标准的SNMP服务使用161和162端口。
思路:
1、获取局域在线主机列表;
2、获取各个主机的snmp端口(比如161)开启状况;
3、以特定格式写入特定文件。
这里只实现前两步。

二、nmap实现
1、安装nmap
Linux平台(CentOS为例):

yum install nmap -y    
widows平台(下载地址):
http://nmap.org/download.html#windows

2、获取在线主机列表
以192.168.1.0/24网段为例:

nmap -sn 192.168.1.0/24  
或者指定ip范围扫描:

nmap -sn 192.168.1.1-254  
参数解释:
-sn: Ping扫描,只进行主机发现,不进行端口扫描。

3、获取主机端口开启状况
以192.168.1.100为例

nmap -p 161 -sU 192.168.1.100  
参数解释:

-p 161 : 扫描161端口  
-sU    : 进行UDP扫描   
nmap返回结果:

open            :   开放
closed          :   关闭
filtered        :   端口被防火墙IDS/IPS 屏蔽,无法确定其状态
unfiltered      :   端口没有被屏蔽,但是否开放需要进一步确定
open|filtered   :   端口是开放的或被屏蔽
closed|filtered :   端口是关闭的或被屏蔽
4、nmap捷径

扫描192.168.1.0/24网段的161端口如下: 
nmap -p 161 -sU 192.168.1.0/24  
三、python实现(借助python-nmap)
nmap的返回值有很多数据,需要自行写程序进行解析,比如对192.168.1.100的161端口进行扫描的结果:

Nmap scan report for 192.168.1.100
Host is up (0.00024s latency).
PORT    STATE  SERVICE
161/udp closed snmp
MAC Address: 10:BF:5A:6A:BA:48 (Unknown)
这里有个python开发的nmap解析库,原理是调用nmap命令,并对其结果进行解析,返回python能识别的数据结构:
名称 : python-nmap
url : http://xael.org/norman/python/python-nmap/python-nmap-0.1.4.tar.gz

示例(扫描局域网各个主机的snmp服务开启状况):

#! /usr/bin/python
import nmap 
nm = nmap.PortScanner()
nm.scan(hosts='192.168.1.0/24', arguments='-p 161 -sU ')
hosts_list = [(x, nm[x][u'udp'][161]['state']) for x in nm.all_hosts()]
for host, status in hosts_list:
    print('{0}:{1}'.format(host, status))
Python 相关文章推荐
Python中运行并行任务技巧
Feb 26 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
解决python Markdown模块乱码的问题
Feb 14 Python
在Django的View中使用asyncio的方法
Jul 12 Python
python标记语句块使用方法总结
Aug 05 Python
Python使用psutil获取进程信息的例子
Dec 17 Python
win10下python2和python3共存问题解决方法
Dec 23 Python
python+gdal+遥感图像拼接(mosaic)的实例
Mar 10 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
Apr 26 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 Python
Python Pytorch查询图像的特征从集合或数据库中查找图像
Apr 09 Python
python网页请求urllib2模块简单封装代码
Feb 07 #Python
python解析xml模块封装代码
Feb 07 #Python
python 解析XML python模块xml.dom解析xml实例代码
Feb 07 #Python
python合并文本文件示例
Feb 07 #Python
python实现哈希表
Feb 07 #Python
python处理cookie详解
Feb 07 #Python
urllib2自定义opener详解
Feb 07 #Python
You might like
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
php email邮箱正则
2008/10/08 PHP
php购物网站支付paypal使用方法
2010/11/28 PHP
thinkphp 多表 事务详解
2013/06/17 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
JavaScript之自定义类型
2012/05/04 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
js实现数字跳动到指定数字
2020/08/25 Javascript
Python实现购物车购物小程序
2018/04/18 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
python next()和iter()函数原理解析
2020/02/07 Python
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
酒吧员工的岗位职责
2013/11/26 职场文书
金融管理应届生求职信
2014/02/20 职场文书
聚美优品的广告词
2014/03/14 职场文书
安全生产管理责任书
2014/04/16 职场文书
2014年纠风工作总结
2014/12/08 职场文书
大学运动会通讯稿
2015/07/18 职场文书
企业安全生产检查制度
2015/08/06 职场文书
创业计划书之酒厂
2019/10/14 职场文书
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python