|
本帖最后由 bihaiorg 于 2021-4-8 06:49 编辑 8 k: I$ @4 l. P* L0 E
3 u# {5 r, z3 v9 M2 n
eudic 文件格式浅析
- b7 M) ^ e" A* J1 F- w% g* t! m
0 N! v# o/ G$ H, z4 z% s# |, i6 N K4月8日进度:
" t+ D7 v+ R2 g6 g) F% n. _- Debugging...
- 已解密大部分《有道》只读不写、《欧路》词库,读写未加密词库。其余已支持《星际词霸stardict》、《灵格斯词霸》、《goldendict》等大多数词库格式。
- 突发奇想,既然兼容了大部分词典,是不是应该考虑写一个新词典工具呢?恐怕要做自由软件,收费困难,动力不足。
# ` X2 ~& y4 E* l3 C6 Z5 u' x& [3 O# f( G- l
& d" S p- Q8 |- R
& ]( ?: O* v5 @+ Y* J8 a+ {* Z3 V+ d" g& I
4月5日进度:% f. l# x7 u& b F3 Y- u
感谢各位大佬支持鼓励!6 U+ g6 G, D* O2 X2 l1 O2 c( Z8 `
Debugging.... h, g' ?2 |1 R6 j
EUDIC全系列解码测试,包括AES192加密等。
# M* s5 D6 ?: e5 }( h1 _有道全系列解码测试,包括YDD、DAT、YDIC、JSON等。; S' I* @5 H- _ M
海笛词库解码测试,包括DGZ、ADGZ等。
( ?5 K* V3 ~* r. \5 T7 V2 M其他的,还有必要解吗?大部分都是开源了。
% R& X A% q3 r9 R) r, _3 d: t3 C个人觉得不应该发布这种转换工具,看他们用户协议写着“不能反编译、反向工程,不得制作类似软件”什么的,不过俺一不是他们用户,二不是靠反编译、反向工程,纯粹靠猜,至于是不是制作类似软件什么的,管的着吗?
C' A2 J# W" L! V9 q还是有点怕法务部。! \2 \0 ]4 L2 e
很迷茫。。。8 w2 o% }9 ~7 J2 f& X& c$ G& x
各位大佬有转换需求,可以私信发给我,有空必回复。% q4 m# m, k( m* _
& v3 D* K/ ]$ G
0 b( y6 F* F% I& M S7 d/ N$ _: G
' _0 q. K" o% S( P7 c+ y9 A3月26日进展:0 y+ J% \: }2 p. B
Debugging...! M% s- L" t+ K) d& H' D7 n
顺便解析了《有道词典》安卓版的词库(桌面版格式不同)
( d! L3 o- V4 ?, dA�{"wordList":[{"h-g":{"p":[{"p":"pron"}],"i-g":{"i":{"audio":"http://ydschool-online.nos.netease.com/oxford_Advance_video_US__/_e/_em/_em_1_gb_1.mp3","content":"əm"},"y":{"audio":"http://ydschool-online.nos.netease.com/oxford_Advance_video_US__/_e/_em/_em_1_us_1.mp3"}},"r":[{"r":" <i>informal</i> "}],"h":"'em","x":[{"xr1":[{"xt":"eq","value":[{"xh":"them","xt":"eq"}]}]},{"chn":{"content":"别让他们跑掉。"},"content":"Don't let 'em get away."}]},"Name":"'em"}]}& T& G: A7 }" g# S; m* g
* N0 t" I2 e% M3 W- L8 D7 P2 h( K2 k- Z2 e
3月24日进展:
+ l( L4 S! Z- X+ C" S. W n" s* v完成各种EUDIC版本格式解析,包括dic文件夹下的主词库combined.bin、phrase.bin,支持解密,支持解析附加资源文件。& x+ N2 A8 v" e4 k9 L9 X0 m* }, s
" o& R F1 m8 m5 E% e$ q# @; h, a* j3 K) h" a% Z
+ s5 [7 y* _5 O3 S2 G
1 k; `3 D1 F* m
3月23日进展:
, Y, C- }" |& T; t6 `完成eudic解密及词典目录列表,vb6写个演示版
2 r" j9 S) C* Y$ g5 k: d$ R
0 Z. o- `. W& z& d. @$ i
. ]( M" y0 U/ ^5 F1 o" x3 t/ x7 j: V2 _) @
$ w+ u$ G$ u2 t1 l& c z$ M( D2 x7 R) L3月初
& m8 D+ s* ], t& I" b; t; @# L! ~txt转EUDIC有专门的工具,反向的好像没找到,只好自己研究一下:
! o3 f6 D/ P9 _7 |3 A M! G) @3 F- private bool ReadDBHeader(GClass103 dbHeader, BinaryReader eudicReader). k3 W+ }% t+ T$ g& ?: @
- {+ o" L. b- _ o! r; V
- MemoryStream memoryStream = new MemoryStream();
- t+ G$ }! R3 a0 }9 K - //BinaryReader BinaryReader = new BinaryReader(memoryStream);
5 M; Z R) o; i6 m -
O5 S' w% \, }5 d - eudicReader.BaseStream.Seek(0L, SeekOrigin.Begin);
6 i1 P3 [' V% P0 | - Byte bFoo = 0;
1 q9 Q$ Q7 [) z) r0 l - bFoo = eudicReader.ReadByte();//865 D" j# j4 G/ E' a2 y$ H! W
- bFoo = eudicReader.ReadByte();//17
5 C0 _( N! _) j: L4 A - dbHeader.int_0 = eudicReader.ReadInt32();
# q6 S4 n8 j3 U* s7 r5 \4 R4 M - dbHeader.int_1 = eudicReader.ReadInt32();' i0 }- W0 P G4 m. V& W( O/ E
- dbHeader.genum5_0 = (GClass0.GEnum5)eudicReader.ReadInt32();$ _! `/ L+ \* O7 F2 d6 N
- bFoo = eudicReader.ReadByte();//52! x8 k2 j& ^8 _2 H, H& X
- bFoo = eudicReader.ReadByte();//12/ D0 x7 E# [& ?$ k p
- uint iFoo = eudicReader.ReadUInt32();//3u
* |3 u# r! o2 i/ O, n$ M! A- s1 | - byte[] buffer = new byte[1018];, W. q2 y9 {- P8 G: }
- Random random = new Random();
( N. R1 G% U( P e4 R' c8 v - random.NextBytes(buffer);
* _7 _' T* N y! w) ?" }/ ` - buffer=eudicReader.ReadBytes(1018);
9 y" h; g: c8 B+ A - byte[] array = { };# E% Q' o. s" }* `+ I L. r) I# }
- int arrayLength = dbHeader.int_0;6 F e8 u5 @) I7 O7 i( U* w
- array =eudicReader.ReadBytes(arrayLength);
& r0 ]. D* V2 K z' ~ - dbHeader.int_5 = eudicReader.ReadInt32();* ?8 M' _% x, q I2 j& i6 |
- int num = 0;! q- X! ~0 d( U
- checked6 G$ Z; d' D( k h! L1 V7 s
- {1 y) J- P( a. ^# p
- int num2 = dbHeader.int_5 - 1;& k; O1 w* Q0 \+ J/ _: v
- for (int i = num; i <= num2; i++)
8 E2 U: p T& ]; C& t8 t - {
% S* T: b" z/ a) s1 T3 n - dbHeader.long_3[i] = eudicReader.ReadInt32();
( l/ V8 Y/ r/ @* f1 y0 a - }, w- R2 J9 f9 D% D
- eudicReader.ReadBoolean();
0 h) j/ w& W6 X" C$ Z0 S; [ - dbHeader.int_1 = (int)eudicReader.BaseStream.Position;
) @* k" W- k0 S) n; M d - //bool result = false;
$ j, S3 f& W E/ e; Z - //return result;
- C" d- q% J1 f9 S+ v - }. j1 B, A) B6 S$ V/ g
- return true;
* i6 f) @; c# t8 S3 r: b: ] - }
复制代码 : @* U2 D) c( J3 q! H) s H
看来挺复杂,其实也没啥。/ _% `0 ~5 \1 ]' B" E1 w8 z, n# T' i
估计过几天放一个转换工具,不知道是不是侵犯版权? |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?免费注册
x
评分
-
9
查看全部评分
-
|