ホームページ  >  記事  >  ウェブフロントエンド  >  Web ページのソース コードの取得に関する問題_html/css_WEB-ITnose

Web ページのソース コードの取得に関する問題_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-21 09:42:421450ブラウズ

gzip 復号化

質問:
shiffer を使用してパケットをキャプチャし、http パケットをキャプチャしました。幸いなことに、前の http はクリアテキストです。ただし、データ部分はGZIPで暗号化されています。インターネット上には、対応する暗号化機能と復号化機能があります。しかし、パッケージから傍受し、復号化のために関数に渡した情報は常に間違っていました。理由が分かりませんか?
Web ページを復号化する方法を知っている誰かが私にアイデアを与えてくれることを願っています。

ディスカッションへの返信(解決策)

これ。 。 。 。

これ。 。 。 。
私は善良な市民です

0rnrn で終わる場合は、チャンク化されている可能性があります。チャンク化されたデータ構造を理解する必要があります

通常、
長さ 1rn + データ ブロック 1rn + 長さ 2rn + データ ブロック 2rn + です。 .. + 0rnrn
対応するデータブロックには末尾のrn部分のバイト数は含まれません(16進数)。 各ブロックの長さは必ずしも同じである必要はありません。これらを結合して完全なファイルを形成します。rfc2616 標準には、この点に関する詳細な手順が記載されています。
たとえば、NetEase のホームページ http://www.163.com
gzip を送信すると、gzip+chunked が返されます。 *、html+chunked が返されます

別の例を挙げてみましょう


x04 rn abcd rn x10 rn efghijklmnopqrst rn 0 rnrn

chunked の最終的な解決策は次のとおりです:

abcdefghijklmnopqrst

別の例を挙げてみましょう

x04rnabcdrnx10rnefghijklmnopqrstrn0rnrn

決勝解決策 チャンクから得たものは次のとおりです:

abcdefghijklmnopqrst
データ パケットを取得しました。形式は gzip である必要があります。ただし、それらはすべて 16 進数です。では、この Web ページを復元するにはどうすればよいでしょうか?いつも失敗する。ありがとう。

もちろん、復元するにはプログラミング言語の解凍モジュールが必要です。それ以外の場合は、gzip アルゴリズムを自分で勉強する必要があります。

gzip の先頭は 1F 8B 08.これで始まるので、直接解凍してください。 解凍が間違っている場合は、完全に受信できていないはずです
ヘッダーの content-length で完了かどうか判断できます

末尾が 30 0D 0A の場合0D 0A の場合、それはチャンク化されます。上で述べたことによると、最初にデータ部分をデコードしてから、それが gzip
チャンク化されたデータであるかどうかを判断します。長さは固定されていないため、ヘッダーには長さの記述がありません。それが完了したかどうかは最後に依存します



それを復元する方法は、もちろんプログラミング言語の解凍モジュールが必要です。そうでない場合、私にはそれを解決するためにgzipアルゴリズムを勉強する必要があります

gzip の先頭が 1F 8B 08 で始まる場合は、直接解凍してください。解凍時にエラーがあった場合は、ヘッダーの content-length で完全かどうかを判断できます。
末尾が 30 0D 0A 0D 0A の場合は、チャンク化されています。まずデータ部分を解決してから、1 つであるかどうかを判断してください。

ありがとうございます。ちょっと調べてみます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。