回答
“但它不会工作,因为原始数据包已经到达目的地。”
因此,首先您需要设置一些MiTM解决方案,以便两端之间的所有通信都通过您的设备,并让您修改分组数据。
这个功能/攻击的一些已知软件插件是ettercap和cain/abel。
iTayb,
看来你有兴趣进行代理使用Scapy的某种服务的?如果是这样的话?
业务的第一顺序是一些如何让数据包通过运行scapy的箱子。通过将远程机器上的网关设置为与scapy盒相匹配来实现此目的。如果这是针对某种笔式测试,则需要伪装一些mac地址。你可以用scapy使用arpcachepoison方法或者像ettercap这样的第三方程序来做到这一点。
完成此操作后,使用sniff()和send()函数的方法应该会更好一些,只需确保在到达发送部分之前更改数据包;)下面是一个小例子,说明如何做到这一点...在这里我只是改变IP头目标地址,但你可以改变任何你想要的。
from scapy import *
def chgSend(x):
x[IP].dst = '192.168.1.1'
send(x)
while 1:
sniff(prn=chgSend)
DC
我有同样的问题,
我认为这个问题是你已经启用IP_FORWARD所以原来的包转发到修改的数据包之前的原始目的是通过Scapy的发送。
Theorically,该解决方案是建立在iptables的转发要修改到另一个端口(这是多了还是少了什么Ettercap做internaly)什么的报文,
i.e = iptables -t nat -A PREROUTING -p tcp --destination-port "YourInterestingPort" -j REDIRECT --to-port 1234
然后在Scapy的听到该端口,修改数据包并将数据包发送到原始端口。
该解决方案难以实施,因为过滤的,你必须重定向和修改只所需的数据包,并排除SYN ACK ARP等..
如果要修改服务器的响应,一个更简单的方法就是不用动态地修改数据包,而是像中介一样行事。
- arpspoof
- ipatbles
打开插座,接收数据包,打开连接,并将其发送到原来的目的地一样,如果你是一个客户端和接收答案,修改答案,并将其返回给原来的查询者。
while True: c,addr = s_mb.accept()#建立与客户端的连接。 查询= c.recv(BUFFER_SIZE)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((IP, PORT)) s.send(PACKET) response = s.recv(1024) if response = "THIS IS THE RESPONSE THAT I WANT TO MODIFY": if(real_simulation): fakeresponse = "MODIFIED RESPONSE" #print "The packet has beeb modified" else: fakeresponse = response s.close() c.send(fakeresponse)
(对不起,我脏代码)
- 1. 用scapy改变数据包作为MITM
- 2. Python(scapy):如何嗅探只有outboun数据包的数据包
- 3. scapy不捕获任何数据包
- 4. 使用Scapy解析数据包字节
- 5. 使用Scapy来填充HTTP数据包
- 6. scapy不需要的RST TCP数据包
- 7. scapy数据包操作和原始pkt.time
- 8. Scapy无法分割IPv6数据包
- 9. scapy无法过滤某些数据包
- 10. 通过ttl Scapy过滤数据包?
- 11. 如何使用scapy创建GRE标头数据包
- 12. 如何使用Scapy过滤数据包的IP列表
- 13. 用Scapy发送数据
- 14. 从scapy检索LLMNR数据包的数据
- 15. Scapy:我如何获得完整的IP数据包头?
- 16. Scapy:如何访问自定义数据包的RAW
- 17. 如何在scapy中发送L2TP数据包?
- 18. 如何通过scapy发送FIN数据包来关闭连接?
- 19. 如何捕获您在Scapy中发送的数据包?
- 20. 如何从原始字节创建Scapy数据包
- 21. 如何更改数据库
- 22. ItemFileWriteStore:如何更改数据?
- 23. 如何使用winpcap修改数据包
- 24. 使用pcapy/impacket更改数据包数据
- 25. dojox.data.QueryReadStore。如何更改包含数据的数组的索引?
- 26. 如何使用angularjs multidropdown更改数据
- 27. 如何使用NSMutableDictionary更改数据?
- 28. 更改数据
- 29. 更改数据
- 30. 无法使用Scapy sendp发送MPTCP数据包()
我知道这是稍微大一点的线程,但类似的一个 - 你可以将输出数据包更复杂的方式?如在http有效负载中插入另一种http头,而不修改IP或TCP头。任何参考相关API等? – fayyazkl 2012-10-22 06:42:45
但是,当然,取决于您想要更改的内容可能涉及其他模块。例如,如果你想改变所有HTTP GET请求数据包的有效载荷,我将使用re解析头,然后相应地发送修改后的数据包。 – dc5553 2012-10-22 14:10:04
我实际上想要插入一个新的http头。这意味着覆盖最后的\ r \ n并添加更多的字段。 – fayyazkl 2012-10-22 17:36:13