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与js)两种实现
Feb 21 Python
详解Python中for循环是如何工作的
Jun 30 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
Python选择网卡发包及接收数据包
Apr 04 Python
Python读写文件基础知识点
Jun 10 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
Python实现RGB与HSI颜色空间的互换方式
Nov 27 Python
Django 解决开发自定义抛出异常的问题
May 21 Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 Python
python用700行代码实现http客户端
Jan 14 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 Python
python数字图像处理实现图像的形变与缩放
Jun 28 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
Twig模板引擎用法入门教程
2016/01/20 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
python实现数据图表
2017/07/29 Python
Python中super函数用法实例分析
2019/03/18 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
pandas的相关系数与协方差实例
2019/12/27 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
广告业务员岗位职责
2014/02/06 职场文书
职工趣味运动会方案
2014/02/10 职场文书
军训考核自我鉴定
2014/02/13 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
2015年上半年计生工作总结
2015/03/30 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
win10安装配置nginx的过程
2021/03/31 Servers
图文详解Nginx版本平滑升级方案
2021/09/15 Servers