[HTS]Permanent Programming Challenges 5

Fix a corrupted file This level is about a corrupted file. Someone downloaded a bz2 compressed png-file which contained an important password. But he forgot something important, and so the file got corrupted. It is up to you to fix it. Difficulty rating: hard

Level 5 This level is about a corrupted file. Someone, using the windows command line ftp client, downloaded a bz2 compressed png-file which contained an important password. But he forgot something to take into consideration, and so the file got corrupted. Get this file HERE , reconstruct it and send the password as answer. You have 600 seconds time to send the solution.

上面是在HTS上对这关的一个描述。简单的说就是ftp传输导致压缩文件出现问题。 通过尝试+简单的搜索,就可以知道ftp传输导致的问题所在 传输2进制文件需要使用BINARY模式,而题目中用了ASCII模式,因此会导致0a被替换为0d0a 简单的全部替换处理后,发现无果~~想想也是,不然咋属于Programming Challenges呢~~ 那么如何写这个程序就成了关键 一般里面可能需要替换的内容大约有30-60个,我没有使用c++这种编译型语言,因为对2进制串(可以当作字符串)的处理太麻烦。抉择后使用了php来实现,毕竟有比较好的对bz2的支持,嘿嘿 考虑到全文替换,而且是有选择,有规律的替换,那么递归可能是一种比较简单的想法。而且题目给了600秒,那么递归效率低的问题也可以被无视了。 个人不喜欢用递归,咔咔,还是希望可以用比较高效的方法。编写难易度方面的问题不是很看重。 毕竟HTS还要继续,我也不好写的太详细了,简单的写几点吧,就算一些hints吧~~ 1.不要考虑去替换,用其他的做法去替代 2.对于每个文件,其可能性集合牵扯到杨辉三角中的某一行,虽然不用完全考虑 3.使用bzdecompress函数来检测是否成功(只针对php) 4.给出一个php的检测bzip2合法性的小程序段 偶用php写的脚本得到结果用了0.2x秒。 ps:多谢老婆乖乖陪偶去BFT刷夜,才让我顺利的完成这关的编码哈~~

《[HTS]Permanent Programming Challenges 5》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注