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写的创建文件夹自定义函数mkdir()
Aug 25 Python
Python数据结构之翻转链表
Feb 25 Python
Python入门之后再看点什么好?
Mar 05 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
详解django+django-celery+celery的整合实战
Mar 19 Python
使用Python3内置文档高效学习以及官方中文文档
May 19 Python
Python pandas用法最全整理
Aug 04 Python
Python字节单位转换实例
Dec 05 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
Dec 23 Python
python 中不同包 类 方法 之间的调用详解
Mar 09 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
May 15 Python
Python+Appium自动化测试的实战
Jun 30 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下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
php将html转为图片的实现方法
2017/05/19 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
PyQt5实现下载进度条效果
2018/04/19 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
Python的几种主动结束程序方式
2019/11/22 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
如何教少儿学习Python编程
2020/07/10 Python
用python批量移动文件
2021/01/14 Python
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
大学生自我评价怎样写好
2013/10/23 职场文书
护理个人求职信范文
2014/01/08 职场文书
社区工作者思想汇报
2014/01/13 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书
检讨书之工作不认真
2019/08/14 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
Python代码实现双链表
2022/05/25 Python