netaddr模块

netaddr模块的一些基本用法:

In [1]: from netaddr import *
In [2]: ip = IPAddress(‘172.16.100.39‘)
In [3]: ip.
ip.bin             ip.is_hostmask     ip.is_netmask      ip.packed
ip.bits            ip.is_ipv4_compat  ip.is_private      ip.reverse_dns
ip.format          ip.is_ipv4_mapped  ip.is_reserved     ip.sort_key
ip.info            ip.is_link_local   ip.is_unicast      ip.value
ip.ipv4            ip.is_loopback     ip.key             ip.version
ip.ipv6            ip.is_multicast    ip.netmask_bits    ip.words
In [3]: ip.
ip.bin             ip.is_hostmask     ip.is_netmask      ip.packed
ip.bits            ip.is_ipv4_compat  ip.is_private      ip.reverse_dns
ip.format          ip.is_ipv4_mapped  ip.is_reserved     ip.sort_key
ip.info            ip.is_link_local   ip.is_unicast      ip.value
ip.ipv4            ip.is_loopback     ip.key             ip.version
ip.ipv6            ip.is_multicast    ip.netmask_bits    ip.words
In [3]: ip.version
Out[3]: 4
In [4]: ip.format
Out[4]: <bound method IPAddress.format of IPAddress(‘172.16.100.39‘)>
In [5]: ip.format()
Out[5]: ‘172.16.100.39‘
In [6]: repr(ip)
Out[6]: "IPAddress(‘172.16.100.39‘)"
In [7]: int(ip)
Out[7]: 2886755367
In [8]: ip.bits()
Out[8]: ‘10101100.00010000.01100100.00100111‘
In [9]: ip.words
Out[9]: (172, 16, 100, 39)
In [10]: ip = IPNetwork(‘172.16.100.39/24‘)
In [11]: ip.
ip.broadcast       ip.is_ipv4_compat  ip.iter_hosts      ip.size
ip.cidr            ip.is_ipv4_mapped  ip.key             ip.sort_key
ip.first           ip.is_link_local   ip.last            ip.subnet
ip.hostmask        ip.is_loopback     ip.netmask         ip.supernet
ip.info            ip.is_multicast    ip.network         ip.value
ip.ip              ip.is_private      ip.next            ip.version
ip.ipv4            ip.is_reserved     ip.prefixlen
ip.ipv6            ip.is_unicast      ip.previous
In [11]: ip.network
Out[11]: IPAddress(‘172.16.100.0‘)
In [12]: ip.broadcast
Out[12]: IPAddress(‘172.16.100.255‘)
In [13]: ip.ip
Out[13]: IPAddress(‘172.16.100.39‘)
In [14]: ip.size
Out[14]: 256
In [15]: ip.net
ip.netmask  ip.network
In [15]: ip.netmask
Out[15]: IPAddress(‘255.255.255.0‘)
In [16]: ip.hostmask
Out[16]: IPAddress(‘0.0.0.255‘)
In [17]: ip.pr
ip.prefixlen  ip.previous
In [17]: ip.prefixlen
Out[17]: 24

下面是netaddr结合python-nmap实现的端口扫描程序:

[[email protected] ~]# yum install -y nmap # 安装nmap
[[email protected] ~]# pip install python-nmap  # 安装python-nmap模块

[[email protected] home]# cat nmap_test.py  # 扫描同网段机器的端口

from netaddr import *
import nmap

ip = ‘192.168.141.2‘
prefix = ‘24‘

ipn = IPNetwork(ip+‘/‘+prefix)
network = str(ipn.network)

hosts = network+‘/‘+prefix
port= ‘22-443‘

try:
	nm = nmap.PortScanner()
except  nmap.PortScannerError:
	print(‘Nmap not found‘, sys.exc_info()[0])
	sys.exit(0)

except:
	print(‘Nmap not found‘, sys.exc_info()[0])
	sys.exit(0)

nm.scan(hosts, port)

for host in nm.all_hosts():
	print("---------------------------")
	print("Host : %s" % (host))
	print("State : %s" % nm[host].state())

	for proto in nm[host].all_protocols():
		print("----------------")
		print("Protocol : %s" % proto)

		lport = nm[host][proto].keys()
		lport.sort()
		for port in lport:
			print(‘port : %s\tstate : %s‘ % (port, nm[host][proto][port][‘state‘]))

[[email protected] home]# python nmap_test.py   # 执行结果
---------------------------
Host : 192.168.141.17
State : up
----------------
Protocol : tcp
port : 22	state : open
port : 80	state : open
port : 111	state : open
---------------------------
Host : 192.168.141.2
State : up
----------------
Protocol : tcp
port : 22	state : open
port : 80	state : open
---------------------------
Host : 192.168.141.26
State : up
----------------
Protocol : tcp
port : 22	state : open
port : 111	state : open
---------------------------
Host : 192.168.141.28
State : up
----------------
Protocol : tcp
port : 22	state : open
port : 53	state : open
port : 80	state : open
port : 111	state : open
---------------------------
Host : 192.168.141.30
State : up
----------------
Protocol : tcp
port : 22	state : open
port : 80	state : open
port : 111	state : open

参考链接

http://xael.org/pages/python-nmap-en.html

时间: 2024-08-29 02:43:44

netaddr模块的相关文章

python学习之udp扫描内网存活主机

一:UDP协议是非面向连接的协议,不同于TCP扫描依赖于建立连接过程,因此UDP扫描是不可靠的  udp主机扫描原理:利用ICMP端口不可达报文进行扫描 当发送一个udp数据包到主机的某个关闭端口上时,目的主机会返回一个ICMP包指示目标端口不可达,这样意味着主机是存活的 优点:可以完成对UDP端口的探测.    缺点:需要系统管理员的权限.扫描结果的可靠性不高.因为当发出一个UDP数据报而没有收到任何的应答时,有可能因为这个UDP端口是开放的,也有可能是因为这个数据报在传输过程中丢失了,所以要

python udp sniffer主机发现工具

思想: 基于udp协议向遍历子网内所有ip地址,发送udp数据包到一个关闭的端口(你认为可能关闭的端口,如不放心可指定多个),如果受到回应的ICMP包说明此主机存在.udp发送数据包开销比较小.可以在此基础上增减namp调用的功能,完整扫描发现的主机上的端口. 使用的python模块:netaddr,socket,ctypes,struct,threading,time,os #!/usr/bin/pythonfrom netaddr import IPAddress,IPNetworkimpo

Day5 - 常用模块学习

本节大纲: 模块介绍(模块导入方法) time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一堆代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又

c# 无法加载xxx.dll 找不到指定的模块(如何指定文件夹)

如果直接放在项目运行目录,例如bin/debug可以直接加载,但是这样比较乱. 如果在放debug里面的一个文件夹里面,有可能会报错“无法加载xxx.dll 找不到指定的模块”. 如果路径写成这样就会报错 framework/linphone 解决方法:将/ 改成"\" framework\linphone

LEDAPS1.3.0版本移植到windows平台----HuCsm云掩膜模块

这个是2012年左右放在百度空间的,谁知百度空间关闭...转移到博客园. 最近项目用到3.1.2版本的LEDAPS,新版本的使用情况会在后续文章中慢慢丰富. HuCsm是将LEDAPS项目中的TM/ETM+大气校正流程系列算法中的云掩膜模块由linux系统移植到windows下的产物,代码本身改动不大,使用接口不变. 包含文件: HuCsm.exe hd423m.dll hm423m.dll 编译程序需要包含的静态库有: gctp.lib hdfeos.lib hd423m.lib hm423m

Python学习系列----第五章 模块

5.1 如何引入模块 在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入.在调用math模块中的函数时,必须这样引用: 模块名.函数名 有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以通过语句 from 模块名 import 函数名1,函数名2.... 5.2 如何定义自己的模块 在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字. 比如有这样一个文件test.py

Python:hashlib加密模块,flask模块写登录接口

hashlib模块 主要用于加密相关的操作,(比如说加密字符串)在python3的版本里,代替了md5和sha模块,主要提供 sha1, sha224, sha256, sha384, sha512 ,md5 这些加密方式 import  hashlib m = hashlib.md5()   #用md5加密的方式(md5加密后无法解密),创建一个md5的对象 m.update(b"Hello")  #b代表二进制字节bytes,把字符串hello转成字节,然后加密:用b给一个变量转换

python如何使用pymysql模块

Python 3.x 操作MySQL的pymysql模块详解 前言pymysql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而MySQLdb不支持3.x版本. 一.安装 pip3 install pymysql 二.pymysql方法 pymysql.connect()参数说明 参数 类型 说明 host str mysql服务器地址 port int mysql服务器端口号 user str 用户名 passwd str

微控工具xp模块-开发版[微信(wechat)二次开发模块]

http://repo.xposed.info/module/com.easy.wtool 微控工具xp模块-开发版[微信(wechat)二次开发模块] 基于xposed框架的微信二次开发模块,方便开发者用微信做一些扩展功能(如微信群发.多群直播等...) 目前支持功能: 发文本消息 发图片消息 发语音消息 发视频消息 获取微信好友列表 群列表 支持群发消息 支持消息转发(目前支持文本.图片.语音.视频.图文消息转发) 群管理功能(建群.加人.踢人.设置公告.改群名.退群.解散群) [注:本模块