jak dodać nagłówki http do pakietu wąchanego za pomocą scapy
Próbuję wyczuć przechodzenie pakietu http za pomocą scapy, dodać kilka nowych nagłówków http i wysłać go dalej. Zamiarem jest tu wstawienie tylko nowych nagłówków przy zachowaniu nienaruszonego pakietu. W razie potrzeby należy ponownie obliczyć sumę kontrolną.
Przeszliśmy przez prawie wszystkie pytania dotyczące SO, ale nie dostałem rozwiązania.
Oto co zrobiłem.
def parse(pkt):
if pkt.haslayer(TCP) and pkt.getlayer(TCP).dport == 80 and pkt.haslayer(Raw):
pkt = pkt / "New Header:value\r\n\r\n"
# OR i tried this
#pkt = pkt.getlayer(Raw).load / Raw.load(load="New Header:value\r\n\r\n")
#pkt.getlayer(Raw).load("New Header:value\r\n\r\n")
pkt.show()
#del pkt[IP].chksum
send(pkt)
#end parse function
# start sniffing
a=sniff(filter="tcp and ( port 80 )", prn=parse)
Problem polega na tym, że powyższy kod wstawia nową surową sekcję ładunku zamiast dodawać zwykły nagłówek. Istnieje już podwójna nowa linia r n, aby wskazać zakończenie nagłówka zgodnie ze standardem HTTP.
Aby przezwyciężyć ten problem, próbowałem usunąć ostatnie n, wykonując następujące czynności
#pkt = pkt.getlayer(Raw).load[-2:] / Raw.load(load="New Header:value\r\n\r\n")
Ale to usuwa wszystkie wcześniej istniejące nagłówki i pozostaje tylko „Nowy nagłówek”.
Próbowałem tego na mennicy Linuksa.
UPDATE: Próbuję utworzyć nowy ładunek http, który zawierałby poprzednie nagłówki i dodam kilka. Czy może pomóc w usunięciu istniejącej warstwy?