& w) `: ~. i+ F# C" w3 |
对了 哈哈哈。谢谢大佬,另外贴出相应解密python代码
, \; [9 ]7 Y& ]! W# c6 d9 w! I* q/ z2 @$ i% d" v( y" A( y; _
#!/usr/bin/env python3$ a3 [$ F& f' L, ^ \# A
, r. Q( ^) E9 j' q0 X7 Z/ T8 k) _- E
4 h; W- x' D$ ^. X% S. b
import sys
. Y" T) S9 k3 @. p/ c# y: pimport zlib% a; V M/ |0 [; O" W
import struct& I# i6 l) E; Q# Y
import base64
$ v. w0 J- G3 ~" }import binascii, E5 F4 Q O* p7 z
import datetime: T" o- r) T2 W' G+ [7 L' T/ F% g
from Crypto.Cipher import AES
+ D" M- n b* J' m" C6 L2 o2 r% q/ ~+ E
. E$ X. r4 u4 e2 k
class RouterCrypto:
3 y3 I- Z% j+ p0 ^; C8 Z8 @2 ]' M/ z- [* p$ U" z8 R0 @ h
def __init__(self):. j3 a* F. |* Z; k6 A
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'4 m1 o k$ f; S {, s; W
iv = 'D0 E6 DC CD A7 4A 00 DF 76 0F C0 85 11 CB 05 EA'
2 o" ? L; E) Z$ s- a4 H# ` self.cipher = AES.new(bytes(bytearray.fromhex(key)), AES.MODE_CBC, bytes(bytearray.fromhex(iv)))9 z6 ~! h' E: b
+ K7 Z7 I( l, ~9 I: k
# create AES-128-CBC cipher
& v/ X1 _0 r; }6 {+ m
2 q2 v/ p O! Y6 G2 v4 g def decrypt(self, data):
# c4 b6 _( G0 I& w output = self.cipher.decrypt(data)
- Z/ m. s; Y4 k* p return output[:-ord(output[-1:])]3 L9 |1 H8 e) r/ U7 d; q7 D
7 P; y5 H+ O/ g def encrypt(self, data):
. b' ]# Z1 D- A# Z2 g) K/ ` ]- Y pad_num = (16 - (len(data) % 16))9 q- v& ]3 E C8 b9 |
data += chr(pad_num).encode() * pad_num" n' y. \$ N1 ]; k0 a0 Q# J# ^ L
return self.cipher.encrypt(data)
$ C4 q$ R$ M0 D+ K! j
% f/ f7 d" a1 U z% l/ R. G% k2 m# Q8 C7 ~1 W: x) N' k! ~
if __name__ == '__main__':4 l1 n6 _! T. y5 ?5 U
decrypt_mode = sys.argv[1] == '-d'9 H+ c1 }6 Y5 ?2 G
if decrypt_mode:1 ]% X: Q: @6 g* I
print('\ndecrypted: ' + RouterCrypto().decrypt(base64.b64decode(sys.argv[2])).decode('UTF-8') + '\n')$ |" W+ {0 B1 h ^
! S- @' N, L% G4 ~) { else:
* V- w# c+ z3 ^1 B; k6 S1 V5 _0 p1 b
print('\nencrypted: ' +base64.b64encode(RouterCrypto().encrypt(sys.argv[2].encode())).decode('UTF-8') + '\n')
& b- Q; P. ?. o5 k9 K+ H+ L |