|
楼主 |
发表于 2012-12-24 19:59:57
|
显示全部楼层
maidoo 发表于 2012-12-23 14:48
' g. V, E" f8 X( CLZ你赶快搞,我的也是杭州电信的,网上的方法都试过了,都不行的。3 A+ F4 A& a9 U7 V+ ]* F7 \
串口我已经连上了,115200 Kbps,启动后 ... . z& q7 E/ f5 E# R) g
兄弟,下面这个是华为的操作方式,我觉得可以借鉴,不过可能路径,内容有点差别,不过应该类似,今天徒弟把串口小板带出去了,没搞,明天我再搞搞。4 O" W) v: n- K. U( G" P! p
! o8 w: A( w) j, `( {发信人: mpyu (民工于某), 信区: DigiHome
9 ?9 M; q( W5 s& N标 题: 华为HG8245光猫破解教程
' J; Q. e: a. n. I发信站: 水木社区 (Mon Jul 30 01:52:43 2012), 站内 3 O9 @; v4 m1 m& X( J3 ~2 B0 ^
# q" J( F2 D6 B2 ^# g8 z" f3 H+ O
本文是原创,欢迎到处转贴,以帮助更多的人. / L7 p4 C2 Z4 ]3 @& @
最近电信光纤改造,给了一个"华为HG8245"的光猫 3 e) M. u+ B: I% S" I
众所周知,凡是天朝定制的东西一概是有限制且脑残的 ; G& ]; `7 j* `' o5 x/ B8 D) |
需要分分钟破解掉它. % |5 w0 q5 z% U3 H8 K; m
, k! G- R2 ~ {8 v! [7 {2 ?
进入正题之前说一句...需要您有一点Linux基础, 6 W" _* G2 ^" s; m, b2 p: ]
否则,很可能看不明白我在说啥. 1 D0 `4 t& e6 n
; e8 w8 S( U" I, l
破解的主要工作
0 b0 c1 |9 |% i) R r/ W1) 拿到超级密码,完全掌控设备
, K+ f6 ]- Y( l. \9 C2) 破除同时上网的机器限制 8 x3 d. q, K) [9 J& y
3) 不让电信追踪你
4 i) \2 h* J$ j& K* }4) 开路由,Wifi,充分利用设备 9 |& S. r# x: m2 z' z' x0 Y V
& X7 m0 m1 X( }8 Y' s0 S4 X7 G
下面开始.
1 S/ U! p. Z- \# J# \ / b# V, m, O8 K! M; K
首先...试试用户 telecomadmin 密码 nE7jA%5m 能不能进去
$ d! u2 S3 R8 c( ?电信定制的东西,一般是可以的,进去以后,网络->宽带设置 2 ?! q, ?; b/ I, I* }& `
把里面几条设置记下来,主要记 vlan id 和 802.1p 那两项 4 o1 z: B* ]* H4 l L5 b
这个记下来,以后有用,最好再找个U盘,备份一下配置,以防万一.
( C6 ?6 }( x q8 z# U% S
! k8 {. I1 Y. Q如果进不去... telnet 到 192.168.1.1 用户名 root 密码
( k1 h0 a* h. C% J* badmin 进去以后敲 shell 回车,这就是一个简易的linux shell
, C0 M# S: e4 m! ]8 \
0 W N# P5 f9 B( Ccd /mnt/jffs2/ 然后 ls 看,里面有几个东西是重要的 0 d) S5 p+ \; q
hw_ctree.xml 这个是我们要改的配置文件,还有一个
) O- O# a) B: D2 [' \+ bhw_ctree_bak.xml 这是"备份"用的,hw_default_ctree.xml
; `+ u; j F0 Y3 [这个是"出厂默认"的. , I( o' o2 B' ?9 N- a( P2 {! K
/ F7 w; B n' ^! h7 \
vi hw_ctree.xml 这个文件....不会用vi的去补课先....
/ C g6 ?$ j9 o: }3 M; s
2 j* i v ?) S! e. x8 I4 g. }首先,查找这段...
, c, `3 e( Q; n" C9 q, I/ Y , K4 S! M4 s6 }6 p' c$ ?
<X_HW_WebUserInfo NumberOfInstances="2">
, H+ ^# ^* A \9 q3 c4 `<X_HW_WebUserInfoInstance InstanceID="1" UserName="telecomadmin" ) h$ a( i: [0 q: S0 ]8 e
Password="nE7jA%5m" UserLevel="1" Enable="1"/>
- h1 l$ ~# c7 d) }2 B$ {5 Y$ _: C<X_HW_WebUserInfoInstance InstanceID="2" UserName="useradmin"
% {1 I: T4 D5 ^4 q/ ePassword="admin" UserLevel="0" Enable="1"/>
% T% b9 {/ a( M3 {4 `</X_HW_WebUserInfo>
1 W" ^5 r* `" D( D& Y; ~. Q
* i4 j1 A) N% \3 v2 X3 H O恩,现在你可以把telecomadmin,useradmin改成你喜欢的名字 # a6 G9 M2 C; Q) Z+ V# X; x
密码改成你喜欢的密码.... & ^: S% f/ S1 W" e
R2 X4 v. K- B: r5 z接着,查找这段. 7 W4 g. A2 `# ?( T' _; M
+ H) P3 [4 O1 z$ c9 P: }; i<X_HW_CLIUserInfo NumberOfInstances="1">
' |4 n5 N. M, B* n<X_HW_CLIUserInfoInstance InstanceID="1" Username="root" * i; A9 f- G( v0 j( W0 y$ H
Userpassword="21232f297a57a5a743894a0e4a801fc3"/>
' e- R1 f- O8 y: `* C. L1 \, N# I</X_HW_CLIUserInfo> 3 f4 ]4 L* X) ^' b6 d. p# y" b
% Q- s4 |" I+ h: L3 X: K- ^
这个是你刚才telnet登录的用户名和密码,其中 admin 经过md5
& N" l% G- c) i: M) a2 N之后就是 21232f297a57a5a743894a0e4a801fc3 你可以改成别的
+ i2 T! ]5 W$ F4 o! ^0 \9 T* O0 E比如你想改成 123456 那么在Linux底下
& h% i9 w& I" R0 u. N0 y ; ?) v) i& R7 W! C
# echo -n 123456|md5sum % F* x2 b7 q! ]* Z' E% @
e10adc3949ba59abbe56e057f20f883e -
& r6 a! y8 S5 m3 m# ?+ `: |2 Z) U8 q* A , j7 Z6 L3 k3 J9 s- K- C
改成Userpassword="e10adc3949ba59abbe56e057f20f883e" 就
6 b4 c3 V( s$ x- t可以了,手头没有Linux的话,找个"在线算md5"的地方也成...
! z& g. W( {6 A6 m" y1 m
4 i" p$ S6 t" X7 Q( H还有一个地方,查找 8 p! b8 q8 W0 L. R
! M* A9 M7 |' Q: s/ h<X_HW_UserInfo UserName="SZ00***" UserId="" Status="0" ....
% J; V2 M! e( i+ h( @4 N$ F) u<X_HW_ServiceManage FtpEnable="0" FtpUserName="root"
! M, f. j8 C' [, i5 QFtpPassword="123456" FtpPort="21" FtpRoorDir="/mnt/usb1_1/"
* k q- ]9 x# R8 m/ r$ NFtpUserNum="0"/> & H, L5 r/ q' ~4 ?+ S
<X_HW_AmpInfo EthLoopbackTimeout="0" LoidAuthLedEnable="1"/>
; l7 g- E0 B' H: G7 x9 S 2 ~& K* s$ R9 `" c' p- w6 o I: r) E
这一段,是控制用ftp上传/下载文件(一般是刷固件)时候使用的密码 A, K$ x3 {; M
这里改不改都行了,手勤快就把 FtpUserName 和 FtpPassword 都改了.
0 y/ p7 ]! B0 b! T2 w : g- a. C7 `2 c# s. J( U8 ?
再然后,查找这段 ; n* u- k/ Z2 _; Q4 S6 L1 T) w
" a* E$ [, M! `9 f& @, ]
<X_HW_PortalManagement Enable="0" DefaultUrl=""/>
8 s+ Z$ _8 U) y+ C3 ^; ], O' d<X_HW_AccessLimit Mode="GlobalLimit" TotalTerminalNumber="2"/>
7 H- |# _$ y4 v+ n2 h5 ~ _</Service>
4 _8 n' [0 J. T , L* S: |: ~/ B h9 {% w3 s
妈X,真底限,这个TotalTerminalNumber的意思就是,同时只能有2台
/ V [" i' d$ |! [5 z. Z% e设备上网,多了不让,随便改个你喜欢的数字,比如256差不多了吧... 2 p# s5 {8 b8 G+ E9 S9 B3 K" H) s
( p* R# F+ q6 N& \
改到这里,基本上可以了,但是如果你注意看,在管理界面->网络-> . j1 m k6 i' _
宽带设置 里面,第一个链接,是删不掉的,这个偏偏又是*TR069* # c, G X- L7 O& z" m
这个协议是电信用来控制你的设备的,有了这东西,你的设备啊,内网啊 , ]. B2 z5 P" h$ P
基本就是透明的,所以,我认为这破玩意必须删掉.
* k. E8 g! h3 U! Q' M3 m ; v2 \$ m# O' d' A K
删除这个比较复杂,你需要知道XML的组织方式,找到这一段 # e L! A$ B& V1 C" D
9 p( g% N$ ~% B% B( r- p" u
<WANConnectionDevice NumberOfInstances="2">
- @% B: M2 B8 j) O3 A6 z' ]<WANConnectionDeviceInstance InstanceID="1" WANIPConnecti....
' Q0 e/ I& m6 j- H# F<X_HW_WANUpLinkConfig X_HW_Enable="1" X_HW_Mode="2" X_HW_.... " S5 m$ ~7 b. o% ]' f, ^* K: ]$ a7 K
<WANPPPConnection NumberOfInstances="1"> ! M4 p3 e) Z, _; Z# k4 d8 v
<WANPPPConnectionInstance InstanceID="1" Enable="1" Reset....
6 v5 O: r8 P" }& r</WANPPPConnection>
5 f2 \- b4 T$ }" E+ j8 } Z- g</WANConnectionDeviceInstance>
) X% s5 H. [2 @, h4 S/ o6 t. [<WANConnectionDeviceInstance InstanceID="2" WANIPConnecti...
' c r; A# j+ Q3 }1 K<X_HW_WANUpLinkConfig X_HW_Enable="1" X_HW_Mode="2" X_HW_... ; u r n8 O2 L
<WANIPConnection NumberOfInstances="1"> % G; w, \. S) M0 @7 m8 c" D6 y- u5 [
<WANIPConnectionInstance InstanceID="1" Enable="1" Reset...
5 b: o4 Y2 X. {) Q<X_HW_ExtendDHCPOPTION60 NumberOfInstances="4">
' {. T% C0 b2 s0 l/ W<X_HW_ExtendDHCPOPTION60Instance InstanceID="1" Enable=...
8 r/ M# }. M/ t# f3 W; v+ V( B: |<X_HW_ExtendDHCPOPTION60Instance InstanceID="2" Enable=... 9 S. X4 F! K& |6 f
<X_HW_ExtendDHCPOPTION60Instance InstanceID="3" Enable=...
+ s- M% g" }* q2 G& J$ ]6 n<WANPPPConnection NumberInstance InstanceID="4" Enable=... " G8 G7 D p4 q+ \: `. v+ g! _
</X_HW_ExtendDHCPOPTION60>
4 J# v/ Q; i6 P0 W0 Y3 [</WANIPConnectionInstance> - X7 O" M8 {" y; g+ ?. I) a/ Q
</WANIPConnection>
! r/ L$ i7 [ `2 v- w! s" ~- h* @</WANConnectionDeviceInstance>
1 q& p0 h k4 t/ i* ?: d' N5 V8 h4 p</WANConnectionDevice> - b7 f( k" F( B& X9 f1 h" X
) Z) h; `- ^" } o8 S很长的,我没有贴全,请注意观察, WANConnectionDevice 就是配置的 / h/ H( Z/ z, R i# o: b2 Y
"wan"连接,其中每个 "WANConnectionDeviceInstance" 是一个配置项 0 d* h: m* Y" \# O6 T0 ^4 b
这就好办了,如上面的第一行.... NumberOfInstances 是2个,我们要
' p! C$ }* W) v! o* B8 c7 N- j8 X3 F删掉一个(减少一个),所以这里改成1.
2 x, t5 ^) [* h5 T4 h ! ^; U& h7 R5 z3 Q& d! A
下面每个WANConnectionDeviceInstance都有一个InstanceID,第一个
5 O4 S+ e3 r* R0 y是1,第二个是2,先看看第一个,从头看到尾,发现了"TR069"字眼,没错
; ~. Q2 U/ s5 K) U就是它! 于是,从<WANConnectionDeviceInstance InstanceID="1"...
" U" w1 `( N( ^; p9 K: S- m- t开始,一直删到最近的 </WANConnectionDeviceInstance> 结束,搞掂. 8 r& S6 E$ o: v* X5 _! m
# s) \& W, `8 L/ ]6 @9 \
然后保存退出:wq 重启设备,用刚才改过的telecomadmin用户和密码登录
" s. G6 w/ ^2 H S, q* k3 ^看看是不是好使了,那个TR069的链接是不是删掉了.telnet一下看看密码
, \% C \+ j2 J8 m8 L3 L是不是改掉了. ( A' W% u1 c# O$ ?
9 w0 B. @1 X1 [6 n/ H* {, L一切顺利的话,进去删掉 hw_ctree_bak.xml hw_default_ctree.xml , y, c0 @2 J# _: g. N) n, C
这俩文件,用 hw_ctree.xml 覆盖.
; U/ b8 ]. l3 Q& C
9 \" l+ S7 @! ?* Brm -rf hw_ctree_bak.xml hw_default_ctree.xml : e/ _/ x* D6 y1 i
cp hw_ctree.xml hw_ctree_bak.xml ( Y: M2 N: c& I& G% ~; Q& S6 B$ i
cp hw_ctree.xml hw_default_ctree.xml
( Z2 [, J3 p# `- E O) F & a- @: [0 c" Y+ i1 u z4 N
保存劳动成果,恩...
D* O J8 G, |5 C6 l/ G1 S" ~ * Q, h- O5 e, m" u p
进管理界面...网络->宽带设置,如果你电话走光猫的话,需要添加一个 7 N; I0 I" m1 s" w6 G* V
VOIP类型的链接,vlan id 用刚才记下来的,在添加一个INTERNET类型的
& a' o& a- e$ G连接,同样用刚才记下来的 vlan id, 是不是开路由看你的喜好.保存 % Q" |) B4 Y: U5 E2 |
重启,这就全部搞定了... $ {4 @9 v" b7 \7 b# ?4 P4 g3 |8 {
; r, D/ H* F; `: I0 f9 Y/ ~
其他配置,诸如无线,防火墙神马的,都很简单,配过家用路由的人应该 0 L$ f: M" F8 I6 r6 Q
一看就懂,故不赘述. - b' K7 R8 H0 m8 `* ?/ A
7 C1 J( L& Z6 E2 `华为的其他定制设备,也是类似的办法改配置文件,不同的是,它的配置 , {/ z2 L4 a# W$ @$ V% s
可能是加密的,但加密方法脆弱,可以写个小程序,加密/解密就随便搞了,
6 g$ C- |/ f1 r+ H* T2 Z默认没有开telnet服务的话(比如华为HG622),需要用备份/恢复的方法 % ?% r; a8 _; p l R
来写入"自定义配置文件", 备份->解密->修改->加密->恢复 这么个过程. # }% Q$ h: N* `) L; y4 u
* k6 q5 y" E8 v# d F% g" x-- 以下是无关话题 -- # X6 \! M }" v3 y' [
" W( i8 M$ A9 f/ H- W既然说到华为的这个加密,那就讲一下算法...*几乎所有* 华为家用设备
8 A/ d+ B" c- f+ d, V4 P! x K备份出来的"配置文件",都是这么加密的,有C++代码供参考: ; v% V4 z" y6 Z8 K
3 {+ g. v/ b+ X1 O) T7 L6 R/ Q加密,就是挨个把ascii值乘以2,如果超过127了,就减去127,完活. ( ^: s& v1 `5 h; k
$ z/ R- V) h- M# {1 Y7 B, g. n
string encode(string input){
6 _* E1 m" E* O" D$ w* _8 M string rtn=""; / H! x7 S, q9 t
for(int i=0;i<(signed)input.length();++i){
) s1 w5 I9 Z5 E unsigned char val=input.data();
! v4 u# E. n8 E# r3 u3 Y& r int n=val*2; & X( F, ~! S% T% X; I' f
if(n>127){ 9 u& E& ` c1 R2 V
n-=127;
) L2 G5 U& i; Y5 @, D7 P } 1 r6 H# m% E. M, f% b9 T `! ?
rtn.append(1,(char)n);
- n( K5 B: \0 ?" O } 0 S* i7 s0 W7 [% `; E$ ?
return rtn;
9 X+ _' u7 s' r6 ~( t8 [} / y' h/ ?* a4 w( _* i6 c* {
6 j3 x8 a" t+ e6 v; n1 c$ x解密,就是加密的逆过程,模2看看,如果是单数,说明是减过127的.
, \; z0 `5 Z' }3 \" t, E6 Q! C& f加回来除以2,双数说明根本没超,直接除2了事. # |9 |. i9 J6 v4 C& f5 j3 C
9 |- h( z, O) X) t
string decode(string input){ 6 Y6 [! H: o8 Q! K
string rtn=""; 6 G* [; q. ^0 f M# r
for(int i=0;i<(signed)input.length();++i){ $ \% o! y7 {9 r) C6 V
unsigned char val=input.data();
K: S$ {( r* `7 _ int n=0;
4 `5 {/ Y8 C! A0 H if(val%2){
) _5 c1 U1 o0 i n=(val+127)/2; / U% ^1 u5 M. ?$ s1 c
}else{
4 k( W7 A) n' P% F n=val/2; 6 ~$ u- c! ^) w" g& E2 W7 C8 Q \
} . e2 J/ Z% u5 Q# i3 `6 R- b
rtn.append(1,(char)n); 2 c' Q* ~/ D8 `- Z6 Y
}
' O& r. X- h, }. ^; k$ D/ @! f* u v return rtn;
( l( Z9 y5 @* f& ^6 K! j: S} 7 {) {; Z: _( u# L
* m' l9 m) s9 @- Z" Z-- 无关话题结束 -- , [0 p0 Q+ G7 w
, p- ^7 G0 @& {0 ^( ?4 a# G
最后,引用一句装逼的话,结篇.
+ h' h2 d+ Q9 h0 s# o; H! m% |“Across the Great Wall We Can Reach Every Corner in the World” |
|