斐讯K2P配置文件破解笔记

手上有一个斐讯K2P路由器,刷机前我想把原机带的固件备份出来。搜到恩山A大开启telnet、固件备份的教程,里面提到了配置文件加密的方法,心血来潮试了一下,发现算出的密码不能解密,一直报"bad decrypt"。在确认不是openssl版本不同的问题后,只能硬着头皮去扒encryconfig的汇编代码。

发现是CRC32计算这一步存在差异,encryconfig比IEEE 802.3标准少了最后一步按位取反。感兴趣的朋友可以看看我另一篇关于CRC32算法的笔记。

最后贴一段我写的计算密码的程序:

 1 import binascii
 2 import unittest
 3 
 4 
 5 def getcode(macstr):
 6     code = ''
 7     ss = macstr.split(':')
 8     for s in ss:
 9         a, b = s
10         code += '%d' % ((ord(a) + ord(b)) % 9)
11     return code
12 
13 
14 def crc32(s):
15     crc = binascii.crc32(s.encode())
16     return '%08X' % (~crc & 0xffffffff)
17 
18 
19 def getkey(macstr):
20     s = 'PHICOMMK2' + macstr + getcode(macstr)
21     return crc32(s)
22 
23 
24 class TestMethods(unittest.TestCase):
25     def test_getcode(self):
26         self.assertEqual(getcode('CC:81:DA:8B:3A:20'), '867588')
27         self.assertEqual(getcode('CC:81:DA:A6:5C:02'), '867238')
28 
29     def test_getkey(self):
30         self.assertEqual(getkey('CC:81:DA:11:22:33'), '376BBAA8')
31 
32 
33 if __name__ == '__main__':
34     unittest.main()

猜你喜欢

转载自www.cnblogs.com/LikeVirgo/p/8882086.html