|
本帖最后由 bihaiorg 于 2021-4-8 06:49 编辑
# l& h1 l/ A2 ^! T; Y; ]( O9 q( q& j4 u' i0 Q
eudic 文件格式浅析1 x- l8 v0 i9 ^: Y6 u) g5 k3 j
+ ^( i% v c- p7 P" V
4月8日进度:
% D: d: U$ ~ m2 y0 Q, C- Debugging...
- 已解密大部分《有道》只读不写、《欧路》词库,读写未加密词库。其余已支持《星际词霸stardict》、《灵格斯词霸》、《goldendict》等大多数词库格式。
- 突发奇想,既然兼容了大部分词典,是不是应该考虑写一个新词典工具呢?恐怕要做自由软件,收费困难,动力不足。* K1 t$ R& M' O- i
" a$ Q" s7 i) l, e2 W" O
6 J) y* S8 n. f# R1 _* b
' Z" ~. t3 f+ V) c7 ~! q' h0 z1 K0 @7 i s b7 r5 N, S2 @& y' d
4月5日进度:
+ g/ v. q: P1 P" J6 k2 m$ `+ ]9 \感谢各位大佬支持鼓励!; X% I: n v& u/ l0 q# q6 {
Debugging...1 V. v6 D* A' ]2 {4 X+ w9 g' _
EUDIC全系列解码测试,包括AES192加密等。
L. H) a' F5 s4 d有道全系列解码测试,包括YDD、DAT、YDIC、JSON等。+ K6 V( C. E, F( ^+ ]# y
海笛词库解码测试,包括DGZ、ADGZ等。2 A) o) r5 C. m, o- q4 v) y
其他的,还有必要解吗?大部分都是开源了。+ M d8 ]7 o1 B, P. I) z
个人觉得不应该发布这种转换工具,看他们用户协议写着“不能反编译、反向工程,不得制作类似软件”什么的,不过俺一不是他们用户,二不是靠反编译、反向工程,纯粹靠猜,至于是不是制作类似软件什么的,管的着吗?
1 m1 A! Z$ |6 U$ |5 a* H- H还是有点怕法务部。, S6 R0 |' S! D1 g7 C- l; A
很迷茫。。。
( y$ N) Q# ~: G4 [1 O各位大佬有转换需求,可以私信发给我,有空必回复。
3 b: P% c' `: m: t5 R* e
/ N: E4 V" p! Z6 x
) ^+ M+ Z* k) b2 {2 s6 |5 h8 [- ~* v' E# k% T' U1 T' _; D
3月26日进展:& d9 K. |, h- H: x
Debugging...
- c0 l8 t/ L, {) G, ^5 A顺便解析了《有道词典》安卓版的词库(桌面版格式不同)* q- R8 l L! }% m* s
A�{"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"}]}4 Y; w" h+ l8 r! F( L) M' c
% m7 U) N$ ]0 P- @ |! N+ f2 } }# Q) \/ P
3月24日进展:; ^6 Y: w4 l% Q% E5 l
完成各种EUDIC版本格式解析,包括dic文件夹下的主词库combined.bin、phrase.bin,支持解密,支持解析附加资源文件。
2 s7 E. j. }8 f0 y; i# O) `: @! M' V# \% N1 Z( P, b7 U7 Y
0 q* F& P- Q/ i" _% n
- C0 ~/ @! K3 t/ N! m
0 j, m r# U+ o& ^6 {" B3月23日进展:
: }5 x7 Q; S8 \- c完成eudic解密及词典目录列表,vb6写个演示版
" T m7 @7 u4 D# |3 p
* i5 ^0 {" v1 e& G. }: a) |0 I f+ O; m# @. A( v
8 I% F! _: ~: ?7 D8 b: Q' H! l* X
- m) G' p% S! K$ p- u |9 C) K
3月初
. C8 U# k( N# R! p3 btxt转EUDIC有专门的工具,反向的好像没找到,只好自己研究一下:
4 ?5 F# j7 W. m8 j# p0 K, a- private bool ReadDBHeader(GClass103 dbHeader, BinaryReader eudicReader)4 a3 t7 H+ `9 g1 C: h
- {8 [9 S4 ~+ U. W6 q1 K
- MemoryStream memoryStream = new MemoryStream();
# i' e, f3 X$ ^, n* v - //BinaryReader BinaryReader = new BinaryReader(memoryStream);7 c W. j: C) L: r0 O
- 3 b$ Z/ A2 N2 e0 y& r
- eudicReader.BaseStream.Seek(0L, SeekOrigin.Begin); - }" B2 F- @+ G" v. c6 t7 N
- Byte bFoo = 0;
4 y- x3 Z1 q0 i G; B - bFoo = eudicReader.ReadByte();//86, z' J" |9 X; w) {
- bFoo = eudicReader.ReadByte();//17
, R% u& h7 Q- \) d6 z8 _: Q; b7 E - dbHeader.int_0 = eudicReader.ReadInt32();
& F2 |% x9 a7 M3 P/ @ - dbHeader.int_1 = eudicReader.ReadInt32();
% N; {! Y2 S. Z2 K( t - dbHeader.genum5_0 = (GClass0.GEnum5)eudicReader.ReadInt32();
- Q4 g2 x5 a+ o - bFoo = eudicReader.ReadByte();//52
8 H8 V8 t0 S3 z% D5 `; c - bFoo = eudicReader.ReadByte();//12
4 G" K" F! j4 }, f3 V7 G. ]: e! v - uint iFoo = eudicReader.ReadUInt32();//3u
' O" E% i5 A; U- }, f - byte[] buffer = new byte[1018]; d+ \' L3 S5 k" O- O' j. X
- Random random = new Random();
i% N1 d% M% F - random.NextBytes(buffer);
, G8 f7 o* ?! B" W8 y - buffer=eudicReader.ReadBytes(1018);
6 e' t9 A7 u2 ]5 J8 w - byte[] array = { };
8 c$ ~3 Z( v" V, ?" l+ B - int arrayLength = dbHeader.int_0;+ j1 d: Y# w% i2 `% |
- array =eudicReader.ReadBytes(arrayLength);: C# u- Y# Q# [# f2 M1 t- j
- dbHeader.int_5 = eudicReader.ReadInt32();# A8 Q6 L. Q$ \/ R
- int num = 0;
7 V# ?8 Z# J6 Y' E C- ~' o - checked
: {! g! F: [; T: A - {- w0 a9 Z% q# ]4 ?2 H; g9 P) j
- int num2 = dbHeader.int_5 - 1;
j% e; @- M, `& a! E - for (int i = num; i <= num2; i++)
9 m J5 B3 G8 {0 e: _ - {
5 [5 L1 z* c- \ - dbHeader.long_3[i] = eudicReader.ReadInt32();
4 k/ A) P" Y l( n1 _0 e1 o - }
( w/ p! W1 Z7 o+ ?/ O! A - eudicReader.ReadBoolean();1 N6 W9 m$ I$ l! _: d7 z) |; a1 p# j
- dbHeader.int_1 = (int)eudicReader.BaseStream.Position;6 ?% g, z- Y2 z- q# f
- //bool result = false;
$ e. O G B5 ^; g) r1 w5 \ - //return result;
9 M$ ]$ r; h D, g - }
1 {" s8 `, `0 ~9 h0 b' A - return true;
4 ~5 [ c' x- ~2 q4 W - }
复制代码 4 U8 U: K/ z" O) y3 e/ S
看来挺复杂,其实也没啥。, k4 z5 ~0 x; X/ \
估计过几天放一个转换工具,不知道是不是侵犯版权? |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?免费注册
x
评分
-
9
查看全部评分
-
|