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