Pythonクローラーアドバンストエッセンシャル|財務情報ウェブサイトの署名暗号化ロジック分析(旧サイトの更新)

今日のウェブサイト

aHR0cHMlM0EvL3d3dy5jbHMuY24vdGVsZWdyYXBo

このウェブサイトは、Jsリバースエンジニアリンググループの学生によって提案されました。このウェブサイトの暗号化と復号化はすでにケースを書いています。暗号化が変更されたと聞いたので、時間をかけて分析を書きました。

(上記の暗号テキストの文字列はBase64でデコードできます)

パケットキャプチャと暗号化の配置

Webサイトを開き、同時にパケットキャプチャを開きます。すべてのXHR要求には、符号暗号化パラメータが含まれています。

検索パラメータの結果はたくさんあるので、次のようにXHRブレークポイントに直接ヒットします。

しばらくすると自動的に切断されます

Webサイトが壊れたときに、このパラメーターが生成されている場合は、スタックを見つけて、スタックを検索する必要があります。

だから、手順を台無しにしないでください

このパラメータの場所を見つける方法について心配する必要はありません。数回のデバッグの後で確認できます。下の図でマークされている場所は、記号が生成される場所です。

パラメータ暗号化分析

ここでのpの論理は少し複雑に見えます

p = r ?l({},b(l({}, r)),{sign:g(l({}, r))}):{sign:g("")}

実際、これは3値式です。このロジックがどのように実行されるかがわからない場合は、以前に推奨されたJsチュートリアルのいくつかを読むことができます。ここでこれについて心配する必要はありません。

ここでの主なロジックは次の段落であることがわかります

sign:g(l({}, r))

では、これらの方法を何を探しているのでしょうか。

高度なロジックはやや複雑に見えますが、これについては気にせず、 tの値の変更に注目してください。

次のコード行を徐々に実行すると、

tの値を見てみましょう。consoleを通して観察します。

ここでの中間の操作は、パラメーターをつなぎ合わせることであることがわかります。

def params_format(params):
 url =''if params:if not isinstance(params, dict):
   raise Exception('paramsは辞書でなければなりません')  #辞書形式ではない場合は例外がスローされます
  url +='&'.join([str(key)+'='+str(value)for key, value in params.items()])
  strSplit = url.split('&')
  strSorted =sorted(strSplit)
  strConvert ='&'.join(strSorted)return strConvert

一般的なPythonコードを書きました

これでほとんどのコードを検討しましたが、暗号化操作がないようですので、実行を続けます

次のステップは暗号化であることがわかります

暗号化された結果は暗号テキストの文字列です

追いかけるのは次のコードです

ここでは、ウェブサイトで直接テストして、ヒットできるかどうかを確認します

テスト結果は上に印刷したものと同じで、sha1です。

次のステップ t = a(t)を直接分析します

もう一度追いかけて、次のコードを参照してください

実際、兆候も非常に明確であり、MD5テストの結果は同じです。

また、このWebサイトの他の「記号」はすべて暗号化されたロジックであり、タイムスタンプが含まれているために変更されるものもありますが、ほとんど問題はありません。

今日はこれでおしまいです。また会いましょう〜

Love&Share [終了]

Recommended Posts

Pythonクローラーアドバンストエッセンシャル|財務情報ウェブサイトの署名暗号化ロジック分析(旧サイトの更新)
Pythonクローラーアドバンストエッセンシャル|インデックス分析プラットフォームの復号化ロジック分析
Pythonクローラーアドバンストエッセンシャル|無料のIPパブリッシングプラットフォームのWebページ暗号化パラメーターロジック分析について
Pythonクローラーアドバンストエッセンシャル|ライブデータ分析プラットフォーム暗号化パラメーター符号分析
Pythonクローラーアドバンストエッセンシャル|特定の情報公開プラットフォームについてジャンプリンク暗号化パラメーターロジック分析
PythonクローラーのJSの分析