ksjsb/tests/test_libw_pr_oracle.py
2026-07-30 20:25:56 +08:00

55 lines
1.6 KiB
Python

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()