这两天PUTTY汉化版有后门的事闹得沸沸扬扬,给网络安全再次敲响警钟。本人也常用PUTTY,这玩意儿好用也够用,不过却有一个不大不小的缺点,那就是配置信息是保存到注册表而不是文件中,不利于安全也不利于便携应用。网上虽然也有修改版,但说实话不敢用。于是还是自己动手改吧。
首先,在PUTTY官网下载源码http://the.earth.li/~sgtatham/putty/latest/putty-src.zip,解压后看了一下代码,一个字“晕”,只能怪自己不够牛X。不过好在这个世上从来不缺少牛X人,用GOOGLE搜了一下(不信度娘),果然发现有位老外哥儿们jakub从2005年开始就一直在做这块工作,不仅给出了修改过的程序,连源码都一并送上,真是活雷峰http://jakub.kotrla.net/putty/。只是修改仅支持到6.1,而官方最新版是6.2。看来这步工作还是自己做比较靠谱。
一、导入PUTTY工程
由于本人电脑里装的是CodeBlocks,所以导入和编译都是基于此IDE。在CodeBlocks导入PUTTY的MSVC工程文件,路径在putty-src\WINDOWS\MSVC\PUTTY.DSW。导入最后会报个错,不用理会。成功的话,一共会导入7个项目,每个对应一个PUTTY的应用程序。
二、修改源码
在http://jakub.kotrla.net/putty/下载两个修改文件源代码,http://jakub.kotrla.net/putty/winstore.c和http://jakub.kotrla.net/putty/winpgnt.c,前者涉及到存取配置信息,后者涉及到密钥缓存的存取。在CodeBlocks中找到对应的两个文件(随便哪个项目里都行,相同文件指向都是一样的),将下载的源码文件中凡是有JK开头注释的代码段都替换添加到项目对应文件的相应位置,要改的地方还挺多,纯体力活。注意不要改错,确认无误后保存。
三、编译代码
1、依次设置每个项目的Build options,在PAGEANT中选择编译器为“Microsoft Visual C++ 2005/2008”,在Win32 Release 的"Compiler Settings" ->"Other Options"中删除-W。
2、分别在PLINK、PSCP、PSFTP这三个项目的项目属性里,将"Build targets"->"Win32 Release"->"Selected build target options"->"Type"设成“Console application”。
3、编译生成整个工程,期间会有一些警告,但编译不受影响。生成的可执行文件在各自项目的Release文件夹中。
至此,修改工作完成。这时再使用PUTTY时配置文件均以文件形式存取,相当方便。
最后有两点要提一下:
1、通过CodeBlocks编译生成的可执行文件要比jakub提供的大100K左右。
2、存取配置文件时,偶尔会报错,关掉PUTTY再开就好,不影响大局。