( Z$ e5 M" _( s/ ~9 N
对了 哈哈哈。谢谢大佬,另外贴出相应解密python代码
K1 n! H/ W9 f+ O
: x0 ]& I9 ?- q |1 E#!/usr/bin/env python37 X/ ?/ F& X2 ]5 A7 P& h
: B- m& `4 L5 \! c
4 d% u% ?2 F6 c4 A# u& R$ X# W& ^- v' G9 e2 c. [$ ]$ c! n
import sys. H' B1 f4 B' ]" }: R
import zlib& L+ F+ Z9 ]0 m' Y9 \! A; \1 Y9 r
import struct% ^ F1 E6 e b; X" g; m
import base64* g* y. e& v. a# ^. g
import binascii* v, H. Y s5 x2 v( V
import datetime O6 w, T: t v! I' u, s+ Y0 j
from Crypto.Cipher import AES
& e% q- P+ g. d5 |4 P, C. @0 F+ d5 w* M- Z2 |
3 `* k U9 I- Wclass RouterCrypto:
* b% E [# W" z: [9 V
2 c$ f: }( Q6 O' i [# t% B' l" i def __init__(self):3 h# g3 P4 h/ p/ ?% _
key = '3D A3 73 D7 DC 82 2E 2A 47 0D EC 37 89 6E 80 D7 2C 49 B3 16 29 DD C9 97 35 4B 84 03 91 77 9E A4'2 d8 Q9 b4 w: d
iv = 'D0 E6 DC CD A7 4A 00 DF 76 0F C0 85 11 CB 05 EA'
! X2 F4 {/ c# R5 r: {4 i self.cipher = AES.new(bytes(bytearray.fromhex(key)), AES.MODE_CBC, bytes(bytearray.fromhex(iv)))5 H% q2 O/ f8 O8 {% H# p
( S/ F8 r) W7 m0 C- V, W3 m # create AES-128-CBC cipher
* ^* z c" ~; g$ }/ y' x; u: O# [" y. Z* F, K0 X% {1 v! D2 Y
def decrypt(self, data):9 O1 k) D6 {' k. z) T/ r, g
output = self.cipher.decrypt(data)
3 ?: Z% D; {. s7 E8 W return output[:-ord(output[-1:])]( c! ^' b! f- ?% t( O9 U( f6 x9 L
- t1 y% x) z; J. g# ?$ u def encrypt(self, data):
! O: J& e; `# p; ^9 g pad_num = (16 - (len(data) % 16))
2 j" s1 M, \8 |1 Z) m data += chr(pad_num).encode() * pad_num. K) M; M; _, x9 S
return self.cipher.encrypt(data)
- n" j3 p$ h+ P7 Q
( X( g; `* c" n' B4 u4 ~
6 X# ?' t7 c" B- j, sif __name__ == '__main__':4 O" O4 y* P# \( ~
decrypt_mode = sys.argv[1] == '-d'
0 T* e& H* b8 L4 ?& [0 @ if decrypt_mode:1 Q3 U0 O3 k1 E3 `. V
print('\ndecrypted: ' + RouterCrypto().decrypt(base64.b64decode(sys.argv[2])).decode('UTF-8') + '\n')
6 e+ M, j* o5 E, K9 `* E: q
}1 [# b& q4 ^# k! W _ else:' o, T- S) C p$ \' i
3 x9 n' M5 X$ ^8 f
print('\nencrypted: ' +base64.b64encode(RouterCrypto().encrypt(sys.argv[2].encode())).decode('UTF-8') + '\n')0 Q* |1 W; r2 G3 V, p
|