2

ネットワーク トラフィックで https パケットを検出する必要があります。これまではすべての「443」を https としてマークしていましたが、この場合はポート情報を使用したくありません。

次のようなクライアントの hello メッセージを確認するだけで十分ですか。

//Check 22 and version info 0300 0301 or 0302
if (packet->payload[0] == 0x16 && packet->payload[1] == 0x03
  && (packet->payload[2] == 0x00 || packet->payload[2] == 0x01 || packet->payload[2] == 0x02)

{
    int temp = ntohs(get_u16(packet->payload, 3)) + 5;//Get lenght 
    //Check lenght is valid and 6th byte is client hello(which is 1)
    if (temp < packet->payload_length && temp > 50 && packet->payload[5]) == 1) 
        MARK AS HTTPS 
}

プロジェクトの設計上、複数のパケットをチェックすることはできません。上記のように client hello を確認するだけでよいかどうかアドバイスをお願いできますか?

4

1 に答える 1

1

プロジェクトの設計上、複数のパッケージをチェックすることはできません。上記のように client hello を確認するだけでよいかどうかアドバイスをお願いできますか?

「パッケージ」ではなく「パケット」を意味していると思います。ここで TCP を使用していることを考えると、断片化されたメッセージを再構築できることが不可欠です。単一のパケットでのみ動作するツールを使用している限り、(100% の確率で) 1 バイトより長いメッセージ コンテンツを確実に検出することは期待できません。これは、TCP 送信者がバイトを 1 つずつあなたにドリブルすることは完全に合法であるためです。

于 2013-04-24T14:06:15.323 に答える