业余黑客有个潜规则。
政府机关、金融系统、电子商务……这类网站的后台,是机密重地,通常有高手坐镇,没事最好别去溜达。
被网监或者安全专家盯上,十有八九落不了好。
而个人网站、小型办公网络、学校网站……
这种信息安全不太敏感的,仅仅是浏览或下载一些数据,一般不会有什么大问题。
比如从铁道部官网12306爬点数据,做个辅助订票系统什么的……
但无论任何地方,肆意破坏总是不被允许的,这是底线。
《原始数据表》的奇怪情况,身份证位数不对,侧面支持了这种可能性。
通过黑客手段获取数据,有时候会遇到一些匪夷所思的问题,比如数据格式特殊,下载的数据宽度受限……
有时候,甚至在后台数据库里,只能找到数据的一部分,而其余部分被保存在无法访问的文件里。
写后台程序的人,会基于各种各样的理由,写出可读性极差的代码。
比如:读写效率、数据安全、修补bug、系统健壮……
又或者不想被人继承代码,取代自己的位置,甚至单纯为了个人兴趣、编程风格……
都可能导致这些人,搞出种种令人费解的骚操作。
当然,也可能老高的技术还有缺陷,或者他是从虚拟内存、交换文件里挖掘出来的数据。
也有可能在“作案”过程中被人盯上,不得不提前断开连接……
总之,摆在江寒面前的,就是这么两张各有缺陷的表格,外加一个图片压缩包。
接下来,江寒首先要做的,是从《原始数据表》里,筛选出需要的记录,复制到《报名信息表》里。
这一步非常简单,只要用excel自带的VBScript编写一个小脚本,将两个表格按照姓名匹配,就可以得到每个考生在原始表里的行号。
当然,同名同姓是避免不了的,可能报名信息里一个“张三”,在原始数据里会找到一堆“张三”……这个一会儿再说。
脚本编程非常简单,江寒只用了二十分钟,就写完程序并调试无误。
按了一下预设的快捷键,脚本开始执行。
一边是3万多行的考生姓名,一边是10万多行的原始数据,脚本足足跑了八分钟,才得到了一个映射关系表。
接下来,是第二个脚本,参照映射关系表,将原始数据文件筛选出需要保留的行,其他行全都删除,然后按照《报名信息表》的序号,重新进行排序,得到临时文件1。
这个临时文件的行数,要比报名表多出几千行,这是因为江寒对重名进行了处理,将重名的人都编上了相同的二级序号。
接下来处理重名。
经过一番分析,江寒发现,原始数据表和报名信息表里的数据,排列顺序是有规律的。
其以地区为主关键字,所在学校为次要关键字,而所在班级则是第三关键字排序。
也就是说,一个学校里,一个班级的人,都挨在一起,学校、地区之间也没有混乱。
这样就好办了。
由于临时文件已经按序号排列,重名的人拥有同样的二级序号,自然就聚拢在了一起。
这时,只要看一下这些人的所在地区和学校,就能轻松分辨出哪些是多余的,那个才是真正对应于《报名信息表》的。
如果一个班级也有同名,就只能具体情况具体分析了,实在确定不了的,就先记下来,放在一边,以后再说。
一番整理后,临时文件1已经十分接近高老师希望得到的《报名信息表》。
联系电话、家庭住址,毕业学校、班级、民族、年龄、出生年月日都有了。
接下来是重头戏,通过照片判断每个学生的性别。
幸运的是,虽然《原始数据表》里的身份证号,残缺不全,导致性别信息不可用,可是《报名信息表》里还有部分残余的性别数据。
这就给江寒减少了许多负担。
接下来,先将照片.rar解压,然后观察了一下。
三万多张照片,按学校、班级分类,放入几千个文件夹中。
每个文件的大小,都在10KB至30KB之间。