前言:公司一台两年前的SVN服务器,由于年久失修,基本信息已经湮灭在时光里,除了知道它曾经是某部门的svn服务器之外,其他一无所知......直到最近某一天,某部门突然想把这台机器里的数据都取出来,然后我就接下了这个光荣而艰巨的任务~~~讲真,我真的是知道它是个svn服务器......
拿到机器后,通上电,连上显示器......第一个问题,这是个windows2008的机器,我木有密码......
现做的PE盘,进系统破解了密码,此处就不赘述了,大家可以自行百度......
进入系统后,发现这个svn使用的是Collab Net Subversion的版本,讲真~~~我没用过。。。
然后各种百度,各种查资料,大概搞清楚了这个csvn的安装过程,然后发现,真玩意真是说简单就很简单,说复杂能让人吐血。
进入系统,找到了csvn的安装目录,在c盘,然后发现svn的数据仓库存在D盘,大小大概在14G左右。从本地直接启动csvn的后台,第二个问题来了~~~没有超级管理员的密码......默认的账号密码组admin,admin已经被修改了...Orz
所以首要任务,破解admin的密码~~~经过几天的资料查找以及无数的测试,最后发现,这个版本的svn使用的是一种叫psqldb的数据库,文件位置在:
这里多一句嘴,最好使用稍微专业点的编辑工具来打开文件,比如notepadd,editplus等,以免产生不必要的编码问题~~~毕竟csvn是结合apache的,windows的编辑工具容易产生BOM头。
打开之后,可以看到很多的sql语句,可以直接ctrl+f搜索:
这里是我虚拟机的文件,谨做说明演示。截取的是自带的admin账号的相关信息,可以看到value里有很多值,一个值是1.1,据我猜测,这是第一个账号的第二条sql记录,细心的你,肯定能看到图片上面还有一个1.0标识的插入语句,这个1指代的就是admin;然后第二个值是一长串的代码,这就是存储的admin的加密密码,从这串代码来看,这里的加密方式并不高级,所以你懂得~~~重点来了,我选择了最粗暴的方法,直接另开了一台win2008的虚拟机,装上相同版本的csvn,然后找到新开的csvn里的数据库文件,找到admin的加密密码,直接拷贝过来,复制粘贴,没错,就是默认的admin,密码也是admin,至于成不成功,先稍等会,咱们接着说这一长串的值的意义。密码后面的第三个值,代表的是账号的启用状态,TRUE即为启用。第四个值是账号名,第五个值是该账号的管理员邮箱,第六个值是管理员的描述,第七个值是管理员的说明。
然后重启csvn的两个服务,稍等片刻,重连后台,输入admin,admin,然后发现,登录成功了~~~这就意味着,我已经拿到了超级管理员的权限,那么接下来就是指定版本仓库的用户权限。如果不是做精细控制,只需要一个总的权限即可,像我这一次,就只是为了拷贝数据,所以我为所有的仓库都设置了admin这个超级管理员的读写权限,具体设置方法,请参考SVN权限设置。
然后就是拷贝数据了~~~下载小乌龟的svn客户端(TortoiseSVN)安装配置,这里又有一个小坑,就是在连接数据仓库之前,你需要先在settings里配置csvn的权限账号密码:
然后打开repo browser,输入svn的url,然后输入账号密码,就能看到数据仓库里的内容了。
在这里我想吐槽一下,这个csvn由于是基于apache和subversion的,所以对中文路径的支持那是相当的差。在管理员后台登录的时候,查看数据仓库,你会发现,只要携带中文的目录,你去打开的时候都是404的位置错误,这给了我一个很大的迷惑......我一度以为是我把哪个配置文件改错了......最后发现,只是管理端后台有问题,正常用小乌龟连接上后,中文路径并不会报404//手动吐槽//