2016-09-29 4 views
0

나는 HTTP 헤더를 얻을이 코드 조각을 썼다 및 호스트 설정 : 새 호스트 이름이 올바르게 설정되어있는 afforementioned 코드를 실행 한 후Scapy : http 헤더에서 호스트를 조작하는 방법은 무엇입니까?

http_layer = packet.getlayer(http.HTTPRequest).fields 
http_layer['Host'] = "newHostName" 
return packet 

을하지만, 문제는 내가 PCAP의 패킷을 쓸 때 파일, 난 아직도 HTTP 필드에 이전 호스트를 볼 http_layer['Host']을 조작하는 절대적인 방법이 있습니까? 도움이 될 것입니다. 감사합니다.

답변

0

결국 답을 찾았습니다. 열쇠는 scapy이 먼저 HTTP Request을 구문 분석하고 해당 필드의 사전을 보여줍니다. 따라서 Host과 같은 새 필드를 할당하려고하면 이미 구문 분석 된 Host이 변경되고 원래 필드 값은 변경되지 않습니다. 이렇게하면 Host 또는 다른 필드를 수정할 수 있습니다.

str_headers = pkt['HTTP']['HTTP Request'].fields['Headers'] 
str_headers = str_headers.replace('Host: ' + pkt['HTTP']['HTTP Request'].fields['Host'], 'Host: ' + new_val) 
pkt['HTTP']['HTTP Request'].fields['Headers'] = str_headers 
return pkt 
관련 문제