SVN是什么
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就用用于多个人共同开发同一个项目,实现的共享资源,实现最终集中式的管理
.SVN目录
使用svn checkout后,项目目录下会生成隐藏的.svn文件夹(Linux使用ls命令是无法看到的,使用ls -al可以看见)
svn1.6以及以前的版本会在项目的每个文件夹下都生成一个.svn文件夹,里面包含了所有文件的备份,文件名为
.svn/text-base/文件名.svn-base
svn1.7以及以后的版本则只在项目根目录生成一个.svn文件夹,里面的pristine文件夹里面包含了整个项目的所有文件备份
分析.svn目录以及内容
我们看到的是一个名为wc.db的文件,用文本编辑器打开看到第一行有写SQLite format 3,可以知道,这是一个SQLite数据库的文件,后面包含的信息,文本编辑器就先忽略,我们下载一个正经的SQLite查看软件来慢慢来
在软件下载完之前,再看看此文件夹里的其他内容
entries和format文件,只有个数字12,没有什么参考意义,wc.db-journal文件是空的,也没有什么价值;tmp目录里面也是空的
pristine里面内容就多了,一堆00~ff的文件夹,每个文件夹里有若干个.svn-base文件;用文本编辑器打开看一下,有些是文件代码,有些文件是乱码[可能就是图片]看来这个文件夹是整个项目文件的一份备份,只是一堆哈希过的文件夹
wc.db文件
使用SQKiteStudio软件打开wc.db文件,我们看到NODES表,看到local relpath栏和checksum栏
local relpath栏里面的是原始的文件名,checksum栏里的$sha1$后面的那窜数字就是pristine文件夹里的那堆文件的文件名,pristine里的00~ff文件夹,其实是文件名的前两位,而local relpath就是原始的文件名
遇到wc.db文件泄露,通过wc.db可以下载其他文件
下载文档,如果一个文档的checksum为$shal$367b6955bcaabc71381ee3c8436db71413894257,那么其对应的 url 则为: https://xxxxxx.xxxx.edu.cn/.svn/pristine/checksum前两位数/checksum加上.svn-base