|
楼主 |
发表于 2012-12-24 19:59:57
|
显示全部楼层
maidoo 发表于 2012-12-23 14:48 8 `) G! A; j8 ]$ x3 l# J
LZ你赶快搞,我的也是杭州电信的,网上的方法都试过了,都不行的。% h* A, w |& d3 U( Y
串口我已经连上了,115200 Kbps,启动后 ...
3 U- J q& G/ x X6 F- M. P兄弟,下面这个是华为的操作方式,我觉得可以借鉴,不过可能路径,内容有点差别,不过应该类似,今天徒弟把串口小板带出去了,没搞,明天我再搞搞。5 n, a( x6 }% ?) O9 C+ ~2 o
' M; X5 ~8 D4 c# |* D4 M- T发信人: mpyu (民工于某), 信区: DigiHome
- i2 Z" h5 A( s A标 题: 华为HG8245光猫破解教程
$ ~- ?% s( q4 e' s! F$ X! b+ S- m% f发信站: 水木社区 (Mon Jul 30 01:52:43 2012), 站内
0 r) d3 W- Y; I+ ~3 Y3 n
$ q( y. T6 K, W9 l8 T+ c1 z: E本文是原创,欢迎到处转贴,以帮助更多的人.
0 i: Q. p2 _ Y* X6 c最近电信光纤改造,给了一个"华为HG8245"的光猫 4 ?6 z0 x4 C# u7 e2 a
众所周知,凡是天朝定制的东西一概是有限制且脑残的 0 ?3 [: a& _8 J- @3 t
需要分分钟破解掉它. ; O1 y* V+ K/ `8 R5 G n1 S& a
0 \9 [* D# P, `: B$ ~: A' Y9 D" j. z
进入正题之前说一句...需要您有一点Linux基础,
% {4 A' V+ n6 S* R' B: l5 B否则,很可能看不明白我在说啥.
3 v1 P+ c2 E1 Y: U) y6 Z & f8 U1 l$ P- M- `) r( O, ?' c, _
破解的主要工作 4 ] o% G b; f
1) 拿到超级密码,完全掌控设备
- I7 C) ^, s/ y, q) ]/ r2) 破除同时上网的机器限制 5 t' D3 \/ _1 S5 ]8 N
3) 不让电信追踪你
( q; z X( ^9 B( L, ^+ q4 `4) 开路由,Wifi,充分利用设备
' b z$ O5 w. b9 P7 k 9 n9 X4 y# R) h" d6 r* Q- [0 ^, w
下面开始.
; Z" C' f! u9 a. n5 s
) |6 Z9 q7 \% T4 @. M. @1 V# b9 k首先...试试用户 telecomadmin 密码 nE7jA%5m 能不能进去 . B1 c4 S2 P- ?1 @6 B% v8 D
电信定制的东西,一般是可以的,进去以后,网络->宽带设置
- S0 l" r+ F4 g3 b" p8 {% O1 A0 q把里面几条设置记下来,主要记 vlan id 和 802.1p 那两项 9 F! U- R- z2 B9 X; B; ?* _
这个记下来,以后有用,最好再找个U盘,备份一下配置,以防万一. : A, R/ G2 [! S% T/ ?6 j* b
$ r5 N+ W! ^/ Q0 ~
如果进不去... telnet 到 192.168.1.1 用户名 root 密码 7 c* Y9 s& g1 H& g) C8 w- J
admin 进去以后敲 shell 回车,这就是一个简易的linux shell
( H' C: i& H3 v# n' \1 y% K + V4 o& Z# q/ ~: d, O6 B; K6 v
cd /mnt/jffs2/ 然后 ls 看,里面有几个东西是重要的 - V. o' ]' d9 E3 d. X( L
hw_ctree.xml 这个是我们要改的配置文件,还有一个 3 m) k3 K$ j* L4 m5 h
hw_ctree_bak.xml 这是"备份"用的,hw_default_ctree.xml
& f6 Z' `/ U9 X" B这个是"出厂默认"的.
. B# b# k! ]8 J$ p" l8 [ ( D3 `/ x- r7 I/ z5 `) z2 m; ]. r
vi hw_ctree.xml 这个文件....不会用vi的去补课先....
' N0 Q4 c3 ^' k0 a# C% G
/ h* d4 U8 X' |首先,查找这段...
- z; a& G2 i$ h3 g8 z
8 o" x4 x5 V+ V: p4 Q/ s. g; E1 v1 B" ^<X_HW_WebUserInfo NumberOfInstances="2"> ( F8 J2 z0 R+ d/ s
<X_HW_WebUserInfoInstance InstanceID="1" UserName="telecomadmin"
0 i) M ?! J3 N9 u8 I8 i/ l* ]Password="nE7jA%5m" UserLevel="1" Enable="1"/>
+ T9 i4 S9 y& a' F+ y" l. }0 O7 s<X_HW_WebUserInfoInstance InstanceID="2" UserName="useradmin" . B. p% }! h% Y& L6 u
Password="admin" UserLevel="0" Enable="1"/>
; {" j1 Q# D4 U. o: z7 S</X_HW_WebUserInfo> * C) E |) p6 ^7 [
9 Y/ P* q; U V- a1 C# N, ?$ R+ r
恩,现在你可以把telecomadmin,useradmin改成你喜欢的名字 $ v2 w4 u: W1 C. _2 h" Y3 [. F3 R
密码改成你喜欢的密码.... / D5 g" A7 \* a- ]8 X
8 n% l+ q6 c b" q% |
接着,查找这段. 2 Y6 t8 v$ D- k* e/ I& a% i
$ K. Q6 j. P) {4 _2 ~
<X_HW_CLIUserInfo NumberOfInstances="1">
: g- q' M0 |/ a2 v8 s4 u2 L<X_HW_CLIUserInfoInstance InstanceID="1" Username="root" , \, o( ?* d, C; m" V$ F* W
Userpassword="21232f297a57a5a743894a0e4a801fc3"/> : z0 m. |% n) f% K" ?) M
</X_HW_CLIUserInfo>
2 t! P4 S6 Q/ m6 f + a) W5 S0 o) c7 K) K# @
这个是你刚才telnet登录的用户名和密码,其中 admin 经过md5 , M: {* Q# W9 s' t0 R2 b @
之后就是 21232f297a57a5a743894a0e4a801fc3 你可以改成别的
" a5 L4 C! h+ H- r& ~比如你想改成 123456 那么在Linux底下 : e; {# b; R1 Q, C1 `
0 d# ?, |4 b* p) F% b# echo -n 123456|md5sum 5 C8 q# {4 a* H. o M, L0 |0 {$ C
e10adc3949ba59abbe56e057f20f883e - - ?0 u8 _6 g" [, c
6 S( }0 d% P; R7 C8 G# V. V
改成Userpassword="e10adc3949ba59abbe56e057f20f883e" 就 3 Q5 N3 @8 e# U: w3 i* y
可以了,手头没有Linux的话,找个"在线算md5"的地方也成... / Z0 i; q+ d4 W: x0 T- b8 ^
% v0 V5 K% _; P* }( U还有一个地方,查找
( l5 X( t+ O% T+ Z9 G) D 5 U' _% Q+ A# j
<X_HW_UserInfo UserName="SZ00***" UserId="" Status="0" ....
: h( o7 r" k4 a/ R8 H! t<X_HW_ServiceManage FtpEnable="0" FtpUserName="root"
) d8 x+ f8 F- J! ]FtpPassword="123456" FtpPort="21" FtpRoorDir="/mnt/usb1_1/" 6 e& t( w, `8 [. F
FtpUserNum="0"/>
; G: r G. f8 U8 A0 T+ H+ ^5 A) n4 B<X_HW_AmpInfo EthLoopbackTimeout="0" LoidAuthLedEnable="1"/>
1 _1 q6 ]) ?2 t, ]+ @5 ~
9 z# Z4 s% I/ T& o; o这一段,是控制用ftp上传/下载文件(一般是刷固件)时候使用的密码
+ @# |/ @3 U- V- g这里改不改都行了,手勤快就把 FtpUserName 和 FtpPassword 都改了. ; ?3 ?6 Q; c3 _6 d
5 F0 N& @: g% I t( w* h2 o
再然后,查找这段 ) f" T7 A7 Q% O2 d/ z* ]+ b! ?
. o7 }. d6 J1 f
<X_HW_PortalManagement Enable="0" DefaultUrl=""/> 8 H; P5 K' Z8 P
<X_HW_AccessLimit Mode="GlobalLimit" TotalTerminalNumber="2"/>
# S, J+ K) y8 b/ z</Service> 7 A! l+ v& E: p: ^" `/ u
+ K; e! x- \1 ~/ [( h0 N8 E
妈X,真底限,这个TotalTerminalNumber的意思就是,同时只能有2台 # ?) \3 i* y& Q% |$ {% R* `
设备上网,多了不让,随便改个你喜欢的数字,比如256差不多了吧...
" V' G, e' X% H# k+ B& t& h6 P. p+ d 8 |! }# ?- ]5 g& H6 b
改到这里,基本上可以了,但是如果你注意看,在管理界面->网络->
* ]& a& r9 r: P. q" F宽带设置 里面,第一个链接,是删不掉的,这个偏偏又是*TR069*
9 L( n, c( T+ v: X5 `这个协议是电信用来控制你的设备的,有了这东西,你的设备啊,内网啊 9 V* ~, J6 v# k& g
基本就是透明的,所以,我认为这破玩意必须删掉.
0 u# a+ o0 }2 w. \$ |" `
8 s/ U; ~1 s4 Z* s7 g# m删除这个比较复杂,你需要知道XML的组织方式,找到这一段 + j8 L1 Q* ?# D- l$ C
6 `- z, h2 U5 P) l3 _5 [
<WANConnectionDevice NumberOfInstances="2"> ! `& B8 }. |+ V* H* c, n; I
<WANConnectionDeviceInstance InstanceID="1" WANIPConnecti....
! ~ p6 |9 k: n1 o: M& ?& ~/ N<X_HW_WANUpLinkConfig X_HW_Enable="1" X_HW_Mode="2" X_HW_....
2 Y' }1 L% l! N5 M0 j<WANPPPConnection NumberOfInstances="1">
( }; j; `% l, }6 S<WANPPPConnectionInstance InstanceID="1" Enable="1" Reset....
7 q* V% `1 \0 i- A: `$ D$ r& B0 A</WANPPPConnection> & N# g) ^/ _5 n! K) ]
</WANConnectionDeviceInstance>
- P' r: t) u) b% q6 H<WANConnectionDeviceInstance InstanceID="2" WANIPConnecti... * @( [% w H% W% @1 B' B( y; L
<X_HW_WANUpLinkConfig X_HW_Enable="1" X_HW_Mode="2" X_HW_...
9 [0 j% c& Y/ n" T: [* J<WANIPConnection NumberOfInstances="1">
5 _9 G8 ~0 y- b1 H! T<WANIPConnectionInstance InstanceID="1" Enable="1" Reset...
" ~8 Y# b" ?, t; Y! v9 b<X_HW_ExtendDHCPOPTION60 NumberOfInstances="4"> " d7 S2 m, _1 n! V3 a7 ]
<X_HW_ExtendDHCPOPTION60Instance InstanceID="1" Enable=... & K" n# a& K% g. y9 T: W
<X_HW_ExtendDHCPOPTION60Instance InstanceID="2" Enable=...
" n" Q% W( c' e1 P<X_HW_ExtendDHCPOPTION60Instance InstanceID="3" Enable=... ' P8 c0 J; w0 f0 Y7 u
<WANPPPConnection NumberInstance InstanceID="4" Enable=... 3 C$ O6 d6 c6 _
</X_HW_ExtendDHCPOPTION60>
# Y1 H* g" R( K5 C2 x" d" @; G: }</WANIPConnectionInstance>
+ V! u3 V) R4 t# F</WANIPConnection> % J9 Q0 e" _8 X. m) h9 t
</WANConnectionDeviceInstance> 1 d/ j/ m/ G( [$ [, [- Z; e" P
</WANConnectionDevice>
1 ]1 m- ~% s/ Z! ]0 v # {# ?' e7 e' |( R8 b
很长的,我没有贴全,请注意观察, WANConnectionDevice 就是配置的
: T" U! W4 O# l; _! ?4 B2 D"wan"连接,其中每个 "WANConnectionDeviceInstance" 是一个配置项
2 n+ o" S; \% T" D! S这就好办了,如上面的第一行.... NumberOfInstances 是2个,我们要
) l' A' z5 B6 V删掉一个(减少一个),所以这里改成1.
- ~" b& }9 e2 m , d( ]- o6 y& l( _
下面每个WANConnectionDeviceInstance都有一个InstanceID,第一个
; j5 I. n1 ~$ r+ |是1,第二个是2,先看看第一个,从头看到尾,发现了"TR069"字眼,没错
: A8 n5 U `- c6 o# ~2 Z7 L4 g就是它! 于是,从<WANConnectionDeviceInstance InstanceID="1"... % F8 y: A7 T7 |6 x" V
开始,一直删到最近的 </WANConnectionDeviceInstance> 结束,搞掂. 4 l" U k k' M( H) t2 p
' \- Z8 G4 T- S, w( z4 [然后保存退出:wq 重启设备,用刚才改过的telecomadmin用户和密码登录 % e, c+ ^) P, J* m/ _
看看是不是好使了,那个TR069的链接是不是删掉了.telnet一下看看密码
2 _& J- F! D% X9 O是不是改掉了.
0 [ o+ d# Z& C% S* c8 n
! q5 J9 |3 o& Q2 \, D: p' L i* c一切顺利的话,进去删掉 hw_ctree_bak.xml hw_default_ctree.xml 8 r6 |9 J% t; W- d6 i+ F' m6 H( K* d
这俩文件,用 hw_ctree.xml 覆盖. 9 f; w: U2 D+ G4 x* f5 @8 ^. y
' | j Q7 a _& y/ A; `' j/ w
rm -rf hw_ctree_bak.xml hw_default_ctree.xml . H+ n1 ~+ X& d' |, Y' `
cp hw_ctree.xml hw_ctree_bak.xml
5 R8 n- [! {# F2 V1 ?. i' w) C: dcp hw_ctree.xml hw_default_ctree.xml
$ R4 I! h9 [0 l1 `0 J4 H& ]4 [ + T- n) T7 z4 h* `
保存劳动成果,恩...
: O2 K' v1 o' w2 I3 I" z$ m% D
: u9 z, c$ ?6 l进管理界面...网络->宽带设置,如果你电话走光猫的话,需要添加一个 ! |9 `) |* i/ Z0 G3 P m) j2 \" A
VOIP类型的链接,vlan id 用刚才记下来的,在添加一个INTERNET类型的 6 u# Q# Y! c' y1 k: V1 L
连接,同样用刚才记下来的 vlan id, 是不是开路由看你的喜好.保存
, T, l3 Z2 C- z& j9 w2 q) u3 a重启,这就全部搞定了...
% a4 Z( U1 Y7 v' z% v
, j1 w8 z/ d& U. U% ^其他配置,诸如无线,防火墙神马的,都很简单,配过家用路由的人应该
; b% X$ B) l, V3 Y5 G一看就懂,故不赘述. # [7 w& H; v% e5 h" M) B4 r
d% C- L* x, {8 d" F* Z, Q
华为的其他定制设备,也是类似的办法改配置文件,不同的是,它的配置 ) T9 I4 m, A4 w% D* `; R+ {
可能是加密的,但加密方法脆弱,可以写个小程序,加密/解密就随便搞了,
4 f- l5 q- U. a/ g# A默认没有开telnet服务的话(比如华为HG622),需要用备份/恢复的方法 2 g9 c/ G# ^4 X1 `) G
来写入"自定义配置文件", 备份->解密->修改->加密->恢复 这么个过程.
+ E+ U! I t4 {; ?9 f# e. B # y8 ]% N- L; ~% s t @7 v. n
-- 以下是无关话题 -- & H2 ?/ M* B2 e5 A3 y
* a! W$ @3 S8 J( Q. \, M
既然说到华为的这个加密,那就讲一下算法...*几乎所有* 华为家用设备 5 }8 h% B( T2 a' s( z; q
备份出来的"配置文件",都是这么加密的,有C++代码供参考:
7 w( O$ } I2 W9 ^) o : s1 h/ B+ h I! u3 C, O* b
加密,就是挨个把ascii值乘以2,如果超过127了,就减去127,完活. 2 {2 I% B$ v* b* c4 W1 t
% X2 f, f( L/ y" @string encode(string input){
1 F7 x1 Y6 y6 H/ F' C, }( ?6 ] string rtn="";
% F, X4 p! ~# q5 @. F% p for(int i=0;i<(signed)input.length();++i){ / J& H r* E( T9 ]- z1 h# S
unsigned char val=input.data();
: J) O$ W* k" Y. Q. Q! ]0 t( _- P int n=val*2; ; }# {7 b, Q! s$ l X% q
if(n>127){
! {2 t0 o3 k7 V* Q; `0 W n-=127; 4 x( u- I( U6 k# l
}
/ R8 T+ B/ _: g7 Q0 V- [9 T rtn.append(1,(char)n);
9 C: F( o6 h; y } ) F4 {& f; W- _8 X: k9 P! y) h
return rtn; 5 g- x: O/ o, E& k& Z
} M& y$ j' i7 |& J4 j- `& a
; Q( [- E! a' K: e2 j6 P
解密,就是加密的逆过程,模2看看,如果是单数,说明是减过127的.
( d7 k8 o. a+ N) H8 F加回来除以2,双数说明根本没超,直接除2了事.
6 o0 Q" {" F! U4 g0 A. W v
+ F. A& h& t0 ystring decode(string input){
; C) ^- R- @. w8 F: a& W string rtn=""; i4 s' L/ ?: R
for(int i=0;i<(signed)input.length();++i){
( X8 ]2 A5 R! D- a1 }- { unsigned char val=input.data();
) w6 _0 E2 g! I" ~* X5 t int n=0;
: O& B' B( j h! D# I+ H/ V if(val%2){
( I- @% f0 x) S3 m+ X n=(val+127)/2;
j& s9 t5 w) ~3 ]3 `$ P# F. S, j }else{ 4 U% x. T" [, _2 C" n& r7 w. n
n=val/2;
1 h0 K4 n& \6 n. O; C } 5 t0 g1 J4 z- m# x
rtn.append(1,(char)n);
' Y: w, r* s* j% k } 2 q1 H, l- n1 O' I) L
return rtn;
+ |+ s/ Q7 h& r' M0 K5 I: j: `9 j- K! h9 G}
6 b$ V; n1 g6 S% B; v2 c$ M5 o
6 c5 Q" X0 k) `6 N3 c2 c7 _7 F-- 无关话题结束 -- 6 V- S( p. }* T9 H
R9 D& z9 N p1 C最后,引用一句装逼的话,结篇. $ p1 c: m, u. r) Z- q4 d7 ?
“Across the Great Wall We Can Reach Every Corner in the World” |
|