Python通过pysnmp和nmap获取netstat
来源:互联网 发布:深蓝航迹1985 知乎 编辑:程序博客网 时间:2024/06/13 00:13
最近在研究snmp协议,用Python的pysnmp模块编写了一段可以获取snmp协议中netstat的脚本,了解了一些pysnmp的用法。
0x01 安装pysnmp
>>> pip install pysnmp>>> import pysnmp()
0x02 pysnmp
def snmpget(printer_ip): cg = cmdgen.CommandGenerator() ##获得CommandGenerator对象 errorIndication, errorStatus, errorIndex, varBinds = cg.getCmd( cmdgen.CommunityData('server', 'public', 1), ## 扫描名称,扫描方式,版本号 cmdgen.UdpTransportTarget((printer_ip, 161)), ## 扫描IP,扫描端口 '.1.3.6.1.2.1.4.20.1.3.192.168.0.69' ## OID,此处表示获取子网掩码 ) subnet_mask = str(varBinds[0]).split('=')[1].strip() ##结果存在varBind()中 return subnet_mask
0x03 nmap
Python的nmap的使用方式与nmap的参数一样,初始化后直接输入语句即可。返回值为多重字典组成的json数据,使用在线json转换工具即可找到最终要找的目标值。
def Scan(): nm = nmap.PortScanner() result = nm.scan(hosts=target, arguments="-sU -p 161 --script=snmp-netstat") totle_list = str(result['scan'][target]['udp'][161]['script']['snmp-netstat']) try: if result['scan'][target]['udp'][161]['script']['snmp-netstat'] : f = open('test.txt', 'a+') f.write(time.strftime('%Y-%m-%d: %I:%M',time.localtime(time.time()))) f.write(str(result['scan'][target]['udp'][161]['script']['snmp-netstat'])) f.close() except (IOError, KeyError): pass pagehandler.close() return get_target_list(totle_list)
最后附上完整代码,这个脚本用来测试内网设备时候链接了外网:
import nmapimport timeimport urllibfrom pysnmp.entity.rfc3413.oneliner import cmdgendef snmpget(printer_ip): cg = cmdgen.CommandGenerator() ##获得CommandGenerator对象 errorIndication, errorStatus, errorIndex, varBinds = cg.getCmd( cmdgen.CommunityData('server', 'public', 1), cmdgen.UdpTransportTarget((printer_ip, 161)), '.1.3.6.1.2.1.4.20.1.3.192.168.0.69' ) subnet_mask = str(varBinds[0]).split('=')[1].strip() return subnet_maskdef Scan(target): nm = nmap.PortScanner() result = nm.scan(hosts=target, arguments="-sU -p 161 --script=snmp-netstat") scan_target = 'http://' + target pagehandler = urllib.urlopen(scan_target) totle_list = str(result['scan'][target]['udp'][161]['script']['snmp-netstat']) try: if result['scan'][target]['udp'][161]['script']['snmp-netstat'] : f = open('test.txt', 'a+') f.write(time.strftime('%Y-%m-%d: %I:%M',time.localtime(time.time()))) f.write(str(result['scan'][target]['udp'][161]['script']['snmp-netstat'])) f.close() except (IOError, KeyError): pass pagehandler.close() return get_target_list(totle_list)def get_target_list(totle_list): now_addr = '' check_ips = [] flag = 0 line = '' lines = [] for i in totle_list: if i != '\n': line = line + i else: lines.append(line) line = '' for i in range(len(lines)): if lines[i]: for j in range(28,45): try: now_addr += lines[i][j] except IndexError: continue check_ips.append(now_addr.split(':')[0]) now_addr = '' return check_ipsdef compare(subnet, printer_ip, target_list): flag = 1 target_temp = [] printer_mask = [0,0,0,0] target_mask_list = [] subnet_mask = subnet.split('.') printer = printer_ip.split('.') for i in range(4): printer_mask[i] = int(printer[i]) & int(subnet_mask[i]) for i in range(len(target_list)): target_mask = target_list[i].split('.') for i in range(len(target_mask)): try: target = int(target_mask[i]) & int(subnet_mask[i]) target_temp.append(target) except (ValueError, IndexError): continue target_mask_list.append(target_temp) target_temp = [] print target_mask_list, subnet_mask, printer_mask,target_list for i in range(len(target_mask_list)): if printer_mask != target_mask_list[i] and target_list[i]!='*' and target_list[i] != '0.0.0.0': print('Warning,target_ip:%s'%target_list[i]) flag = 0 if flag == 1: print 'Safe'def main(): while True: printer_ip = '192.168.0.69' subnet_mask = snmpget(printer_ip) target_list = Scan(printer_ip) compare(subnet_mask, printer_ip, target_list) time.sleep(300)if __name__ == '__main__': main()
阅读全文
0 0
- Python通过pysnmp和nmap获取netstat
- python利用pysnmp获取交换机级联接口
- tcpdump nmap netstat
- linux运维之ps、netstat、nmap和pmap
- netstat/lsof/nmap端口检测
- 用nmap获取ip和mac地址
- Python-nmap
- Python使用pysnmp发送snmp v2c 告警
- C# 通过分析netstat -an获取本机端口
- 网络端口查看命令-netstat/nmap
- 巧用python和libnmapd,一行代码提取Nmap扫描结果
- python 通过_getframe获取函数名行号和调用函数
- python 通过xml获取测试节点和属性
- python安装依赖modules pysnmp pyasn1.type pexpect configparser
- python nmap 使用
- python+nmap+端口扫描
- python nmap工具
- Python Nmap篇
- 判断一棵树是否是完全二叉树和求二叉树中两个节点的最近公共祖先——题集(十三)
- IDEA下SSM框架项目笔记三
- c++设计中可以利用析构函数避免泄露资源
- A+B for Input-Output Practice (V)
- JavaScript 代码检查工具对比
- Python通过pysnmp和nmap获取netstat
- 20170728
- POJ.3126 Prime Path (BFS)
- day16剑指offer---重建二叉树
- Eclipse下导入外部jar包的3种方式
- epoll回声Server端实现
- MySQL查看存储过程
- web 学习笔记17-Servlet侦听、过滤器、全站中文乱码
- LeetCode-1. Two Sum