В) Перехватывайте пакеты, идущие на сервер, с помощью Wireshark и напишите клиентскую программу, которая будет использовать файл Wireshark pcap и воспроизводить то же самое на сервере. Сохраните запрос/ответ в другой файл.
Теперь я знаю, как перехватывать пакеты с помощью файла pcap, но у меня возникли проблемы с подключением к серверу. Пожалуйста, может ли кто-нибудь предоставить полное решение с использованием Pythons Библиотека Scapy и pyshark.
Код: Выделить всё
import pyshark
from scapy.all import *
import time
def read_pcap(file):
cap = pyshark.FileCapture(file)
packets = []
for packet in cap:
packets.append(packet)
return packets
def replay_packets(packets, server_ip, server_port):
responses = []
for packet in packets:
try:
# Convert PyShark packet to Scapy packet
scapy_pkt = IP(raw(packet.get_raw_packet()))
# Change destination IP and port to the server
scapy_pkt[IP].dst = server_ip
scapy_pkt[UDP].dport = server_port
# Send packet and capture response
response = sr1(scapy_pkt, timeout=2)
responses.append(response)
# Wait a bit between packets to mimic real traffic
time.sleep(0.1)
except Exception as e:
print(f"Error processing packet: {e}")
return responses
def dump_to_file(requests, responses, file):
with open(file, 'w') as f:
for req, resp in zip(requests, responses):
f.write(f"Request: {req}\nResponse: {resp}\n\n")
def main():
input_pcap_file = 'current.pcap'
output_file = 'output.txt'
server_ip = '123.56.8.0'
server_port = 80
packets = read_pcap(input_pcap_file)
requests = [packet.get_raw_packet() for packet in packets]
responses = replay_packets(packets, server_ip, server_port)
dump_to_file(requests, responses, output_file)
print("Finished processing packets.")
if __name__ == "__main__":
main()
Подробнее здесь: https://stackoverflow.com/questions/788 ... -pcap-file