TA的每日心情 | 开心 2023-3-10 21:15 |
|---|
签到天数: 1329 天 [LV.10]以坛为家III
|
本帖最后由 enjoy了哦 于 2019-5-4 10:45 编辑
, F$ s! n4 `& l# _; C9 [$ W
: L5 F" K$ O/ R9 o" p- c这是apk文件(来源:360手机助手):4 ~ [0 g6 p6 |
http://zhushou.360.cn/detail/index/soft_id/431302
9 h$ F3 T$ J% o. R6 ]
3 h) |+ b' n8 w! x6 |- V! d此应用排版精美,为官方出品,但它的词库做了一定的加密措施,不太好提取。. c, |/ f2 a0 w$ k0 B! E$ \
下面是提取过程。' V8 P5 l& P7 S. N! q
0 s4 N5 f9 B/ N) U1 b$ |3 ^/ }首先以zip格式解压此apk文件,在解压目录的assets文件夹下,可看到该词典的核心内容:css样式表文件,字体文件,图片文件等。
: P; a% p& o' Q" G9 G+ I4 t4 h
) m8 v7 L6 @9 ?& |; P- z1 S3 r4 M) I/ U2 Z* e" M6 W
02/07/2019 12:27 PM <DIR> css
( k9 {/ X! I' C# T1 a- `02/07/2019 12:27 PM <DIR> fonts6 _/ d( v T. @ p! y# H1 C6 r
02/07/2019 12:27 PM <DIR> html
! l- {) Z7 D$ p( ? `. s4 r4 W02/07/2019 12:27 PM <DIR> images7 y, a9 e5 f4 U2 y: A
11/17/2011 12:27 PM 1,024,000 pearson5.aa$ ?2 ~4 n' ]/ l7 L3 u( G! O9 q
11/17/2011 12:27 PM 1,024,000 pearson5.ab6 O7 t! u: D9 ^' Y" R4 A
11/17/2011 12:27 PM 1,024,000 pearson5.ac
1 A. N9 K/ ]4 m" L% |" f7 s11/17/2011 12:27 PM 1,024,000 pearson5.ad* r; c/ W- b+ @! z3 Q s! L
11/17/2011 12:27 PM 1,024,000 pearson5.ae8 A$ ?9 Y) D/ ~* X8 z1 q
11/17/2011 12:27 PM 1,024,000 pearson5.af% e# m0 G- c' m
11/17/2011 12:27 PM 1,024,000 pearson5.ag
. ~8 e) r+ o. D& u. K& u8 s- [, p# `11/17/2011 12:27 PM 1,024,000 pearson5.ah
i9 Q. m+ H6 u9 W" ] K11/17/2011 12:27 PM 1,024,000 pearson5.ai
- S4 Z1 R* P& |$ h t+ i11/17/2011 12:27 PM 1,024,000 pearson5.aj7 r5 C$ J4 ~7 k1 E7 G
11/17/2011 12:27 PM 1,024,000 pearson5.ak
0 ~( n" m% q7 L11/17/2011 12:27 PM 1,024,000 pearson5.al
% `& r; w1 j% A11/17/2011 12:27 PM 1,024,000 pearson5.am
8 Q" V+ n' c% g2 Y. G11/17/2011 12:27 PM 1,024,000 pearson5.an6 p1 ]: q5 X* ]" }" t* u3 Q
11/17/2011 12:27 PM 1,024,000 pearson5.ao
" q8 {! a( O7 g$ C' T5 t11/17/2011 12:27 PM 1,024,000 pearson5.ap. O7 p0 }) o: ^' s& A
11/17/2011 12:27 PM 1,024,000 pearson5.aq
0 S9 t% p5 a+ ] b: k4 u8 L; u/ N! W11/17/2011 12:27 PM 1,024,000 pearson5.ar8 }, l8 U- \, K- A) ]' d& E
11/17/2011 12:27 PM 1,024,000 pearson5.as. x' g- e& Y: ~& U! a6 V( E" C
11/17/2011 12:27 PM 1,024,000 pearson5.at
5 W# {8 T( |# f' M# T+ U3 Y11/17/2011 12:27 PM 1,024,000 pearson5.au" ^/ l# I s+ p0 |1 E
11/17/2011 12:27 PM 1,024,000 pearson5.av
# j B7 `- E F2 \5 o6 H11/17/2011 12:27 PM 1,024,000 pearson5.aw
1 S! S9 d- {) C3 U0 X) l* J. h11/17/2011 12:27 PM 1,024,000 pearson5.ax
. W V k2 g/ A5 [: V" G11/17/2011 12:27 PM 1,024,000 pearson5.ay9 G8 H; J# ^7 S2 b
11/17/2011 12:27 PM 1,024,000 pearson5.az
l Y" e+ x8 l$ a" C11/17/2011 12:27 PM 1,024,000 pearson5.ba
E! |) @8 P$ W' s/ z' o11/17/2011 12:27 PM 1,024,000 pearson5.bb
. \$ C1 I$ ]) G& B11/17/2011 12:27 PM 1,024,000 pearson5.bc# ?6 g+ W& M: f5 d, |
11/17/2011 12:27 PM 1,024,000 pearson5.bd
! ^8 [7 }; b) D5 r11/17/2011 12:27 PM 1,024,000 pearson5.be3 `9 Z$ Z1 H; {$ l p4 `5 \
11/17/2011 12:27 PM 1,024,000 pearson5.bf8 J f2 V6 P1 C$ x* x
11/17/2011 12:27 PM 974,848 pearson5.bg
( Y* {" s$ e) K( \& N- @$ d& v4 ?6 t1 `: ~4 n. w; G, j5 L( c
其中pearson5.aa至pearson5.bg等33个文件总共加起来有30多兆,占据了apk文件的大部分内容,是词库文件。每一个文件都只有1000KB大小,是对词库文件做的处理,让它不容易被提取。
( `* |% M$ G6 a: o; G, q: D7 @
# T* U( X0 E; V" z; R6 l但是这个做法其实形同虚设。通过以十六进制观察pearson5.aa的文件头:
1 O* z7 O% i6 |2 c
/ |0 m) X8 f7 [. o2 {SQLite format 3...% Y8 t6 Q1 D! N+ w7 s. o0 E% R
' W$ V$ ~, S( F# |( t9 H* r
可知是一个SQLite数据库文件。接着同样以十六进制观察其它的文件名为pearson5的文件,发现格式都非常工整,应该是将原数据库文件按1000KB一块一块地截取而成。
$ B1 s0 V- C( ]* P4 U
6 D* j" l$ N% O2 X打开Windows的命令提示符,使用copy命令将这33个文件连缀起来,保存为dict.sqlite文件。
' l8 d6 ?, I# T ^, M; I! p; ]; ^& n7 l) Q3 g7 }& b
将dict.sqlite文件用SQLite程序打开,呈现出清晰的数据库结构,主要内容为entry_a, entry_b, entry_c, ..., entry_z这26张数据表。每张数据表存储了单词释义(pdata数据项)、发音文件名(usa和uk数据项)、词条(word数据项)、词性(pos数据项)等。
+ o4 D/ U. @* ~8 o5 I4 U3 j8 c
: R8 B4 J% z- t# Y7 Q; w但是在这26张数据表中,单词释义(pdata数据项)不是明文存储的。以这个单词fabulous为例,其pdata数据项里面的内容为:$ u1 f' U2 f" v( D# F2 u B
5 p+ L: Y; B2 U* [/ }' ^H4sIAAAAAAAAAK1UzW7aQBC+8xRTzg0YG1onopZQcJtIBBBBajmu7QEc1l5rfyD0xKnqK+QFkgfpqepb5AH6DN1dEwdUqUqrHizNzvd9M7Pf2O4WZ2Eu+TaodYuzCyRJGXzsB3MSKcqU6DbLs83PxhfhsDe9HA0N/rh7UPqpWAeoYY85y89ZgqI8TXT6x9f5t/vo5ufuC/1+Z0U2XbPRMX10HZDkxgI6tIxqvmvMBUKavKsrdx47p377tEXarus4pPEG3ajd0UGr1XG8txi3Ir9xQhKvbqX98H2At5JjhnQLC8YSYBzSrOAoRLpG08dwbJvZMNiwPEE+V9QAJmGA8FPvajwI7QSF4/gnjtNynbbnuo0NWdeDGVNAGVvBk4mvjHqv+nMFr6xAKilkSOhL5L7r+c5+gOkSgTOWwZKI50rrFDcCSMyZECA1hZIVNo5rN/fu/qvPcVz6/GHSuwpYrj2OcM44Qs5Ubqpb4GkTa+RbPQVf6C45kExzpNmHSD//tomlWuCLluCXHpgL9tUKH3d3AjT/fDQYjC6HWla927DR3sqlqXqA1v6zI52/caQaLeZIpNJv5WsoKIlRAMoYiNZlmMuU5ZgYzyQnSWqOhIKQjKdGECkJCdMNJOgqVLfE21TIQ0cn4aA3Dfvlh06tsc+po0s3q1/ELx84cjotBAAA
; H' D$ E& i- t3 e" X" g* i6 M
' P4 _, ^& r. O/ m+ `通过观察其他的pdata数据,这应该是通过Base64转换而来的,真是多此一举。将此数据通过Base64解密后,是一堆乱码:2 H( R) z1 \9 Q0 N5 ?
m: o2 {: P; T! l2 Z0 t4 i
, D4 }. q5 h( T
��T�n�@��S�7 u. q+ L3 k+ E! [% L
Z'��Pp�HAj9���^k �ĩ�+����[���]T�J�,���}3����ga.�6�u��$I|�s)ʔ�6˳����7�3 H4 \( J+ q7 q8 t( {: m0 p& g4 r
! a/ t. x9 G7 C��{P��X�a�9��Y��<Mt�����������~gE6]��1}t���:��j�k�B���+w;�~��Eڮ�8��ݨ��A��q���"�qB�n���}���c�t�`Ҭ�(D�F��pl��0ذ<A>W�&a��S�j<����'��r��纍8 ^$ ^$ F4 D, S; u* h6 w, W
Y׃S@[�����z��s��@*)dH�K����~���3�����J�7H̙ 5��6�k7�����q\��aһ, e! ^' R [8 M' f1 a
X�=�p�8B�Tn�[�ik�[=_�.9�Ls�هH?����Z������+ b: c* Z" H5 ~9 u4 [/ ?
ww4�|4�.�ZV�۰��ʥ�z����#��q�-�H��o�k((�Q���e�˔��$'Ij������F) �/ A2 p- K5 o5 Z- Z/ F2 X' \& T
$�*T���T�CG'�7) J- U4 e- T) ^5 }3 j9 Q% q
��N��ϩ�K7�_�/8r:-- g% ^. C. U/ m! { ~2 L" }% ]" J
5 p" ?% _1 \2 q6 n9 t/ C \1 X
2 b+ W# v2 }' O I+ N* M3 E
这加密措施貌似做得不错。但是如果细心一点的话,也是能看出端倪的。
; Z0 ~, ]% K. a2 `
3 F# Z7 P, b, g4 y) k! z可以观察到,每个pdata数据都是以 H4sIAAAAAAAAA 这13个字符开头的。考虑到每个单词释义都是一个HTML文件,有统一的格式(所以所有单词释义的HTML文件的前几个字符一定是相同的),这就是一个突破口。这种情况说明了唯二的两种可能:+ u9 x" b1 p9 o9 o0 v* q9 m: K6 X
1. 这串数据根本就没有用什么加密方式,顶多是转换编码而已。所以每个pdata数据项的数据头都相同。1 ?, M( S! i0 E, |4 z: P
2. 如果使用了现代密码学中的私钥加密(流密码、块密码),明文与密文之间虽然是面目全非,但如果每次加密文件时都用同一个密钥初始化,则每个pdata数据项(也就是密文之间)的数据头也会相同。$ s ^/ Q+ I, M1 U3 V! n& _
. G1 y; {" r7 f5 @! I' m( ]0 I" v通过反编译该APP的 smali 代码得到大部分 Java 源码(该应用没有进行代码混淆),没有发现 Cipher 以及 doFinal 等字样(这些是 Java 提供的用于加密解密的类或函数),初步可以确定是上述的第 1 种情况。
* C6 i ?/ H+ V& @* o6 ^
' h8 R1 X, K2 v根据Base64的规则,取这13个字符中的前12个。但因为这前12个字符中后面8个都是A,代表6个二进制的0,没什么意义,因此真正有用的信息就是 H4sI 这4个字符。, n; V/ ~( h4 L' Z7 j9 z5 G
% h/ @& D: v3 [) s将其进行Base64解密,所得十六进制表示为1F8B08。通过在 filesignatures.net 查找该文件头,可知它是一个gzip压缩文件,文件扩展名为*.gz。" w% t& k4 G9 b) i% ?
* m; n9 @8 _- C通过Python的 Base64 模块将上述pdata数据转换成二进制gzip文件,最后可读取压缩包内的文件,该文件采用UTF-8编码,为HTML文件,但未标注扩展名。
8 J& g$ y/ ]( p$ V F. F5 U% J文件内容为:: k0 F' B, U7 _4 S4 b/ Z
# I( D' }3 o# W! ?8 |
<p:Entry>2 [: p A% K5 I+ m* i& q- Q
<p:Head>1 h2 x- f2 I/ p
<p:HWD>fabulous</p:HWD>7 J3 g5 ^" T5 ~1 D$ h$ q$ s2 U5 |! Q# z
<p:HYPHENATION>fab‧u‧lous</p:HYPHENATION>
+ f' u; |( e! r+ r1 t, p<p:PronCodes>* v4 J N% k9 d) u# d% w
<p:PRON>ˈfæbjləs</p:PRON>5 |9 R& h8 W- F, A) {* b
</p:PronCodes>' |6 K# ^/ ]$ A
<p:POS>adj</p:POS>
% L4 |# q- t* B</p:Head>
7 P( y, a) }& g5 z) @; |<p:Sense id="u2fc098491a42200a.6e2b450a.115037ec1b8.-ad3">
7 p$ m+ F, |* D# m4 Z, _/ Q0 L<p:DEF>extremely good or impressive</p:DEF>
& ~ \- n/ j- \; ?* r<p:SYN>wonderful</p:SYN>
/ r1 `3 c! _4 c2 e<p:EXAMPLE id="p008-001204322.wav">You look fabulous!</p:EXAMPLE>1 K. `2 @: x7 |7 B3 [# i! ~+ _8 }
<p:EXAMPLE id="p008-001204323.wav">a fabulous meal</p:EXAMPLE>
% f E8 Y6 E8 h" Y ?% C1 x/ @<p:EXAMPLE id="p008-001823802.wav">The room has fabulous views across the lake.</p:EXAMPLE>
+ {) b5 z; b% B* ~! D( |; u</p:Sense>
' M$ t3 N5 I9 B- t/ C<p:Sense id="u2fc098491a42200a.6e2b450a.115037ec1b8.-acc">% Z6 a( r! D5 U8 L( b4 f$ i R
<p:GRAM>only before noun</p:GRAM>
% f- A: F5 {- U7 ]% n% q2 e<p:DEF>very large in amount or size</p:DEF>
. t9 |6 f9 a) b: `8 ?9 J1 L<p:SYN>huge</p:SYN>
, g2 J# ?5 E \0 C# p<p:EXAMPLE id="p008-001204328.wav">the Duke’s <p:COLLOINEXA>fabulous wealth</p:COLLOINEXA>3 a: I2 @- }* e4 m0 h2 d& M
</p:EXAMPLE>
* x: p2 w! \: }( l. D+ _</p:Sense>
4 {& l5 p8 n2 h' x! L. K9 l7 U<p:Sense id="u2fc098491a42200a.6e2b450a.115037ec1b8.-ac5">
4 }1 Z. f+ C$ Y- r) ?2 ?( z<p:GRAM>only before noun</p:GRAM>0 v* @3 ~2 j4 {1 E2 c% B; ~) O% x' I
<p:DEF>fabulous creatures, places etc are mentioned in traditional stories, but do not really exist</p:DEF>; |2 `! [( t3 O- k
<p:RELATEDWD>fable</p:RELATEDWD>! v% V/ d- L0 V% G# o* B
</p:Sense>) C% T8 z, [' P) d
</p:Entry>9 h: E6 E6 g9 c+ l2 A6 x: s& t
3 B& r* E% q' G$ [与 ldoceonline.com 的内容似乎相差不多,但却是原汁原味的第五版内容,格式非常清晰。诸位若有兴趣,也可以拿来练练手。
5 n5 S- z4 Q5 K" u& ^( D
- k. g$ d. A) K6 d5 `# V' R& y7 R) ^8 c7 F8 i# T$ P
f4 I! P9 H( a1 I
|
评分
-
7
查看全部评分
-
本帖被以下淘专辑推荐:
- · 词典制作|主题: 217, 订阅: 40
- · 词典制作|主题: 111, 订阅: 24
- · MDX制作|主题: 46, 订阅: 17
|