航空js逆学習

免責事項:この記事は学習とコミュニケーションのみを目的としており、違法な目的、商業活動などに使用することを禁止します。それ以外の場合は、ご自身の責任で行ってください。侵害がある場合は、通知して削除してください。ありがとうございます。このチュートリアルは、特定の Web サイト向けに特別に書かれたものではなく、純粋に技術的な研究を目的としています。

事例分析

対象ケース: aHR0cHM6Ly93d3cuY2VhaXIuY29tLw==

1. 対応インターフェースと難易度
注:フライト検索インターフェース
ここに画像の説明を挿入

パラメトリック分析

アプリケーションの Cookie を通じていくつかの Cookie を削除したところ、
acw_tc: set-cookie returns
HMF_CI: set-cookie returns
inter: この値が変更されない場合、データは要求できません。

私たちが入ったとき、彼は最初に 2 回リクエストし、2 つの Cookie 値を返したことがわかります。inter
ここに画像の説明を挿入
Cookie は newCheckToken を通じて返されました。
ここに画像の説明を挿入
これで終わりです。引き続き見てみましょう

copycurl のコードが実行できないことがわかります。何度も試してみましたが、ブラウザから再試行することは可能です。 request で送信されたリクエストは通過できません。最初は
ここに画像の説明を挿入
、ページのめくり方がわかりません
ここに画像の説明を挿入
。パケット キャプチャの比較により、この値が毎回変更されていることがわかりました。前半は変更されていないことがわかります。コピーして再度リクエストできます。どのように変更されるかを見てみましょ
ここに画像の説明を挿入
うここで He がタイムスタンプを 1e9 で割ったことがわかります
ここに画像の説明を挿入
ので、それを修正し、
ここに画像の説明を挿入
Cookie から返された値を加算することでタイムスタンプを渡すことができることがわかりましたが、
ここに画像の説明を挿入
送信されたデータには上海からのデータが含まれていないことがわかりました。北京。分析により、それがリファラーであることが判明しました。この値は上で送信されたことがわかりましたが、searchKey 値は暗号化されています。検索を続けたところ、メインのブレークポイントにあることがわかりました。キャンセルできます
ここに画像の説明を挿入

ここに画像の説明を挿入
設定でこの設定を変更することで、ソースを介して main.js をフォーマットします
ここに画像の説明を挿入
。次のブレークポイントでダウンロードおよびアップロードできることがわかります。ブレークポイントを通じて、選択した都市とチケットのデータであることがわかり、変換は次のようになります。エンコードを介して実行されます.base64, そして r を結合します
ここに画像の説明を挿入
. r の値は先頭で固定されているため、それも修正できます. 実行を続けると、
ここに画像の説明を挿入
shakehand の値が kill されるとデータがなくなることがわかりますが、インターフェイスが異なることを除いて、常に同じであるため、直接確認する必要があります。インターネットで Dafa を検索すると、リンクの後半が値で接続されていることがわかります
ここに画像の説明を挿入
。は結合されたデータの md5 です。オンラインで試すことができます。ネイティブであれば、Python で直接復元できます。ネイティブであることがオンラインでわかり、Python で呼び出され、関数として書きまし
ここに画像の説明を挿入

def get_md5(data):
    md5 = hashlib.md5()
    md5.update(data.encode('utf-8'))
    return md5.hexdigest()

md5 で暗号化した後、完全に実現可能であることが判明したため、この問題はここで終了です。
バイバイ!
ここに画像の説明を挿入

結果を示す

ここに画像の説明を挿入

コード分​​析

備考:簡単すぎるのでコードは公開しません、主にこのような問題に遭遇した時の考え方について話します

おすすめ

転載: blog.csdn.net/w62181310/article/details/131984288