1

scapy を使用して完全な HTTP セッションを実行しようとしています。つまり、手動で 3 ウェイ ハンドシェイク、GET 要求、必要に応じて確認応答を実行して HTML ファイルを受信し、接続を終了したいと考えています。[1] を使用して、スリーウェイ ハンドシェイクと GET 要求を完了しましたが、サーバーから送信された生の HTML パケットをキャプチャできないようで、明らかに ack パケットを返信できません。何か案は?

さらに、最終的には生のパケットを HTML 用に解析できるようにしたいと考えています。スカピーパケットからそれを行う方法を誰かが知っていれば、私はそれを感謝します.

[1] http://www.thice.nl/creating-ack-get-packets-with-scapy/

4

1 に答える 1

2

ジンビ、

私は仕事をしていて、現在scapyで接続を解析することしかできず、開始することはできません。だから私はあなたの2番目の要求に対処します。私がここで提供したようなものを見ています。htmlとhttpリクエストを含むレイヤーは(Raw).loadです。パケットにhtmlまたはhttpリクエストが含まれている場合は、最初にレイヤーが存在するかどうか(haslayer)をテストし、次にパケットが'httpパケットであるかどうかをテストします。 「ここでは、IFステートメントで80をチェックするだけですが、スニフネットフィルターのポートを使用できる可能性があります。このスニペットには、ネットワークから直接スニッフィングするか、pcapをプルするオプションが含まれています(ポートの調整など)。非標準を使用している場合)

#!/usr/bin/python -tt

from scapy import *
import sys

def parse(pkt):
    if pkt.haslayer(TCP) and pkt.getlayer(TCP).dport == 80 and pkt.haslayer(Raw):
        print pkt.getlayer(Raw).load

if '-l' in sys.argv:
    sniff(prn=parse)

else:
    pkts = rdpcap(sys.argv[1])
    for pkt in pkts:
       parse(pkt)

もちろん、これを出発点として使用すると、8行目を調整して、dportだけでなくスポーツなどもピックアップできます。これが役に立ったかどうか教えてください。幸運を祈ります!

PSは以下を変更します

from scapy import *

from scapy.all import *

バージョンによって異なります。

于 2012-04-18T08:45:28.603 に答える