aHR0cHMlM0EvL3d3dy5ocmRqeXVuLmNvbS8lM0YlMjMvYW5jaG9yTGlzdA==
変えてほしいと言われましたが、最近は特別な時期が近づいていてとても忙しいです。
現在、このWebサイトの暗号化は比較的簡単なので、簡単に修正できます。
まず、分析が必要なリクエストを確認します
キャプチャする必要があるのはアンカートラフィックデータであり、パケットキャプチャ分析を通じて次のリクエストを見つけることができます
リクエストヘッダーには、暗号化された2つのパラメータ token
と sign
があります
これら2つのパラメータの分析は、パラメータ名の取得と xhr
ブレークポイントの2つの方法で分析できます。ここでは、パラメータ名を簡単に取得しましょう。
初心者の方は、
xhr
ブレークポイントの分析方法を使用して、パラメーター名分析によって暗号化された場所を特定し、自分で試してスタックの分析について考えることができます。
:
が追加されているかどうかに関係なく、 sign
を直接取得します。結果は非常に多く、
したがって、前述の方法を試してください
暗号化されたパラメータ名を取得し、結果が多い場合は、リクエストの他のパラメータ名を取得することで分析して見つけることができます。通常、それらは一緒に送信されるため、通常は一緒に書き込まれます。
したがって、パラメータ tenant
を取得すると、結果がほとんどなく、貴重な結果も明らかであることがわかります。
2番目の結果に再度配置すると、必要な結果を確認できます
ブレークポイントに到達し、検証の推測を再度更新します
ブレークポイントが正常に解除されたことがわかります
簡単に分析してみましょう
変数 f
はパラメーター sign
であり、その暗号化は V(pe(be(h))+"&accessSecret = 800006 ")。toUpperCase();
によって取得されます。
パラメータ token
の結果は、c ["a"]。globalData.token;
によって取得されます。
これで、実行された関数が差し引かれている限り、実行できればパラメーターの生成を完了することができます。
パラメータ token
を見てみましょう
名前から判断すると、このパラメータはグローバル変数ですが、検索したところ、このパラメータには検索結果がなく、何度も更新しても変化がないことがわかりました。
テストのために他のブラウザに切り替えましたが、このパラメータの値は何度も更新しても変化しなかったため、このパラメータはアカウントとブラウザ環境の組み合わせによって生成された識別子である可能性があります。これは単なるブラフであり、固定値として扱われます。いいです
パラメータ sign
を見てください
その暗号化は V(pe(be(h))+"&accessSecret = 800006 ")。toUpperCase();
によって取得されていることがわかりますので、段階的に見ていきましょう。
最初の実行は be(h)
です
特別な操作はないようですので、確認してみましょう
pe(be(h)
の検証を続けます
pe
が=
を使用してパラメータをつなぎ合わせていることがわかります
引き続き V()
を見てください。この時点で渡されるパラメーターは、 days = 3&accessSecret = 800006
です。
同時に、それを X(Q(K(e)))
のコードに渡し、デバッグを続けます
同時に console
を使用してデバッグを支援します
メソッド K
はパラメータを CharCode
に変更します
ここでは、パラメータが英語と数字で構成されているため、変更はありません。
次に、メソッド Q
の分析を続けます。console
の補助デバッグ結果は、 Q
が一連のビット操作も実行することを示しています。
私はそれが何であるかを分析しませんでした、ただそれを選んでください
Q
の結果を得た後、 X
を見てください
ここでの W
は固定値 0
です
コードを直接インポートすると、次の結果が得られます。
ブラウザと同じ結果が表示されます
大文字に変換した後は、送信されたリクエストとまったく同じです。
次に、 Python
スクリプトを直接渡します
さて、今日はこれでおしまいです。次回も会いましょう〜
[ 終了]
Recommended Posts