|
楼主 |
发表于 2012-12-24 19:59:57
|
显示全部楼层
maidoo 发表于 2012-12-23 14:48
+ U6 S3 e( B- X) RLZ你赶快搞,我的也是杭州电信的,网上的方法都试过了,都不行的。$ t( a6 b4 f* [6 A q+ W( e
串口我已经连上了,115200 Kbps,启动后 ...
1 `) u6 I6 }* U' T7 ~+ d+ h兄弟,下面这个是华为的操作方式,我觉得可以借鉴,不过可能路径,内容有点差别,不过应该类似,今天徒弟把串口小板带出去了,没搞,明天我再搞搞。
# }# N% z: o: v3 m
2 }4 u; d6 k% y+ i) Q发信人: mpyu (民工于某), 信区: DigiHome ' R4 F. v V: p( H6 @
标 题: 华为HG8245光猫破解教程 ' W+ }2 M( d4 z, T q2 Q" j
发信站: 水木社区 (Mon Jul 30 01:52:43 2012), 站内
`5 d% R1 L4 x5 v- r2 N
% C" F5 W+ x% C4 F本文是原创,欢迎到处转贴,以帮助更多的人. 5 N2 ~: f6 C9 L7 ]+ O. f5 M1 m
最近电信光纤改造,给了一个"华为HG8245"的光猫 % o8 J5 b5 u! y) f' U2 I9 _2 ^
众所周知,凡是天朝定制的东西一概是有限制且脑残的
@; k* N* j" y! w1 ^需要分分钟破解掉它. H3 K( L$ ]0 |' [
7 R! w* Q: C, j! y' q: p进入正题之前说一句...需要您有一点Linux基础, & A5 N& n* W! D: G; k1 c
否则,很可能看不明白我在说啥. 6 M4 E1 M l y* r
* [' e" D$ }) W
破解的主要工作
* n9 M7 F3 _! q2 X! s ~" u1) 拿到超级密码,完全掌控设备 , A0 ^, `1 t2 y& d f
2) 破除同时上网的机器限制
3 {1 b. S/ Q& M3) 不让电信追踪你 " Y$ C; P7 H% W9 `$ q" t2 t
4) 开路由,Wifi,充分利用设备 " T: G/ v) X' P E# ^
6 T8 `1 i* t) r. }9 n下面开始. 0 l [5 k9 y. Z) Q% e+ m5 Q5 a
. E. [+ h% M' ~" W0 W) p y首先...试试用户 telecomadmin 密码 nE7jA%5m 能不能进去
1 _" w }* u" l9 b% n电信定制的东西,一般是可以的,进去以后,网络->宽带设置
, G2 K' X8 o5 Q9 P把里面几条设置记下来,主要记 vlan id 和 802.1p 那两项
$ V# U; F) l# o, C* A- ^; u) k* m这个记下来,以后有用,最好再找个U盘,备份一下配置,以防万一. $ K, `4 d# X& x/ | \" f% `
$ v+ P6 V& B: l0 d# M1 j/ Y: U如果进不去... telnet 到 192.168.1.1 用户名 root 密码
5 D! a- f$ v4 d; P0 V: {2 oadmin 进去以后敲 shell 回车,这就是一个简易的linux shell
# H' N' h3 w' z : b: C( ]: \5 Q0 H8 D9 E( _3 K+ Q
cd /mnt/jffs2/ 然后 ls 看,里面有几个东西是重要的 1 q( R4 H# y2 t2 J* V0 c
hw_ctree.xml 这个是我们要改的配置文件,还有一个 9 b2 f# k% S E1 N: ]$ g( ? o
hw_ctree_bak.xml 这是"备份"用的,hw_default_ctree.xml ( j$ b. v/ k" o$ u2 u% `7 @/ L
这个是"出厂默认"的. 0 \7 o9 f+ H4 h2 j" h6 G [1 S
8 l4 s: G! m4 F8 Z0 `vi hw_ctree.xml 这个文件....不会用vi的去补课先....
3 b9 d$ c; u, C$ m: F 5 d3 D, d5 Y7 ?2 A3 j) R7 {
首先,查找这段...
+ {' g# {9 u* m! U 2 t5 u" B# ]/ H9 k+ \! s
<X_HW_WebUserInfo NumberOfInstances="2"> 7 T5 C% _( k; q D; U
<X_HW_WebUserInfoInstance InstanceID="1" UserName="telecomadmin" 2 Z6 `6 C6 X3 L! l& {
Password="nE7jA%5m" UserLevel="1" Enable="1"/> 7 B8 L4 L* M$ Q5 X) ~
<X_HW_WebUserInfoInstance InstanceID="2" UserName="useradmin" ! X3 ^1 B# P0 _ i% D9 b
Password="admin" UserLevel="0" Enable="1"/>
' I4 f$ `! d- Q, L4 l2 f4 m</X_HW_WebUserInfo> 5 n& f- z; B; R+ t$ L
7 k& a; H' K: \( o4 K) x! O3 |恩,现在你可以把telecomadmin,useradmin改成你喜欢的名字
1 B6 x: M! s( h- V6 W% e" a. K; v密码改成你喜欢的密码....
P/ _; S$ E1 ?( m ! p2 }5 W2 [8 n# \4 Y! N& g* D
接着,查找这段. ' g* P: l Z3 w$ v9 X
' P e7 E' K6 a1 @7 }<X_HW_CLIUserInfo NumberOfInstances="1">
" E2 M- c) l3 f0 ~<X_HW_CLIUserInfoInstance InstanceID="1" Username="root" / d5 K& H, Q9 X* m" ?+ R
Userpassword="21232f297a57a5a743894a0e4a801fc3"/> ! q3 q! I4 N6 c5 }
</X_HW_CLIUserInfo>
- I0 W! \# a/ y4 {: o6 r 9 _$ K- N9 o# U7 p
这个是你刚才telnet登录的用户名和密码,其中 admin 经过md5
* J' c3 y+ Q1 W; B之后就是 21232f297a57a5a743894a0e4a801fc3 你可以改成别的 . t9 l2 g. P; o4 ~
比如你想改成 123456 那么在Linux底下
! w, D5 G: W" \6 J0 z- m
! s; F4 g+ c% [5 w# u# echo -n 123456|md5sum
0 D& Z# a$ H: Q2 n+ [- c& _5 pe10adc3949ba59abbe56e057f20f883e -
; W" Z& b( _5 s$ C7 V! Z' q+ m
3 C; a, V5 f; h& c; f改成Userpassword="e10adc3949ba59abbe56e057f20f883e" 就 : U5 y2 x/ ]: ?# L5 X
可以了,手头没有Linux的话,找个"在线算md5"的地方也成...
, k! g8 h; k5 d9 X) h2 A
- |1 u9 @$ W0 v( B: f还有一个地方,查找
' W6 a+ s- J& Y1 r
9 }- j" O3 u. C8 P<X_HW_UserInfo UserName="SZ00***" UserId="" Status="0" .... ) s8 L. C) ]) N7 d2 ^) F
<X_HW_ServiceManage FtpEnable="0" FtpUserName="root" T" N) G4 A$ W5 v K
FtpPassword="123456" FtpPort="21" FtpRoorDir="/mnt/usb1_1/" 1 m0 V$ K( y4 I- M: R$ u
FtpUserNum="0"/>
) V4 e" b+ j W6 Z<X_HW_AmpInfo EthLoopbackTimeout="0" LoidAuthLedEnable="1"/> 9 {. O- l% |* V: Z
% T$ m$ n) ~$ K$ v
这一段,是控制用ftp上传/下载文件(一般是刷固件)时候使用的密码 $ T, E) r% J) ^* z+ D; t
这里改不改都行了,手勤快就把 FtpUserName 和 FtpPassword 都改了. 7 L% v" k- @) c
2 l) G0 c B" F6 S L' p) p再然后,查找这段 8 \6 x3 Z! a, W- M
8 j+ C c( r0 c. p
<X_HW_PortalManagement Enable="0" DefaultUrl=""/> & ~! ~3 L+ t2 {9 |1 D3 U0 H5 h" @
<X_HW_AccessLimit Mode="GlobalLimit" TotalTerminalNumber="2"/>
4 j. Y3 g- C& W5 h+ T5 C: o</Service>
% e0 Z6 @9 W& t; o1 g ! `5 _0 L7 X. m2 L. I0 E
妈X,真底限,这个TotalTerminalNumber的意思就是,同时只能有2台
; D4 n6 ]" n( d设备上网,多了不让,随便改个你喜欢的数字,比如256差不多了吧...
4 r Z W/ ?& o
& h# b! p) k7 b8 j改到这里,基本上可以了,但是如果你注意看,在管理界面->网络-> ; }; v' G# Z+ k' E1 i) M8 \
宽带设置 里面,第一个链接,是删不掉的,这个偏偏又是*TR069*
2 o& T. u0 m2 m% S这个协议是电信用来控制你的设备的,有了这东西,你的设备啊,内网啊 " B$ h* I% {, x& ?( p' C4 {
基本就是透明的,所以,我认为这破玩意必须删掉.
6 S7 e0 i; s( q$ b7 } 0 @* p3 K5 q A6 d- y& ^
删除这个比较复杂,你需要知道XML的组织方式,找到这一段
# @, v! G* a/ s* E + K' D, W; Z% ~& o$ l9 }. h& @
<WANConnectionDevice NumberOfInstances="2">
( k7 m( D+ f" r3 d3 c* K<WANConnectionDeviceInstance InstanceID="1" WANIPConnecti....
8 {: F2 J- D4 {) S4 j, I; o! a8 ^<X_HW_WANUpLinkConfig X_HW_Enable="1" X_HW_Mode="2" X_HW_.... ; I( A$ A: }& g# s J4 L
<WANPPPConnection NumberOfInstances="1"> 7 K6 d+ P& j R- W
<WANPPPConnectionInstance InstanceID="1" Enable="1" Reset....
; d. v; @3 D) f</WANPPPConnection> p8 s: \- l( i- R+ i0 y
</WANConnectionDeviceInstance> % c8 n/ B% ?1 O9 c
<WANConnectionDeviceInstance InstanceID="2" WANIPConnecti...
' q) o/ f+ t9 ~ U/ }8 S<X_HW_WANUpLinkConfig X_HW_Enable="1" X_HW_Mode="2" X_HW_... * n; a* q7 K0 R9 ] {! K* S7 l
<WANIPConnection NumberOfInstances="1"> ( U" g' S) s- W6 q# p2 ~ y
<WANIPConnectionInstance InstanceID="1" Enable="1" Reset...
/ ` Z& k. x+ U0 c" }2 H3 E<X_HW_ExtendDHCPOPTION60 NumberOfInstances="4">
3 i: m' E: z/ C" v, Q6 K3 V2 c<X_HW_ExtendDHCPOPTION60Instance InstanceID="1" Enable=...
- A' p) G, r1 d1 a+ l<X_HW_ExtendDHCPOPTION60Instance InstanceID="2" Enable=... * `" r n; k4 r/ N, ]) W* t; P- b
<X_HW_ExtendDHCPOPTION60Instance InstanceID="3" Enable=... - O0 g) N- V' I ]! e$ D
<WANPPPConnection NumberInstance InstanceID="4" Enable=...
7 a6 q; W0 I1 H% M5 x/ K. C) E3 L+ @* V</X_HW_ExtendDHCPOPTION60> " v/ U# `2 U9 u/ R
</WANIPConnectionInstance>
7 X: E; x, L) _3 A( i, u P- V: k</WANIPConnection>
6 v- L$ z O* U% m</WANConnectionDeviceInstance> / G% X) t$ o/ I/ Q: {8 F
</WANConnectionDevice>
: }4 K9 x6 G$ b. R
- \, c% {1 o/ z很长的,我没有贴全,请注意观察, WANConnectionDevice 就是配置的 , @5 V$ w6 W) A: e* O
"wan"连接,其中每个 "WANConnectionDeviceInstance" 是一个配置项 $ I! w' f- ~& _& o$ A# g
这就好办了,如上面的第一行.... NumberOfInstances 是2个,我们要 : _/ W9 H9 ^1 M- N
删掉一个(减少一个),所以这里改成1. 4 _4 U! R5 q4 f6 _) j5 n+ V
5 |( z$ `, N, [( L/ T5 y2 F1 o$ b! B
下面每个WANConnectionDeviceInstance都有一个InstanceID,第一个 |9 W$ ]3 D& f. y' y
是1,第二个是2,先看看第一个,从头看到尾,发现了"TR069"字眼,没错 7 u% y" a. S7 { P, R' o S# M
就是它! 于是,从<WANConnectionDeviceInstance InstanceID="1"...
2 y% D& \3 N0 m1 l+ K ?开始,一直删到最近的 </WANConnectionDeviceInstance> 结束,搞掂. ' {& _) z# T' s* f
2 j- S8 j+ f1 D! Y: b( O然后保存退出:wq 重启设备,用刚才改过的telecomadmin用户和密码登录
7 G! E$ A$ Q) F% P# D! f2 q看看是不是好使了,那个TR069的链接是不是删掉了.telnet一下看看密码
: y- w( Z& c. H% R6 M是不是改掉了. 0 D9 q! l) d& Q' G+ _3 j; I
0 S4 i$ ?7 W7 b9 j一切顺利的话,进去删掉 hw_ctree_bak.xml hw_default_ctree.xml ! e8 \* y: [. p7 b+ w, u
这俩文件,用 hw_ctree.xml 覆盖. - q5 _. H" B3 C
8 p% v) }, Q" @( erm -rf hw_ctree_bak.xml hw_default_ctree.xml
4 D8 ?4 ]" J2 X! c% B$ Hcp hw_ctree.xml hw_ctree_bak.xml 8 b% x! B% h& Z# k% X3 b) |- A
cp hw_ctree.xml hw_default_ctree.xml : V1 v: d3 N" h3 o2 E; i/ ?
- a6 e S. R$ l9 L, Z保存劳动成果,恩... & d8 l* h1 z* `; L6 i: W* M
( l% Q+ g. D2 b进管理界面...网络->宽带设置,如果你电话走光猫的话,需要添加一个 l# Z. h P9 z& X
VOIP类型的链接,vlan id 用刚才记下来的,在添加一个INTERNET类型的 : G0 p+ g% z7 [2 ~
连接,同样用刚才记下来的 vlan id, 是不是开路由看你的喜好.保存 * L4 @6 S! _+ G- r
重启,这就全部搞定了...
2 ~4 e. L9 U- Y2 T% x( D% e : p) U4 o0 P# t1 a/ Y4 o9 y
其他配置,诸如无线,防火墙神马的,都很简单,配过家用路由的人应该 ) t7 y& ]# L9 b" s- ?
一看就懂,故不赘述.
! T2 x0 ^6 T/ E- r & w. ^) F' L$ d* Y
华为的其他定制设备,也是类似的办法改配置文件,不同的是,它的配置
: f* E* t% c7 E8 v* u0 C# k" k可能是加密的,但加密方法脆弱,可以写个小程序,加密/解密就随便搞了,
6 Z8 T* G* u' D8 s7 R默认没有开telnet服务的话(比如华为HG622),需要用备份/恢复的方法 7 o" o! L2 | B0 ~( `1 z2 R: z
来写入"自定义配置文件", 备份->解密->修改->加密->恢复 这么个过程. 2 S" b! B3 B2 E. q4 z' V, w/ B2 w
- c# @# O: I+ S$ D! d8 `' Z
-- 以下是无关话题 -- ]& l; W" u1 U- z8 s5 C, @$ C" V
% ?* F* n3 i& t5 A( v+ w既然说到华为的这个加密,那就讲一下算法...*几乎所有* 华为家用设备 7 u4 l" [ E) i. a: n
备份出来的"配置文件",都是这么加密的,有C++代码供参考:
# O# [6 z* K" p ( v4 }6 h) G7 e3 _2 Z8 ?2 u
加密,就是挨个把ascii值乘以2,如果超过127了,就减去127,完活. 3 b# ]8 I R0 E0 g& x. d
+ I6 I# u7 w) S- G% f( m. h
string encode(string input){ ' b# s# K( a. o/ D7 v; U* S
string rtn=""; , o( T. P W) r! q% ?, F
for(int i=0;i<(signed)input.length();++i){
( d9 y/ O, l: v" t! j unsigned char val=input.data();
5 B' _9 O4 |6 i% J m int n=val*2; ! Z# I! p! p$ R' j1 _
if(n>127){
; s: d+ h& W/ r) Z) e" E7 J! @ n-=127; 4 S, q; C3 O) W2 W6 I4 S0 h! i
}
3 H/ U6 F) T* K& K w4 p rtn.append(1,(char)n);
" s& Z9 r. T2 | }
4 }; |& |( M, B) p return rtn; 9 ^3 _* U! u. V0 L; D6 }
} / R- K/ A: y0 W
( ]9 ^+ @8 X8 U X. z解密,就是加密的逆过程,模2看看,如果是单数,说明是减过127的. ! z2 l* h9 n& h- f4 n o# U
加回来除以2,双数说明根本没超,直接除2了事.
& `3 Z8 c) t7 z% P a$ [. F 5 a( r8 J% ^6 K) w
string decode(string input){
' n9 E" _+ g# L4 N! O5 | string rtn="";
; c5 c. d: D1 C' ` for(int i=0;i<(signed)input.length();++i){
0 `) L3 d# `& j: y! V& ^ unsigned char val=input.data();
4 S: O. G3 g4 |3 S: \ int n=0; 6 |! \1 m. m* \3 I5 F4 v) ]- `. Z% L
if(val%2){
) D+ \6 R7 R( |: J n=(val+127)/2; 7 j _% y' ?- A% [
}else{
5 @. `* T+ c; f; h- {; M; \ n=val/2; % S8 P3 X3 M9 [- b m$ N& o: C) S' j. Y* u
}
2 J* N8 v0 M3 i7 C/ m5 E# U) b rtn.append(1,(char)n);
+ A+ G2 \/ P" v9 p, d" d h; C }
+ ?/ X* q/ p8 ?5 M return rtn; " R- R0 x# `6 B, M
}
9 b3 l/ z6 Z, t. k4 W, s; R, i - h0 ~* h% s/ M: Z C
-- 无关话题结束 --
K/ R# ?$ v2 M S( o6 i, {- k, i
最后,引用一句装逼的话,结篇.
. G0 t. m/ Z+ c0 b6 f“Across the Great Wall We Can Reach Every Corner in the World” |
|