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端口扫描系统实现方法
Nov 19 Python
Python的Django框架中的数据库配置指南
Jul 17 Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 Python
python嵌套函数使用外部函数变量的方法(Python2和Python3)
Jan 31 Python
一道python走迷宫算法题
Jan 22 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
Jun 20 Python
Python无头爬虫下载文件的实现
Apr 02 Python
Django 解决开发自定义抛出异常的问题
May 21 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 Python
python opencv实现图像配准与比较
Feb 09 Python
python blinker 信号库
May 04 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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
用PHP生成静态HTML速度快类库
2007/03/18 PHP
PHP5 字符串处理函数大全
2010/03/23 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
php中日期加减法运算实现代码
2011/12/08 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
Node.js API详解之 querystring用法实例分析
2020/04/29 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
python在非root权限下的安装方法
2018/01/23 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
在pycharm中python切换解释器失败的解决方法
2018/10/29 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
Django中提示消息messages的设置方式
2019/11/15 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
Python接口测试get请求过程详解
2020/02/28 Python
职业生涯规划设计步骤
2014/01/12 职场文书
单位车辆管理制度
2015/08/05 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书