& x1 e- |& R4 ]+ l4 z, J对了 哈哈哈。谢谢大佬,另外贴出相应解密python代码+ Z) J( U9 K2 a
5 S( w0 {* N- y( q9 \#!/usr/bin/env python3
2 ?2 f. b1 h8 l; f/ m8 h5 h- F/ p4 ?2 N' z" Q0 R' ?+ ?
1 R- Z- o. j* N1 V7 ~ L
2 n3 i8 z5 K0 P c# a* uimport sys
8 U; l: o0 f# i$ H2 _* L' \import zlib% ` |( X' j; P1 L) L* i5 w" j
import struct
2 c' r6 K! R. S1 _2 C. Iimport base640 d, I }. R. k* Q0 q5 a
import binascii, f/ a( X2 ?$ I9 c5 [: H
import datetime3 V9 A2 C% ^; A( f- p! X7 m7 x$ Y
from Crypto.Cipher import AES; B5 q* o! b3 p) e0 A5 _4 a
8 w7 K- X, `6 f S9 c
- p9 g' e" U, n6 S" z
class RouterCrypto:
% ?6 X9 h8 C( T: B8 z/ g+ L1 m2 f+ K% `5 g( ]1 L
def __init__(self):/ v7 D% H2 K, Z
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'
3 S" W9 s% u/ f2 N5 n iv = 'D0 E6 DC CD A7 4A 00 DF 76 0F C0 85 11 CB 05 EA'
7 ]* J2 D; N4 ]$ h; Y% I4 x self.cipher = AES.new(bytes(bytearray.fromhex(key)), AES.MODE_CBC, bytes(bytearray.fromhex(iv)))3 G+ }* m; i" |8 d
* f) b) i; `' D5 I
# create AES-128-CBC cipher2 h& o# I9 X* z$ y8 E
+ d2 B4 V0 d/ w8 }$ _ def decrypt(self, data): ? t$ F F$ o5 V; e; N! R
output = self.cipher.decrypt(data) W! w5 U3 F' Y" ]$ e9 X
return output[:-ord(output[-1:])]
% r& ^8 \6 |: M6 o1 X0 [$ K: S5 i, n- O9 q: r3 B* p- c
def encrypt(self, data):
, P2 e) H! p: w2 v, n' r& ~* E pad_num = (16 - (len(data) % 16))9 E/ F% Q2 R( ?+ z
data += chr(pad_num).encode() * pad_num8 V5 g N4 v8 A
return self.cipher.encrypt(data)1 y2 j2 L- c9 y; l/ n
$ X) \2 |8 d% s0 f* Z. T3 f2 s4 X% v- S. M3 V
if __name__ == '__main__':: e6 v& H0 J; t+ g
decrypt_mode = sys.argv[1] == '-d'
" B0 O$ _2 K; P& t" B if decrypt_mode:5 @+ X" b# q3 p! c2 x
print('\ndecrypted: ' + RouterCrypto().decrypt(base64.b64decode(sys.argv[2])).decode('UTF-8') + '\n')
0 o0 m, u. J; j! D2 X) J, [
' z4 ]$ Z7 U& h& Q+ _! b8 L, b/ p0 Q else:* `& K$ A& M0 ^4 N* X7 X
; Z; D& I* G1 a" x% R& _
print('\nencrypted: ' +base64.b64encode(RouterCrypto().encrypt(sys.argv[2].encode())).decode('UTF-8') + '\n')) a: {8 a. I; \: n. O) }3 |; h* q
|