성능 및 기능개선

scapy send request 샘플코드

movingJin 2024. 9. 19. 08:58
반응형
from scapy.all import *
from scapy.layers.inet import IP, TCP


def send_ack(_packet):
    ans = IP(dst=_packet[IP].src, flags='DF', ttl=128) / TCP(
        flags='A',
        sport=_packet[TCP].dport,
        dport=_packet[TCP].sport,
        window=513,
        seq=_packet[TCP].ack,
        ack=_packet[TCP].seq + len(_packet.load),
    )
    del ans[TCP].chksum
    send(ans, verbose=False)
    return "%s\n => %s" % (_packet[IP].summary(), ans.summary())


def send_packet():
    ip = IP(dst="118.32.227.130", flags='DF', ttl=128)
    sport = 51134
    seq = 450959127 + 21
    ack = 1838886019 + 30
    push_config = TCP(sport=sport, dport=46379, flags='PA', window=513, seq=seq, ack=ack)
    request_data = "*2\r\n$4\r\nkeys\r\n$1\r\n*\r\n"
    del push_config.chksum
    resp = sr1(ip / push_config / request_data)

    sniff_filter = ("host 118.32.227.130 and tcp src port 46379 and tcp[tcpflags] & (tcp-push|tcp-ack) == ("
                    "tcp-push|tcp-ack)")
    rpc_response = sniff(filter=sniff_filter, count=1, prn=send_ack)
    print(rpc_response[0].load)


if __name__ == "__main__":
    send_packet()
반응형