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使用rabbitmq实现网络爬虫示例
Feb 20 Python
详解使用python crontab设置linux定时任务
Dec 08 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
Python命令行解析模块详解
Feb 01 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
python实现图片识别汽车功能
Nov 30 Python
python爬虫爬取微博评论案例详解
Mar 27 Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 Python
Numpy一维线性插值函数的用法
Apr 22 Python
解决Opencv+Python cv2.imshow闪退问题
Apr 24 Python
keras 自定义loss model.add_loss的使用详解
Jun 22 Python
Node.js 和 Python之间该选择哪个?
Aug 05 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中大括号作用介绍
2012/03/22 PHP
php中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
2015/09/22 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
JavaScript常用内置对象用法分析
2019/07/09 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
给排水专业应届生求职信
2013/10/12 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
先进单位事迹材料
2014/12/25 职场文书
前台岗位职责
2015/02/13 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
Python实现简单的猜单词
2021/06/15 Python
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis