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版本坑:md5例子(python2与python3中md5区别)
Jun 20 Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 Python
小白入门篇使用Python搭建点击率预估模型
Oct 12 Python
详解解决Python memory error的问题(四种解决方案)
Aug 08 Python
tensorflow 实现自定义layer并添加到计算图中
Feb 04 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
python代码xml转txt实例
Mar 10 Python
Python实现的北京积分落户数据分析示例
Mar 27 Python
jupyter notebook 多环境conda kernel配置方式
Apr 10 Python
解决python中import文件夹下面py文件报错问题
Jun 01 Python
Python常驻任务实现接收外界参数代码解析
Jul 21 Python
python 实时调取摄像头的示例代码
Nov 25 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 动态生成静态HTML页面示例代码
2014/01/15 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
JS实现页面超时后自动跳转到登陆页面
2015/01/19 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
Node.js实现文件上传的示例
2017/06/28 Javascript
vue axios用法教程详解
2017/07/23 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
基于JavaScript中标识符的命名规则介绍
2018/01/06 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
pytorch 可视化feature map的示例代码
2019/08/20 Python
python多线程同步之文件读写控制
2021/02/25 Python
如何获取Python简单for循环索引
2019/11/21 Python
Django权限设置及验证方式
2020/05/13 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
纯css3(无图片/js)制作的几个社交媒体网站的图标
2013/03/21 HTML / CSS
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
应届生服务员求职信
2013/10/31 职场文书
毕业自我评价范文
2013/11/17 职场文书
九年级科学教学反思
2014/01/29 职场文书
元旦获奖感言
2014/03/08 职场文书
安全生产计划书
2014/05/04 职场文书
南京青奥会口号
2014/06/12 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书