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的struct模块中进行数据格式转换的方法
Jun 17 Python
Python简单实现TCP包发送十六进制数据的方法
Apr 16 Python
python读取与写入csv格式文件的示例代码
Dec 16 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
Python3操作Excel文件(读写)的简单实例
Sep 02 Python
python tkinter组件使用详解
Sep 16 Python
python编写微信公众号首图思路详解
Dec 13 Python
python程序需要编译吗
Jun 19 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
python绘制雷达图实例讲解
Jan 03 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 Python
用Python实现屏幕截图详解
Jan 22 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 file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
IE8 中使用加速器(Activities)
2010/05/14 Javascript
js+css在交互上的应用
2010/07/18 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
AngularJS  自定义指令详解及实例代码
2016/09/14 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
2020/04/22 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
Taro小程序自定义顶部导航栏功能的实现
2020/12/17 Javascript
Django框架中的对象列表视图使用示例
2015/07/21 Python
python 循环while和for in简单实例
2016/08/16 Python
Django REST framwork的权限验证实例
2020/04/02 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
如何用Python绘制3D柱形图
2020/09/16 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
南京某公司笔试题
2013/01/27 面试题
大学生旷课检讨书
2014/01/22 职场文书
物业保安岗位职责
2014/07/02 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang