黑猫APP
This commit is contained in:
@@ -12,6 +12,12 @@ Spider = MODULE.Spider
|
|||||||
|
|
||||||
|
|
||||||
class TestHeiMaoAppSpider(unittest.TestCase):
|
class TestHeiMaoAppSpider(unittest.TestCase):
|
||||||
|
def test_module_uses_crypto_aes(self):
|
||||||
|
source = (ROOT / "黑猫APP.py").read_text(encoding="utf-8")
|
||||||
|
self.assertIn("from Crypto.Cipher import AES", source)
|
||||||
|
self.assertIn("from Crypto.Util.Padding import pad, unpad", source)
|
||||||
|
self.assertNotIn("from cryptography", source)
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
Spider._instance = None
|
Spider._instance = None
|
||||||
self.spider = Spider()
|
self.spider = Spider()
|
||||||
|
|||||||
+7
-12
@@ -5,8 +5,8 @@ import sys
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from urllib.parse import unquote
|
from urllib.parse import unquote
|
||||||
|
|
||||||
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
|
from Crypto.Cipher import AES
|
||||||
from cryptography.hazmat.primitives.padding import PKCS7
|
from Crypto.Util.Padding import pad, unpad
|
||||||
|
|
||||||
from base.spider import Spider as BaseSpider
|
from base.spider import Spider as BaseSpider
|
||||||
|
|
||||||
@@ -74,19 +74,14 @@ class Spider(BaseSpider):
|
|||||||
return json.loads(self._aes_decrypt(body["data"]))
|
return json.loads(self._aes_decrypt(body["data"]))
|
||||||
|
|
||||||
def _aes_encrypt(self, text):
|
def _aes_encrypt(self, text):
|
||||||
padder = PKCS7(128).padder()
|
cipher = AES.new(self.aes_key.encode("utf-8"), AES.MODE_CBC, self.aes_iv.encode("utf-8"))
|
||||||
data = padder.update(str(text).encode("utf-8")) + padder.finalize()
|
data = pad(str(text).encode("utf-8"), AES.block_size)
|
||||||
cipher = Cipher(algorithms.AES(self.aes_key.encode("utf-8")), modes.CBC(self.aes_iv.encode("utf-8")))
|
return base64.b64encode(cipher.encrypt(data)).decode("utf-8")
|
||||||
encryptor = cipher.encryptor()
|
|
||||||
return base64.b64encode(encryptor.update(data) + encryptor.finalize()).decode("utf-8")
|
|
||||||
|
|
||||||
def _aes_decrypt(self, text):
|
def _aes_decrypt(self, text):
|
||||||
data = base64.b64decode(str(text or ""))
|
data = base64.b64decode(str(text or ""))
|
||||||
cipher = Cipher(algorithms.AES(self.aes_key.encode("utf-8")), modes.CBC(self.aes_iv.encode("utf-8")))
|
cipher = AES.new(self.aes_key.encode("utf-8"), AES.MODE_CBC, self.aes_iv.encode("utf-8"))
|
||||||
decryptor = cipher.decryptor()
|
return unpad(cipher.decrypt(data), AES.block_size).decode("utf-8")
|
||||||
padded = decryptor.update(data) + decryptor.finalize()
|
|
||||||
unpadder = PKCS7(128).unpadder()
|
|
||||||
return (unpadder.update(padded) + unpadder.finalize()).decode("utf-8")
|
|
||||||
|
|
||||||
def _replace_code(self, text):
|
def _replace_code(self, text):
|
||||||
replacements = {
|
replacements = {
|
||||||
|
|||||||
Reference in New Issue
Block a user