KeyFansClub

首页 » - 特色讨论区 - » 土豆星 » 求 土豆文编码规则,我想做成在线版的
mysteryboy - 2014/2/6 16:55:00
如题,
今日翻土豆文的资料,都是介绍,实现方式不明,泪目。。。

如 1 的土豆文是
土豆滅滅苦滅勝滅利彌密寫醯苦耶滅藐苦滅滅

对应编码为:
-1
61
0
0
1
0
24
0
16
37
76
68
41
1
4
0
96
1
0
0

囧啊 怎么组合出来的,希望能公开算法。。。。趴
水羊 - 2014/2/6 17:17:00
這是prz作出來....
也只有prz最了解
找prz私聊吧
除非有其他人去破解然後有經驗了,跟你相談
不然,我是覺得沒有人會有辦法
PS:我好久沒看到prz了
=================
Prz最后一次上线是3年前 /Orz/ 找不到联系方式 >.<

= =|||
管理群是絕對能找的到,但我好久沒看到她,也忘了她的QQ號是哪個
==============
看上面的評分

上個月我很常不在,並不知道那件事 orz
goodbest - 2014/2/6 17:35:00
http://www.keyfc.net/bbs/tools/tudoucode.aspx

你要的在线版...没有存在感么?
リン - 2014/2/7 2:20:00
不是呀、水羊、你在想什麼、
看我上面的評分呀!
快、戳上面的黑色小方塊!我是說分數、不是說內容
thredotolu - 2014/2/7 12:54:00
看雪论坛有人分析过算法,但貌似失败了。
http://bbs.pediy.com/showthread.php?p=1222400

好吧,我也看错了,这不是土豆文。

土豆文使用的3个程序都加壳了,压缩壳。说明设计者不想程序被轻易破解。其实逆向分析这种事情也有点那什么。最好还是问本人。
公主的猫 - 2014/2/9 16:06:00
计算时请自觉去掉“土豆滅滅苦”的前缀,这个不是密文 XDD


当时据Prz所说,这个其实就是替换,但是从结果来看肯定是有玩些手段
那么接续之前看雪论坛有人做出的分析,那么有一种猜想就是这个加密是以128位为1块进行的,然后存在一个可逆的函数f(x),每次将一个块带入f(x)求出一个同样为128位的唯一解,而解密过程则是求f(x)的反函数

至于加扰的方式,似乎没有明显的规律,以下是猜测:
1. 加扰的字符存在某种特征(例如高位为1)
2. 扰码可能是根据一个16位整数特征生成的,这个整数可能是密文的头2字节,这个特征数据中每一个位对应密文当中的一个字节,当该位为1时则对应的字节前面加扰,否则不加扰
3. 扰码的字符是使用上述特征码作为种子初始化的伪随机数来进行选择的,可能是rand()%128+127后查表

如果以上条件成立,那么扰码的生成规则就是这样的--
密文各个字节依次为 A B C D E F G H I J K L M N O P
那么扰码特征则为 A B
将字典中所有权重大于127(最高位为1)的字符作为加扰字符,设扰码字符为X
如果A小于127则A前面不加扰,否则就加扰
这时读取头字节数据时就存在两种情况:
1. 读取到了X A ...(A>127)
2. 读取到A ... (A<127)
情况1:高位为1,这一个字符为扰码,有效数据从下一字节开始
情况2:高位为0,这一字节就是有效数据
读取到第一字节后后面的扰码就一目了然,马上就能顺利读取一整块数据,然后调用反函数解密

512字节后加入了压缩,可能就更简单,因为每次数据虽然不同但是定长,只需要每次创建一个随机数,然后用随机数依次异或每一个字节,然后把随机数和密文一起编码返回就能获得良好的效果,压缩的话最常用的就是zlib,简单几句话就能完成压缩

以上推论成立的话那么关键问题就是要扒到映射函数f(x)的真相,然后每个加密字符的权重,所有的数据都能倒推
如果是自己想要开发类似程序的话,那么只要自己设计一个合适的f(x)剩余的就如猫所说肯定能实现
1
查看完整版本: 求 土豆文编码规则,我想做成在线版的