饿...本来想还是自己注册个号的,取个有点个性点的名字,结果发现今天不能注册 [s:70]1 @& c- O L, X3 d8 T% f( T
3 O& y5 o3 s; \$ f+ | t
PS.一下,偶是粥粥兽啊,HOHOHOHO
) Y6 L$ e+ J* d, K. p# F/ s- ?2 A& x: m, j
那么就来说一下我对大鱼游戏中经常出现的xmle文件的发现吧
( K% \: b. B( R m9 [因为一个偶然的巧合,咖啡发给我的游戏里有个XML文件夹,我粉高兴,觉得这下肯定很好解决了,结果打开一看3 D1 Q# F& C& w3 @. r3 a
却是xmle文件,改成xml却也是打不开
4 C3 E! H/ o) S- [2 k
# t% J* f, }, Z, O用CT打开一看才发现这哪是XML啊' |/ s* O5 Y; M5 j% R) V( X, A" d$ s. J* {+ h
网上查了查无果,可琢磨着,这不是XML为什么要放在XML文件夹呢,于是我再次运用CT,盯着那些文件看,总算发现% b" F6 n9 X9 G( s, a. F0 q1 H
他们的文件头3 K( f4 l3 J, o" S, F
=>ylm!wdsrhno<#0/1#!dobnehof<#tug,9#>?" Z- P" M* e t4 V D3 ]$ \7 j
感觉有<有>还有?怎么看都有点像是XML文件的开头啊,怎么回事呢?于是我找来了份XML文件做比较
: P1 f+ h6 ?: L& t8 h一开始还没发现这么明显的破绽,哈哈,硬是对着ASCII表去看的,发现3 g1 o& t! M h% M1 U& y
=<, >和? 都在一块,才发现原来只是+1的关系啊/ `. v0 Z5 h/ k- a
原来没看仔细,哈哈,破解一下后还不对再仔细研究的时候发现了这个秘密(已经圈出). @: E5 ^0 { |* d- q
一开始还没看懂呢,心里纳闷,怎么一会儿是+1一会儿是-1,到底是怎么回事呢?这么没规律,后来追踪了某个字母(好像是e)
7 r4 R/ t' O0 Y6 q才发现在那文件里,e一直是+1的,0 j& i. \# V/ J$ S1 H' L2 f. z
# m: S; q& E) \5 E; y才发现原来从xmle到xml的转换完全是按照ASCII代码来的
3 k: m# Y; e' @( K+1 -1 是看ASCII的单,双数决定 (不好意思,我记性不好,又忘了哪个是+哪个是-了...后来写CODE也是....只能在解开来发现不对再改一下.....)
8 G6 X! v4 u- X v1 c9 L2 [. I) i) z, n/ ^% y8 @
于是我就开始写代码了,很简单的C++代码& k7 V( N2 F( I& a0 [
0 e# o7 g, `9 h K5 o
int main()
8 W3 \6 m9 l- L) `' Q/ g& e{
% u. H7 _+ C8 s! M/ y fstream fin;
6 `$ a2 b4 Q9 N fstream fout;
0 u+ q4 v4 E: F+ B' P2 m7 d' P+ h @ //right now we are decoding *e files
2 l) q! {" Q" p/ z0 H' ] fin.open("test.xml",ios::binary|ios::in);
9 |& W$ e1 V) ~ fout.open("text.xmle",ios::binary|ios::out);
! A' L* r4 r8 h
. f, B! I: X( l! V* S if (!fout.is_open()) printf("outfile cannot be opened\n"); F% o& x: ]- \# S7 \ n2 V
9 d! g7 v1 m0 I( i2 E- n6 Z" o- |. m
fout.seekp(0,ios::beg); P+ {$ D) q& @0 ^5 T
fin.seekg(0,ios::end);
/ W/ ^# j8 v# _ int size = fin.tellg();
. _5 o: h( q% r1 V0 @8 }" I8 x fin.seekg(0,ios::beg);
4 \5 W7 s. n# J; ~6 m# W `" d! k) F5 U* O: B: ^( G
char *buffer;
' I$ y+ Z1 n+ \! l/ _ buffer = new char[size];
- d0 p5 c$ ]$ b( X fin.read(buffer,size);
1 Q" h! y4 ^) C$ J8 w8 l# g printf("size = %d\n",size);9 n! Z7 w F; }4 S/ _
int count;
0 U: |5 Q$ K' m/ {. D) N; {& M for (int i = 0;i<size;i++)6 Y- Z& a0 z8 Z5 Z6 A$ @- I$ Y# c
{
7 ^) R( I; g) Y //encoding: J/ P6 z6 d* g, W& |. I* l7 s$ B
if ((buffer % 2) ==0) fout.put(buffer+1); //if even subtract one
1 f7 I* J4 C7 E/ C2 G else fout.put(buffer - 1); //elsewise we add 1
6 m5 D: y2 {6 i5 ^ }# r2 g. e S- Z3 K" B
4 n$ _. a; |* h6 J( \. w fin.close();
; J1 w% C2 c4 E) _6 M& Y2 m3 y" b& [+ h fout.close();
' {. ]0 T9 R* U( g}" u( T3 @' V1 m, F% T
: g) ]( m2 U+ v. j那么,需要破xmle文件的朋友们,enjoy |