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 client使用http post 到server端的代码
Feb 10 Python
用Python实现一个简单的能够发送带附件的邮件程序的教程
Apr 08 Python
python读取word文档的方法
May 09 Python
Python读取MRI并显示为灰度图像实例代码
Jan 03 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
python 字符串只保留汉字的方法
Nov 16 Python
python登录WeChat 实现自动回复实例详解
May 28 Python
django 信号调度机制详解
Jul 19 Python
pycharm无法导入本地模块的解决方式
Feb 12 Python
python实现随机加减法生成器
Feb 24 Python
OpenCV Python实现拼图小游戏
Mar 23 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
Jan 07 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中几种常见安全设置详解
2010/04/06 PHP
php实现用户在线时间统计详解
2011/10/08 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
PHP实现今天是星期几的几种写法
2013/09/26 PHP
跟我学Laravel之视图 & Response
2014/10/15 PHP
php验证码实现代码(3种)
2015/09/07 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
ASP Json Parser修正版
2009/12/06 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
php中and 和 &&出坑指南
2018/07/13 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
python实现多线程暴力破解登陆路由器功能代码分享
2015/01/04 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
python实现复制整个目录的方法
2015/05/12 Python
Django入门使用示例
2017/12/12 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
Django 再谈一谈json序列化
2020/03/16 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
送给程序员的20个Java集合面试问题
2014/08/06 面试题
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
云台山导游词
2015/02/03 职场文书
体育委员竞选稿
2015/11/21 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python