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之使用Python操作数据库(1)
Nov 25 Python
详解Django中Request对象的相关用法
Jul 17 Python
十个Python程序员易犯的错误
Dec 15 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
利用Python暴力破解zip文件口令的方法详解
Dec 21 Python
python如何通过实例方法名字调用方法
Mar 21 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 Python
python分布式爬虫中消息队列知识点详解
Nov 26 Python
常用的Python代码调试工具总结
Jun 23 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
PHP如何解决网站大流量与高并发的问题
2011/06/25 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
PHP实现简单登录界面
2019/10/23 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
vuejs如何配置less
2017/04/25 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
Python输入二维数组方法
2018/04/13 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
python实现人工蜂群算法
2020/09/18 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
幼儿园长自我鉴定
2013/10/17 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
教师政风行风评议心得体会
2014/10/21 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python