from __future__ import annotations import importlib.util import unittest from tools.libw_pr_oracle import DEFAULT_LIBRARY, LibwPrOracle KAW = ( "MDJ3ll0yLjVpYO7iiytgvlbggFZA+kzX1QW7XXr0RScGn+UaN3oe8k/8OMm5qNs5QMOz" "XRUsclqPgblszASefBRIZ8n+fvhbUPpcNIEluR/tdXsbSVkdMHyjYPWVAYRZqAjRCr/AqM" "9BVr6A25kTIy2Q90Q/XaCQdkDCzEinliF1w7nxO00EBAt5t6dg8V2WHF4ku2pSwEmKcJsR" "606dC0ZJhKgGdMmK2ls+Ti6sybfii/wvtiXHkrnC2Z0ES1PnoYBhwpsA" ) VECTORS = ( ( "/rest/nebula/user/mobile/checker" "26374264f51d236ceb6e6d6c80fddcca5466131e637f7167" + KAW, "0013da23b4d7b0d9e608ea4b9e1c8ad228", ), ( "/rest/nebula/user/requestMobileCode" "a6b7c2e4759da3ec6aeeedecb8aefa45d3e6939ee3fff1e7" + KAW, "0040db26b7dbb188e35fe419c91ada8022", ), ( "/rest/nebula/user/login/mobileVerifyCode" "e8f98caa3bd3eda226a0a3a21f648b4789a8ddd0adb1bfa9" + KAW, "00408e7fe6d7b188b05ae11ecc4bdf8371", ), ("/f/a/p" + KAW, "0046df75e487b7d9b65ab749981a8c8f71"), ) @unittest.skipUnless( DEFAULT_LIBRARY.is_file() and importlib.util.find_spec("elftools") is not None and importlib.util.find_spec("unicorn") is not None, "libw oracle 需要本地 ELF、pyelftools 和 unicorn", ) class LibwPrOracleTests(unittest.TestCase): def test_captured_mode_2_vectors(self) -> None: oracle = LibwPrOracle() for payload, expected in VECTORS: with self.subTest(expected=expected): self.assertEqual(oracle.generate(payload), expected) if __name__ == "__main__": unittest.main()