1. 引言
图-1 老版税控盘版增值税开票软件
上图是税控盘版增值税开票软件(税控盘就是我们常说的黑白盘中的 黑盘),是否会有一种似曾相识,久别重逢的感觉?其实,上图就是老版本的税控盘版增值税开票软件,曾经伴随我们走过无数的日日夜夜,看到它依然是难么的亲切,可能会勾起我们对往昔的无尽回忆,亦有辛苦,亦有欣慰,所有的这一切不再言表。在本文中,笔者将这版开票软件称之为”老版税控盘版开票软件“,以示对往昔”峥嵘岁月”的无限怀念。
老版税控盘开票软件,对于运维人员,以及像我一样有着极强求知欲的朋友来说,有一个极大馈赠和福利,那就是它及为丰富的日志信息。这个日志文件C:\_skpclog目录下(日志文件内容见下图),里面的日志信息为运维人员和用户带来了极大的帮助,对于问题的排查和定位起到事半功倍的效果。
图-2 老版税控盘版增值税开票软件日志
不知曾几何时,税控盘增值开票软件发布了新版本(具体是哪一个版本,由于岁月久远,笔者无从考证)。这个福利和馈也就赠嘎然而止,在本文中笔者将这个版本以及之后的所有的税控版增值税开票软件,称之为新版税控盘增值税开票软件。在新版税控盘增值税开票软件对该日志的关键信息进行了加密处理(如下图所示),对于运维人员和用户来说一脸茫然,不知所措,但又无可奈何,只好望洋兴叹,无尽哀怨无处诉说!
图-3 新版税控盘版开票软件日志(已加密)
笔者最近对该日志加密算法进行了深入的分析和研究,小有所成,给大家分享一下,希望能对运维人员和用户在排查问题时带来帮助。由于笔者水平有限,分析如有不当或错误,欢迎各位同仁给予指正和赐教 。
2. 日志加密算法分析
图-4 新版税控盘开票软件日志加密算法分析
新版税控盘增值税开票软件日志的加密算法谈不上复杂,但毕竟是国字号出品,极有章法,做到可识别,可控制,动态密钥,不易被识别、突防,不得不为研发者的智慧点赞。闲言少叙,直奔主题。
如上图所示,在新版税控盘增值税开票软件的日志中分为两类日志,明文日志和密文日志。密文日志的密文部分是二进制数据的十六进制表示的字符串,有四部分组成,分别是密文标志,加密算法版本号,密钥,日志内容加密数据,下面笔者对这四部分做一下简要的分析。
2.1 密文标志
在整个密文的前12字节是密文标志,密文标志是十六进制字符串,是固定的常量值” FF99011099FF”。至于为什么在密文中加这一个密文标志,笔者推测,因为日志文件中的每一行是一条完整的日志,既有明文的日志也有密文的日志,加入密文标志的目的是为了便于文件级别的解密工具能够快速辨别日志行是明文的日志还是密文。基于这个原因,笔者在上文的分析中才说,该加密算法既有章法,并非空虚来风。这个“密文标志“的作用,是笔者的主观臆想,有不同看法的朋友可以和笔者讨论交流
2.2 加密版算法版本号
密文的第13,14两个字节的”01”是加密算法版本号,虽然到目前为止加密算法只有一个版本,但研发者已经做好了随时扩展改变加密算法的准备,未雨绸缪,也充满着智慧。
2.3 动态密钥
密文的第15,16两个字节的十六进制数字是动态密钥,第1字节”3“到目前为止是固定值,第二字节是”0”~”F”的随机数。使用该密钥对日志内容进行加密。
2.4 日志密文内容
密文的第17字节开始,是对日志内容进行加密的结果的二进制数据的十六进制表示的字串。加密使用动态密钥进行两轮加密,具体的算法笔者在此不再累述,有兴趣的朋友可以和笔者沟通交流。
3. 税控盘增值税开票软件日志解密工具
如下图所示,笔者开发了税控盘版增值税开票软件日志解密工具,希望能对运维人员和开票软件用户提供帮助,该工具对税务Ukey版开票软件同样使用。
图-5 税控盘版增值税开票软件解密工具