; | |3 U4 W' T; C8 h# H! Z3 q对了 哈哈哈。谢谢大佬,另外贴出相应解密python代码
. Y7 g" _, i& n6 K! Y' a2 x2 b5 {( z1 Z& ~1 L- y j: q
#!/usr/bin/env python3
* a5 b+ M3 Y# \* j& H6 @+ Y; u/ }
9 `6 a! O( e+ v+ ~7 {
0 l' Y# ~- @1 G0 h. L6 U h
" h- F) x$ e! q' C' {0 k Simport sys
+ u2 |6 ]& {7 p1 s' Nimport zlib2 t3 a9 J% R% N7 Y4 H3 _2 u- q
import struct
) u5 ?) D/ K# ]6 i! R( X% bimport base64
9 ]2 l7 n+ Q8 h) Aimport binascii7 `2 }" `+ T7 h8 a# G: j
import datetime f' R8 q8 ^* x% s5 d6 F
from Crypto.Cipher import AES) `& w; R- O) a( H- z! a' b4 c
" G; H! W; O8 }1 V, G f
: k$ V, r- T9 y# D3 e X
class RouterCrypto:: h ~7 }* I- g
& ^/ o4 J. A% ~. t* \8 K+ l def __init__(self):0 n# J5 ]- p- n0 a; 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'
' Y" j* S& _' x; _% o$ h s1 ]$ r0 [ iv = 'D0 E6 DC CD A7 4A 00 DF 76 0F C0 85 11 CB 05 EA'! Z+ ^+ S( \, O- e1 R
self.cipher = AES.new(bytes(bytearray.fromhex(key)), AES.MODE_CBC, bytes(bytearray.fromhex(iv)))8 p# L6 z: _) t& u r
4 L* P4 \6 K% |4 E* y
# create AES-128-CBC cipher: B+ V: J# u0 t
+ B V8 p* S( n5 h* q. m( t6 Z def decrypt(self, data):
( z# i5 C) I5 T6 j output = self.cipher.decrypt(data)
) |% L3 U8 u- _6 B' }1 D return output[:-ord(output[-1:])]4 O3 ~' j D4 O4 u* w, d7 z0 P
2 A1 B d0 R1 v. \* A3 P
def encrypt(self, data):
8 s# U9 ?# Q6 x8 Q v" p pad_num = (16 - (len(data) % 16))+ e4 Z J4 w: l2 L/ A
data += chr(pad_num).encode() * pad_num6 F9 |; m4 G' G1 j7 `
return self.cipher.encrypt(data)
6 |2 L+ ?( V- Q
* j4 d: Z0 w4 t7 e0 |
0 {! Y# F. ]* P6 I# `if __name__ == '__main__':
& u6 e0 c3 A: s; ~ decrypt_mode = sys.argv[1] == '-d'1 I5 {% p/ n; c
if decrypt_mode:
; ~9 ~8 |/ |( ^7 r print('\ndecrypted: ' + RouterCrypto().decrypt(base64.b64decode(sys.argv[2])).decode('UTF-8') + '\n')
! t0 o0 C3 Q5 k2 U U" h6 A7 k7 T" S# z0 t& ~9 W+ O) y. J
else:# i I. x5 B# c
/ k- @$ W. ?, P9 M- ~2 O# r
print('\nencrypted: ' +base64.b64encode(RouterCrypto().encrypt(sys.argv[2].encode())).decode('UTF-8') + '\n')" @7 ~3 A/ e3 x$ j1 x4 t. _
|