|
本帖最后由 bihaiorg 于 2021-4-8 06:49 编辑
2 Q4 h E, l1 E3 q) s0 [$ b% [8 ?" z+ j! ]
eudic 文件格式浅析' }1 x. _/ K. u r
! M* a6 f5 d0 P# z" z# U4月8日进度:
% {3 g, j( {) O! Y# q% S' T5 X- Debugging...
- 已解密大部分《有道》只读不写、《欧路》词库,读写未加密词库。其余已支持《星际词霸stardict》、《灵格斯词霸》、《goldendict》等大多数词库格式。
- 突发奇想,既然兼容了大部分词典,是不是应该考虑写一个新词典工具呢?恐怕要做自由软件,收费困难,动力不足。' W, V0 h; n. u0 E$ l
/ n( `+ I/ d$ a+ P
- v) `; v; M% i8 ?- i
7 M: t1 J' G# |' j; I- p
6 N: Q' F, L" w) C0 r# s. B4月5日进度:1 u: o% S/ x* ?- \
感谢各位大佬支持鼓励!
" I( H6 j) h) T5 N0 vDebugging...
2 E4 z' A0 J8 C+ i! jEUDIC全系列解码测试,包括AES192加密等。
' s5 [9 S: w& H* z0 I3 U有道全系列解码测试,包括YDD、DAT、YDIC、JSON等。& y: t$ J& U" Y f/ m; D
海笛词库解码测试,包括DGZ、ADGZ等。
! B' x. j8 h( z' v: \9 l- u其他的,还有必要解吗?大部分都是开源了。0 r l' |2 n0 I) [0 P1 K
个人觉得不应该发布这种转换工具,看他们用户协议写着“不能反编译、反向工程,不得制作类似软件”什么的,不过俺一不是他们用户,二不是靠反编译、反向工程,纯粹靠猜,至于是不是制作类似软件什么的,管的着吗?
& N; ]" l. n+ T2 g% E4 h5 ?还是有点怕法务部。. J8 V4 R5 _2 b$ t
很迷茫。。。+ r- |& K8 O) U, @" [% {) I7 u
各位大佬有转换需求,可以私信发给我,有空必回复。3 ^: M& n3 ]- k/ |; d8 D8 U
0 `# J2 a; C \2 X; Z8 H
) ~" o6 C/ c* u) y) t. r& x% W) ~, b6 v( V4 z& f5 E, N5 {- A: m
3月26日进展:
+ k5 s* |* c0 Q3 f/ TDebugging...1 r1 j) h' p% z2 K8 G; S3 v
顺便解析了《有道词典》安卓版的词库(桌面版格式不同)3 F' T+ a% ]+ a5 L
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"}]}
2 w! ]! |9 O+ ~8 F
$ C0 J, S: {4 y7 O& \, G) i" o- y% i! x
8 ~$ v/ \/ o( z" R3月24日进展:
! U! p, h1 s. \ T2 o. H完成各种EUDIC版本格式解析,包括dic文件夹下的主词库combined.bin、phrase.bin,支持解密,支持解析附加资源文件。
5 H# z0 k+ V. q' x
* u* ^4 C: z4 p. a, }; A/ o4 z' H0 A+ j
, d! u6 x) o/ O, _) Z" M* Y
$ Y! o |+ i% B: o( H3月23日进展:9 _; e. \$ L, X
完成eudic解密及词典目录列表,vb6写个演示版
/ m- L! H7 P2 h8 j
7 t7 Y y5 d+ a* {2 s2 u* w
7 F+ {, S8 u0 m% {; \: g3 `# D! O6 T) h9 X; d8 \) n
0 Q6 ?# I9 }# y/ _' X3月初
5 l0 {3 s% X+ [5 p% Wtxt转EUDIC有专门的工具,反向的好像没找到,只好自己研究一下:
4 I7 g! Y; Q5 \. c: p1 Z- private bool ReadDBHeader(GClass103 dbHeader, BinaryReader eudicReader)9 Y' K- d5 u, k, ]7 s! z/ r
- { P# ~' p" U0 R' U! Z: j
- MemoryStream memoryStream = new MemoryStream();
6 t; |9 X* w% Y2 G# n+ B. `* F - //BinaryReader BinaryReader = new BinaryReader(memoryStream);
& P* m& T8 q8 |" \$ I4 K -
/ o/ q- V/ E6 o - eudicReader.BaseStream.Seek(0L, SeekOrigin.Begin);
. @( J3 e) A- @( l3 K y - Byte bFoo = 0;' H9 i; N: R' E& Z; W
- bFoo = eudicReader.ReadByte();//86
3 L3 \; J, H7 Z: }+ m - bFoo = eudicReader.ReadByte();//17
. r, c1 L9 o9 {6 _ - dbHeader.int_0 = eudicReader.ReadInt32();- k# E! W7 }( B6 P
- dbHeader.int_1 = eudicReader.ReadInt32();4 f# F p! I7 Z2 \
- dbHeader.genum5_0 = (GClass0.GEnum5)eudicReader.ReadInt32();; @7 i+ Z7 d( y$ ]
- bFoo = eudicReader.ReadByte();//52, S7 n1 c* Y4 u, B' h. }2 n( ?9 u4 j
- bFoo = eudicReader.ReadByte();//12
4 g% A1 m9 D" }6 }, F4 ] - uint iFoo = eudicReader.ReadUInt32();//3u+ d7 X7 l' l' n1 `5 ?* R( C- W
- byte[] buffer = new byte[1018];' S6 }2 k2 g& `' \6 V6 l
- Random random = new Random();
2 p4 E4 c' L; n8 v4 @! I - random.NextBytes(buffer);
+ C3 l& N8 i% d* V - buffer=eudicReader.ReadBytes(1018);. ] s5 _# C+ x; t
- byte[] array = { };, N) }/ {4 w% U ^
- int arrayLength = dbHeader.int_0;7 s5 b0 W1 }9 n7 ?: u
- array =eudicReader.ReadBytes(arrayLength);
" j8 O7 S+ p! j* N: o- I) i - dbHeader.int_5 = eudicReader.ReadInt32();
" L9 E0 U$ }4 ^$ t. ~5 j - int num = 0;
$ z/ Q/ x2 O$ v - checked4 s) j! \& Z+ [) h- t/ U
- {0 \: X* W) Q! _, X$ o
- int num2 = dbHeader.int_5 - 1;
( y7 Q* N, W1 [# F - for (int i = num; i <= num2; i++)
- E+ s0 J Q0 L6 \! h+ k - {$ i y! N& m9 O
- dbHeader.long_3[i] = eudicReader.ReadInt32();
6 N, E2 |! r% C0 l/ a - }. ^" r# N x2 q* X" p& J
- eudicReader.ReadBoolean();) `* ~4 |* G+ C, v9 e, ]( ^( W4 _
- dbHeader.int_1 = (int)eudicReader.BaseStream.Position;
- I/ r9 M m) `! n8 h; g - //bool result = false;" v; N \9 M; _, t
- //return result;0 f1 ? I) T) F- w; \# t1 T( I3 t
- }( Y" O5 w# r# V2 n& X
- return true;- R4 N9 K' e9 U% C' C
- }
复制代码 - ^# L5 d; _2 M3 X/ w* A& o9 K# ]* M
看来挺复杂,其实也没啥。+ n& r' J3 ?& {8 Z& g7 \
估计过几天放一个转换工具,不知道是不是侵犯版权? |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?免费注册
x
评分
-
9
查看全部评分
-
|