饿...本来想还是自己注册个号的,取个有点个性点的名字,结果发现今天不能注册 [s:70]# P2 a- O. E: S; r
+ U# x+ T/ X5 F6 i1 g3 m
PS.一下,偶是粥粥兽啊,HOHOHOHO8 ^2 A1 |% r/ U1 K
9 y: ? F; ^& e9 n2 J$ X那么就来说一下我对大鱼游戏中经常出现的xmle文件的发现吧2 D% K7 ]" c& h0 x* p- O! j3 a$ ~
因为一个偶然的巧合,咖啡发给我的游戏里有个XML文件夹,我粉高兴,觉得这下肯定很好解决了,结果打开一看7 f. s& S6 v1 h
却是xmle文件,改成xml却也是打不开5 _9 |2 Z1 @6 I0 e0 G5 F: d
1 N/ b, K" i" \/ a
用CT打开一看才发现这哪是XML啊' C7 b" I$ j* x. y8 M
网上查了查无果,可琢磨着,这不是XML为什么要放在XML文件夹呢,于是我再次运用CT,盯着那些文件看,总算发现
4 p6 d8 q/ R* R& N. k; C他们的文件头5 {! A5 \- x# e! W5 C( } \8 }
=>ylm!wdsrhno<#0/1#!dobnehof<#tug,9#>?
& m' Y3 e4 a# u% Z* E感觉有<有>还有?怎么看都有点像是XML文件的开头啊,怎么回事呢?于是我找来了份XML文件做比较
4 ], O; O) }; f8 e/ k4 Y$ b. o一开始还没发现这么明显的破绽,哈哈,硬是对着ASCII表去看的,发现
. q% W& K3 M- ^% s3 H1 C7 H=<, >和? 都在一块,才发现原来只是+1的关系啊/ U; p0 [# L: h
原来没看仔细,哈哈,破解一下后还不对再仔细研究的时候发现了这个秘密(已经圈出)
8 ]3 I: K+ K' r; A( @. B一开始还没看懂呢,心里纳闷,怎么一会儿是+1一会儿是-1,到底是怎么回事呢?这么没规律,后来追踪了某个字母(好像是e)0 f# ^8 V0 I% x0 h2 v
才发现在那文件里,e一直是+1的,9 D) v. v* w( ^ K
+ |. X" p" u! R8 C# I才发现原来从xmle到xml的转换完全是按照ASCII代码来的
4 {1 Z- _' ]% N* ?+1 -1 是看ASCII的单,双数决定 (不好意思,我记性不好,又忘了哪个是+哪个是-了...后来写CODE也是....只能在解开来发现不对再改一下.....)
5 E* _, K+ a1 a2 P7 O+ D+ h5 G/ Y$ R$ |& F! H
于是我就开始写代码了,很简单的C++代码+ _6 i2 w! y5 g5 g
% \6 v1 _1 Z( n
int main()3 I8 R; E& e. }" h6 U. b
{
, z* F& Y- N* N: O fstream fin;
' p# T8 p6 [% F% Y/ m1 N; z fstream fout;$ W3 m. v- c b& b2 T
//right now we are decoding *e files6 g) B- t4 K1 U, F4 r! i
fin.open("test.xml",ios::binary|ios::in);
3 X# ?- d2 L. t" d: ^& R4 I fout.open("text.xmle",ios::binary|ios::out);" Q U, F: v. `0 a- _+ u
! z/ H, ]+ P! H( G
if (!fout.is_open()) printf("outfile cannot be opened\n");. s2 K; l0 l# |$ S2 k: ^
( h, R. N! p4 ?/ d6 J
fout.seekp(0,ios::beg);1 s, [* L/ ?, F( s
fin.seekg(0,ios::end);3 v a, F6 f- m" c) k1 u
int size = fin.tellg();" K- h: z; j- [6 f' u. D* a- g
fin.seekg(0,ios::beg);, U0 c; `7 x5 h
$ |; p0 M. I8 |
char *buffer;
! X: @( l7 B& L2 d9 ?1 ` buffer = new char[size];& Z; [7 x1 m5 f' j" e
fin.read(buffer,size);
3 n9 x3 b) O6 V4 f5 w+ I printf("size = %d\n",size);
1 h9 D* h7 a9 k6 z" v2 i' W* `1 k int count;
/ y4 S1 m& J5 ^1 P0 m for (int i = 0;i<size;i++)7 E) U' S& ^. f4 g' w4 h: {
{3 N5 Z& I4 a# y5 ^
//encoding* v5 b4 q5 a, O3 x! O! N
if ((buffer % 2) ==0) fout.put(buffer+1); //if even subtract one
# B; _ I& F& v( I. h/ C# ~' T else fout.put(buffer - 1); //elsewise we add 1
' h* X* e$ z' [8 o4 l } c4 z" L$ e d5 n+ L. }
; F$ f, D% M) w/ {4 Z) K5 R
fin.close();
$ e. q7 G" I$ z1 P v5 L fout.close();2 l0 c8 [& S7 y: v& x: C4 O- R
}3 G+ b& h0 n4 c" I' W
+ t+ L7 o4 c# D" U* z# T4 ~那么,需要破xmle文件的朋友们,enjoy |