57326


### 前提・実現したいこと

pythonでscapyを使用して受信されたパケットの内容を確認を行いたいのですが、  
raw.loadがバイナリデータ？のためテキスト形式への変換を行いたいです。

### python scapy ソースコード

[code]

    from scapy.all import *
    import scapy
    
    def print_summary(pkt):
        if IP in pkt:
            ip_src=pkt[IP].src
            ip_dst=pkt[IP].dst
        if TCP in pkt:
            tcp_sport=pkt[TCP].sport
            tcp_dport=pkt[TCP].dport
        if (ip_src == "スニッフしたい該当IPアドレス") or (ip_dst == "スニッフしたい該当IPアドレス"):
            print pkt[Raw].load
    
[/code]

### pkt.show()で取得できるResponse内容

[code]

    [ HTTP Response ]### 
                  Status-Line= 'HTTP/1.1 200 OK'
                  Accept-Ranges= None
                  Age       = None
                  E-Tag     = None
                  Location  = None
                  Proxy-Authenticate= None
                  Retry-After= None
                  Server    = 'Apache/2.2.21 (Unix) DAV/2 mod_ssl/2.2.21 OpenSSL/1.0.0c PHP/5.3.8 mod_apreq2-20090110/2.7.1 mod_perl/2.0.5 Perl/v5.10.1'
                  Vary      = 'Accept-Encoding,User-Agent'
                  WWW-Authenticate= None
                  Cache-Control= None
                  Connection= 'Keep-Alive'
                  Date      = 'Mon, 12 Aug 2019 07:28:45 GMT'
                  Pragma    = None
                  Trailer   = None
                  Transfer-Encoding= None
                  Upgrade   = None
                  Via       = None
                  Warning   = None
                  Keep-Alive= 'timeout=10, max=200'
                  Allow     = None
                  Content-Encoding= 'gzip'
                  Content-Language= None
                  Content-Length= '24'
                  Content-Location= None
                  Content-MD5= None
                  Content-Range= None
                  Content-Type= 'text/html'
                  Expires   = None
                  Last-Modified= None
                  Headers   = 'Content-Length: 24\r\nContent-Encoding: gzip\r\nX-Powered-By: PHP/5.3.8\r\nVary: Accept-Encoding,User-Agent\r\nKeep-Alive: timeout=10, max=200\r\nServer: Apache/2.2.21 (Unix) DAV/2 mod_ssl/2.2.21 OpenSSL/1.0.0c PHP/5.3.8 mod_apreq2-20090110/2.7.1 mod_perl/2.0.5 Perl/v5.10.1\r\nConnection: Keep-Alive\r\nDate: Mon, 12 Aug 2019 07:28:45 GMT\r\nContent-Type: text/html'
                  Additional-Headers= 'X-Powered-By: PHP/5.3.8\r\n'
    
    [ Raw ]### 
                     load      = '\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03+I-.\x01\x00\x0c~\x7f\xd8\x04\x00\x00\x00'
    
[/code]

上記レスポンスの最下部の

[code]

    load      = '\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03+I-.\x01\x00\x0c~\x7f\xd8\x04\x00\x00\x00'
    
[/code]

を変換したく、色々試したのですが、上手く行かないためご教授いただければ幸いです。  
ちなみにサーバーからは「test」の文字が送信されています。


CC BY-SA 4.0
2019-08-12T08:01:59.377
57314
2019-08-13T13:19:50.257
2019-08-12T12:46:38.883
3060
35434
question
python
pythonでscapyを使用してraw.loadの文字列を取得したい

[code]

    Content-Encoding= 'gzip'
    
[/code]

とあるようにgzip圧縮されているのでデコードしてやる必要があります。

以下はPython3.7、scapy2.4.3のREPLでのコード例です。

[code]

    >>> sys.version
    '3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 19:29:22) [MSC v.1916 32 bit (Intel)]'
    >>> load_layer("http")
    >>> resp=HTTPResponse()/b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03+I-.\x01\x00\x0c~\x7f\xd8\x04\x00\x00\x00'
    >>> data=gzip.GzipFile(fileobj=io.BytesIO(resp.load))
    >>> data.read()
    b'test'
    
[/code]


CC BY-SA 4.0
2019-08-13T02:06:13.913
57326
2019-08-13T13:19:50.257
2019-08-13T13:19:50.257
13199
13199
57314
answer