python获取局域网在线主机_python通过scapy获取局域网所有主机mac地址示例

本文介绍了如何使用Python的Scapy库来扫描局域网,并获取所有主机的MAC地址。示例代码展示了通过发送ARP请求并捕获响应来收集信息的过程。
摘要由CSDN通过智能技术生成

python通过scapy获取局域网所有主机mac地址示例

发布于 2014-10-10 20:34:48 | 607 次阅读 | 评论: 0 | 来源: 网友投递

Python编程语言Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

本文为大家讲解了python通过scapy获取局域网所有主机mac地址示例代码,需要的朋友可以参考下

python通过scapy获取局域网所有主机mac地址代码:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from scapy.all import srp,Ether,ARP,conf

ipscan='192.168.1.1/24'

try:

ans,unans = srp(Ether(dst="FF:FF:FF:FF:FF:FF")/ARP(pdst=ipscan),timeout=2,verbose=False)

except Exception,e:

print str(e)

else:

for snd,rcv in ans:

list_mac=rcv.sprintf("%Ether.src% - %ARP.psrc%")

print list_mac

效果如图:

1156caee321232879c7196f3f8cfcf20.png

相关阅读:

python通过scapy获取局域网所有主机mac地址示例

python通过urllib2获取带有中文参数url内容的方法

Python通过PIL获取图片主要颜色并和颜色库进行对比的方法

python遍历类中所有成员的方法示例

python实现批量获取指定文件夹下的所有文件的厂商信息

python获取本机mac地址和ip地址的方法

python获取局域网占带宽最大3个ip的方法

Python语言实现获取主机名根据端口杀死进程

python通过pip更新所有已安装的包实现方法

Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例

python通过百度地图API获取某地址的经纬度详解

Python获取系统所有进程PID及进程名称的方法示例

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是使用Scapy库通过NBNS协议获取主机名称的示例代码: ``` from scapy.all import * def get_hostname(ip): name_query = Ether(dst='ff:ff:ff:ff:ff:ff')/IP(dst=ip)/UDP(dport=137)/NBNSQueryRequest(QUESTION_NAME='*') name_response = srp1(name_query, verbose=0) if name_response: return name_response[NBNSQueryResponse].RR_NAME else: return None hostname = get_hostname('192.168.1.1') if hostname: print(hostname) else: print('No hostname found') ``` ### 回答2: 使用PythonScapy库可以很方便地通过nbns协议获取主机名称。nbns(NetBIOS Name Service)是基于UDP的网络服务,用于在局域网中将NetBIOS名解析为IP地址。 以下是一个通过nbns协议获取主机名称的示例代码: ```python from scapy.all import * def get_hostname(ip): # 构造NBNS查询数据包 query_packet = Ether(dst="ff:ff:ff:ff:ff:ff") / IP(dst=ip) / UDP(dport=137, sport=RandShort()) / \ NBNSQueryRequest(NAME_TRN_ID=RandShort()) / NBNSQuestionName(Q_NAME='*') # 发送数据包并接收响应 response = srp1(query_packet, timeout=2, verbose=False) if response: if response.haslayer(NBNSQueryResponse): # 从响应数据包中获取主机名称 hostname = response[DNSRR].NAME.decode('utf-8') return hostname[:-1] # 移除末尾的点号 return None # 测试示例代码 hostname = get_hostname("192.168.0.1") if hostname: print(f"获取到的主机名称:{hostname}") else: print("无法获取主机名称") ``` 注意:在运行示例代码之前,请确保安装了Scapy库,并且具有管理员权限或者root权限,以便发送原始数据包。此外,示例代码中的目标IP地址需要根据实际情况进行修改。 ### 回答3: 使用PythonScapy库提供了一个通过nbns协议获取主机名称的示例代码。nbns协议是NetBIOS Name Service(NetBIOS名称服务)的简写,用于将NetBIOS名解析为IP地址。 下面是一个示例代码: ```python from scapy.all import * def get_host_name(ip): # 构建NetBIOS查询请求包 nbns_query = Ether(dst="ff:ff:ff:ff:ff:ff")/IP(dst=ip)/UDP(dport=137)/NBNSQueryRequest(NAME_TRN_ID=1,QUESTION_NAME='\x20'*33) # 发送并接收nbns查询请求包 response_packet = srp(nbns_query, timeout=2, verbose=False)[0] for packet in response_packet: # 解析响应包 if NBNSResourceRecord in packet and packet[NBNSResourceRecord].TYPE == 0x20: host_name = packet[NBNSResourceRecord].NAME.decode("utf-8").strip() return host_name # 调用示例函数 host_ip = "192.168.0.1" host_name = get_host_name(host_ip) print(f"主机IP地址为: {host_ip}") print(f"主机名称为: {host_name}") ``` 请注意,此示例代码假设您已经正确安装了Scapy库。运行代码时,需要将`host_ip`变量替换为实际的主机IP地址。代码中的主要部分是构建并发送nbns查询请求包,并解析响应包来获取主机名称。最后,将获取到的主机名称打印出来。 希望这个示例代码对您有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值