|
楼主 |
发表于 2012-12-24 19:59:57
|
显示全部楼层
maidoo 发表于 2012-12-23 14:48 B$ G: g0 z; E3 U; X9 v/ S
LZ你赶快搞,我的也是杭州电信的,网上的方法都试过了,都不行的。
; D5 L+ Y9 ]! m2 }; T( t% s串口我已经连上了,115200 Kbps,启动后 ... ; h# Y/ o( K; k2 C$ {- A
兄弟,下面这个是华为的操作方式,我觉得可以借鉴,不过可能路径,内容有点差别,不过应该类似,今天徒弟把串口小板带出去了,没搞,明天我再搞搞。, J& O/ ]3 k4 J, {2 Q
$ F0 m4 i" M# M发信人: mpyu (民工于某), 信区: DigiHome
2 s' G9 [3 l5 t# K4 N: D$ x% t标 题: 华为HG8245光猫破解教程
1 \) Q, t# M3 `, f, b% ~发信站: 水木社区 (Mon Jul 30 01:52:43 2012), 站内
" \4 M3 K3 \. n! C: f; p% X2 p& |
+ X7 G: q8 u$ @- N) d9 R2 `& e3 a0 N本文是原创,欢迎到处转贴,以帮助更多的人. ) g! b5 M- R/ F/ \7 A
最近电信光纤改造,给了一个"华为HG8245"的光猫
( a8 q7 I" r; J* W众所周知,凡是天朝定制的东西一概是有限制且脑残的 6 U$ C* k( Z9 [: v! w0 c" {
需要分分钟破解掉它. 4 w6 [* ~" O m& a7 p; Q! q8 P
+ q' b* t# q" t2 S% i" j1 A进入正题之前说一句...需要您有一点Linux基础,
6 u' j: ?& d0 V! f/ K) t否则,很可能看不明白我在说啥.
, u0 q0 c5 g/ s% p ; z7 E# _7 t/ }* `! O
破解的主要工作
5 C' A' E4 x0 u6 X1) 拿到超级密码,完全掌控设备
( I a2 _ {) z3 h( u2) 破除同时上网的机器限制
- w, P- |) I+ E3) 不让电信追踪你 # G f5 J0 m0 r4 w& P: [
4) 开路由,Wifi,充分利用设备
( s$ S' Q4 P/ O1 ^
- [: j" p4 L& u下面开始.
) r2 M& s( S1 s t/ @7 [' o4 B8 \ ' l1 |. i3 V4 ^& O* i/ N0 ?
首先...试试用户 telecomadmin 密码 nE7jA%5m 能不能进去 0 {: b6 |7 F1 z: a1 H Q
电信定制的东西,一般是可以的,进去以后,网络->宽带设置 ; S1 F* a; h! c8 E- d8 h
把里面几条设置记下来,主要记 vlan id 和 802.1p 那两项 * ]; A, m! P1 g( R$ G: T5 a1 d
这个记下来,以后有用,最好再找个U盘,备份一下配置,以防万一. 8 J) u! _/ i) M
. ^4 z& C; Q+ a
如果进不去... telnet 到 192.168.1.1 用户名 root 密码
. f8 ], \8 e3 T8 \% S/ y- aadmin 进去以后敲 shell 回车,这就是一个简易的linux shell
- M9 ~- E4 S. R+ F5 v' i0 P
! F% S* [: G8 \' j5 J* B% |cd /mnt/jffs2/ 然后 ls 看,里面有几个东西是重要的 7 \. n; W1 Z1 A
hw_ctree.xml 这个是我们要改的配置文件,还有一个
- V7 i! U. M4 H bhw_ctree_bak.xml 这是"备份"用的,hw_default_ctree.xml 7 q* e/ \' o2 j+ _
这个是"出厂默认"的. 7 o: `8 a2 W% F \/ ?) |. J
9 ~' h/ r1 | l6 F8 P5 I
vi hw_ctree.xml 这个文件....不会用vi的去补课先.... + @2 |+ n( U2 d
l+ e6 T- T: f* t7 N6 y0 I首先,查找这段... 3 Y2 G3 N: ] x/ V' K% g* @) f
( M1 x2 y8 H# c7 Y7 ^- i1 J
<X_HW_WebUserInfo NumberOfInstances="2">
( e% b6 R& P8 }) I' V( m3 s. E5 I<X_HW_WebUserInfoInstance InstanceID="1" UserName="telecomadmin"
1 u( W: K3 w0 c& E% TPassword="nE7jA%5m" UserLevel="1" Enable="1"/> * R' f8 ?+ P/ m/ r9 ?% \6 S2 X
<X_HW_WebUserInfoInstance InstanceID="2" UserName="useradmin" 3 t8 ], ~! u2 s; I$ }6 X
Password="admin" UserLevel="0" Enable="1"/> . I9 r) H! k! d5 p, p, w
</X_HW_WebUserInfo> - y7 b X! l$ R) a$ Q( T1 n6 G2 y
$ } I, Q/ ` v$ e! y" L
恩,现在你可以把telecomadmin,useradmin改成你喜欢的名字
5 L7 ^+ D9 K3 [密码改成你喜欢的密码....
: i: V: r- i( q0 R/ w
3 x0 R' U8 c7 p. `8 F# E9 c+ v接着,查找这段. " P" U' \* P' c0 t9 M
0 O; ~& S3 J5 m<X_HW_CLIUserInfo NumberOfInstances="1">
4 Y: `- n" t! R1 A<X_HW_CLIUserInfoInstance InstanceID="1" Username="root"
+ \% F, z3 R. {4 GUserpassword="21232f297a57a5a743894a0e4a801fc3"/>
; U$ H J* a" S; I</X_HW_CLIUserInfo>
8 z T- y) V+ y' ]; _* l & M7 ^3 B/ R: P8 A
这个是你刚才telnet登录的用户名和密码,其中 admin 经过md5 / i0 I( e3 C) n# r# f
之后就是 21232f297a57a5a743894a0e4a801fc3 你可以改成别的
' L3 @1 G6 w) I, }( a5 n$ Z$ w; Q% W比如你想改成 123456 那么在Linux底下
5 b( G9 V4 p) R% ]5 ?
' J8 z0 P$ |7 }2 B: C# echo -n 123456|md5sum 4 q) `# y2 U) R1 d. p4 H- F
e10adc3949ba59abbe56e057f20f883e - 0 U/ Z/ B- s' u: O6 v
7 Z! j* I% u6 T, m
改成Userpassword="e10adc3949ba59abbe56e057f20f883e" 就
9 z4 d! B t6 w a8 p3 e可以了,手头没有Linux的话,找个"在线算md5"的地方也成...
8 P( b" ^! T5 ^. W
0 m, O# S& G, r5 i: Q; V i. E还有一个地方,查找 ; A6 D7 l+ o2 d, j4 S: O3 e
9 W/ L) J: G# N ]2 l$ c
<X_HW_UserInfo UserName="SZ00***" UserId="" Status="0" .... 6 C9 N- |, c) o7 W; j) c# k7 H
<X_HW_ServiceManage FtpEnable="0" FtpUserName="root" ) s8 x& B2 n4 K( C) H# W
FtpPassword="123456" FtpPort="21" FtpRoorDir="/mnt/usb1_1/"
2 y: e& \8 V5 n5 y0 ?3 i3 yFtpUserNum="0"/> 0 [; i) b* E. L9 V7 f
<X_HW_AmpInfo EthLoopbackTimeout="0" LoidAuthLedEnable="1"/>
3 e& v* L8 v! p" j4 ~6 A2 Z/ V
' K; p3 b! p& o2 I( x这一段,是控制用ftp上传/下载文件(一般是刷固件)时候使用的密码
: M- t" x: U7 k% H2 J这里改不改都行了,手勤快就把 FtpUserName 和 FtpPassword 都改了.
v! E; k6 @9 Q S1 R& P , s/ }! c/ ^8 o5 v# x
再然后,查找这段
% w( [# ]' o5 a7 @ 0 A- y2 u, k9 f- Q. i2 h4 M' Z8 H
<X_HW_PortalManagement Enable="0" DefaultUrl=""/>
: a: V: R; ~9 ~<X_HW_AccessLimit Mode="GlobalLimit" TotalTerminalNumber="2"/> , g, [9 V1 G) \7 s
</Service> $ p4 N; S) x( V$ G' C1 e" i
7 b8 ^+ `9 x/ y' m妈X,真底限,这个TotalTerminalNumber的意思就是,同时只能有2台
; a2 w. B- `+ u0 e5 ^2 `设备上网,多了不让,随便改个你喜欢的数字,比如256差不多了吧...
4 b1 | s" g2 } D8 d
7 B9 G1 c; G5 v+ m3 h$ e2 K- g* M" C改到这里,基本上可以了,但是如果你注意看,在管理界面->网络->
Y% U5 Q0 u' R/ V" F宽带设置 里面,第一个链接,是删不掉的,这个偏偏又是*TR069* 2 y) X8 Z* ^# w, X: F% e
这个协议是电信用来控制你的设备的,有了这东西,你的设备啊,内网啊
' i: b1 |+ K" g! g; u* ^- j0 z基本就是透明的,所以,我认为这破玩意必须删掉.
' O. a) G: u( m5 A# l. N% Z 0 Z1 N) G) q6 K: c# k4 ?1 e% w. d1 s
删除这个比较复杂,你需要知道XML的组织方式,找到这一段 ' X2 C& o! y' I" E. {0 x
! J/ c2 r* Q3 \<WANConnectionDevice NumberOfInstances="2">
& [ [# H5 m( Y7 Z2 g5 x& }<WANConnectionDeviceInstance InstanceID="1" WANIPConnecti.... 9 k1 l- k1 ], ]
<X_HW_WANUpLinkConfig X_HW_Enable="1" X_HW_Mode="2" X_HW_.... - P' T! t! [; f4 k g, D* A" t
<WANPPPConnection NumberOfInstances="1">
4 I! d9 ?( i" ]7 s9 C4 p* ^<WANPPPConnectionInstance InstanceID="1" Enable="1" Reset.... ' Z# P) z# Q9 l# w* |0 U4 c5 F- a
</WANPPPConnection> 7 U5 L4 ~' E7 _3 y9 z
</WANConnectionDeviceInstance> , L3 P, M" \6 T1 I9 C9 z! I; t
<WANConnectionDeviceInstance InstanceID="2" WANIPConnecti...
/ ]6 x5 _% ]6 ]* q) f<X_HW_WANUpLinkConfig X_HW_Enable="1" X_HW_Mode="2" X_HW_...
2 s; j/ _6 _. u: H6 M" a& j4 _: g% ]* V<WANIPConnection NumberOfInstances="1"> ! m( f5 u) p* H. C
<WANIPConnectionInstance InstanceID="1" Enable="1" Reset...
. }7 O, Z r7 j' P2 ~2 ]5 R+ C<X_HW_ExtendDHCPOPTION60 NumberOfInstances="4">
6 c" I" m+ ~* X% ^: X<X_HW_ExtendDHCPOPTION60Instance InstanceID="1" Enable=...
! p- N0 Q, x$ c# Z, y4 Q) ^<X_HW_ExtendDHCPOPTION60Instance InstanceID="2" Enable=...
# P+ P9 V- m$ ~) ?/ V+ C( e4 h, l<X_HW_ExtendDHCPOPTION60Instance InstanceID="3" Enable=...
, \! ]6 j7 {6 Y( _<WANPPPConnection NumberInstance InstanceID="4" Enable=... 3 P. D; ^8 V0 d8 J! B2 ~# [, S
</X_HW_ExtendDHCPOPTION60> : @6 f) U2 [' I( i# v5 s
</WANIPConnectionInstance>
% y& k! Y1 N! Z: I</WANIPConnection> ( r; u+ G7 p5 h6 v2 N' L! c
</WANConnectionDeviceInstance>
6 b, f) I8 A$ h# q" z- _8 D</WANConnectionDevice> $ x9 D. y: m. ]! g
! O1 G, A, Y. q6 G z% S很长的,我没有贴全,请注意观察, WANConnectionDevice 就是配置的 ' B& o0 j0 d+ Q L1 T0 v C1 f
"wan"连接,其中每个 "WANConnectionDeviceInstance" 是一个配置项
, C: o: \4 X4 \% Y5 I) w# I% X这就好办了,如上面的第一行.... NumberOfInstances 是2个,我们要
. Q3 b) `: a" o4 E; d+ Q/ w( Y' e删掉一个(减少一个),所以这里改成1.
% s( u, O- y/ P7 \6 j$ Z
+ q; c8 I* P* _3 ?5 Z/ `0 A下面每个WANConnectionDeviceInstance都有一个InstanceID,第一个
% \! |6 \# X) t6 p# p是1,第二个是2,先看看第一个,从头看到尾,发现了"TR069"字眼,没错 ) ]0 C6 x( W6 {+ u1 G$ t
就是它! 于是,从<WANConnectionDeviceInstance InstanceID="1"...
x+ h& Z! f+ o( d8 @8 o% V/ ?$ ]开始,一直删到最近的 </WANConnectionDeviceInstance> 结束,搞掂. " F( R7 b5 A0 h2 k7 r; L
% x- b% ~+ t% }; n8 T9 U然后保存退出:wq 重启设备,用刚才改过的telecomadmin用户和密码登录
$ S& w! D# o) n/ V; z+ t, I看看是不是好使了,那个TR069的链接是不是删掉了.telnet一下看看密码 0 r2 c5 h- m" {. }' R# k
是不是改掉了.
& w; L# k2 v' J4 L$ o5 f& i
c6 _3 O+ J. f. ]( c3 O一切顺利的话,进去删掉 hw_ctree_bak.xml hw_default_ctree.xml
2 a0 h8 L: p. H* i3 x2 s这俩文件,用 hw_ctree.xml 覆盖.
) J& S* n7 H) A; a7 \ + M3 P! C) F3 U' V# A
rm -rf hw_ctree_bak.xml hw_default_ctree.xml
, |/ D7 I" n% pcp hw_ctree.xml hw_ctree_bak.xml 6 h$ U; E) Q2 b. p
cp hw_ctree.xml hw_default_ctree.xml # b @% b$ y, v% s# A# s- n' s
4 P8 b0 R7 N* L, r' Z( S
保存劳动成果,恩... # k* P" A( Z: E* ^2 F0 S' G" G
6 R% K# { z" L/ i" p: J进管理界面...网络->宽带设置,如果你电话走光猫的话,需要添加一个
; X6 ]! r* F8 a; t9 {# k9 E& KVOIP类型的链接,vlan id 用刚才记下来的,在添加一个INTERNET类型的 # ?( b/ J4 @4 }
连接,同样用刚才记下来的 vlan id, 是不是开路由看你的喜好.保存
/ m6 s+ S ^8 ^( h/ |' v重启,这就全部搞定了...
$ r, i0 E6 X8 L2 H6 r: L
( f7 S, c# P) I其他配置,诸如无线,防火墙神马的,都很简单,配过家用路由的人应该
# p% J+ A( {8 e1 c5 Y$ F& U( c) A一看就懂,故不赘述.
4 |9 F* S% I! |$ \. s8 H
$ Q/ s6 l4 u2 r4 ]+ F华为的其他定制设备,也是类似的办法改配置文件,不同的是,它的配置 K$ B4 d/ \ j1 e. R* a C
可能是加密的,但加密方法脆弱,可以写个小程序,加密/解密就随便搞了,
4 }0 r) u0 J. R1 b默认没有开telnet服务的话(比如华为HG622),需要用备份/恢复的方法
3 A9 q7 P+ m: U来写入"自定义配置文件", 备份->解密->修改->加密->恢复 这么个过程. 0 H6 Q, x% P6 A1 E4 Y
, P" \7 z) g# C$ t; ^
-- 以下是无关话题 -- # h/ V9 K6 m0 o4 Z2 f4 a
4 p6 z1 ^* H4 A! @( w, W1 m
既然说到华为的这个加密,那就讲一下算法...*几乎所有* 华为家用设备 * F4 y O t2 }- @ f( c6 o7 H" H( ~
备份出来的"配置文件",都是这么加密的,有C++代码供参考: ( U; Z0 z; b; A) T$ {* X1 f z
0 B# {; F' s4 w" n, R加密,就是挨个把ascii值乘以2,如果超过127了,就减去127,完活. $ i9 _$ Y; u2 S5 q( M( i9 P
3 c0 K7 j" I& t# G7 p1 r
string encode(string input){ ) |5 Z5 Q. a) [; Z6 `
string rtn=""; . b2 |) O& x7 M
for(int i=0;i<(signed)input.length();++i){ ; v) ?+ Z4 h% ~( i& f! V+ ]
unsigned char val=input.data();
$ T9 k& W% k1 v: s3 o( b. t3 J/ A! @ int n=val*2;
l' J* ]: h" v. _9 |2 ?) K if(n>127){ ' }5 o& v; z: g$ O. f. B* x
n-=127; 1 D+ k& }: s7 f3 j1 D2 l
} & g9 {$ Y9 O9 T5 T7 ~8 P
rtn.append(1,(char)n); * a; R' W' ~8 m( Y5 U/ D. r
}
+ y2 H, E5 l4 J- X( ~$ r# U5 L return rtn;
" m$ t' s' O" Y2 Z* j( G}
! s- u9 r* j/ _9 e) h7 \6 y , M7 v, M% Y0 f& C9 q r
解密,就是加密的逆过程,模2看看,如果是单数,说明是减过127的.
$ s& ^# O4 Z, u2 ]2 a! x4 P, Q加回来除以2,双数说明根本没超,直接除2了事.
{5 L: c4 Q _0 T4 e
7 m |. B1 M9 h- M' }, @string decode(string input){ 3 F9 t7 e1 s) T( x
string rtn=""; $ Z% [$ T- L, I
for(int i=0;i<(signed)input.length();++i){ 6 A1 ?; w7 J9 l* N
unsigned char val=input.data();
, y0 x3 z7 Q7 @ ^6 g% G, I int n=0; : ~: p6 ?: ?6 s/ {9 Y" C5 n% J
if(val%2){ 3 Z# n' N4 C* [1 j; M; y
n=(val+127)/2;
4 _" u9 i) o5 F- B }else{ " ^4 ~/ f. O0 Z5 N
n=val/2; 8 x: ?9 K2 v9 _ D4 s# e: ~
} 8 k. T# K! N0 b0 R
rtn.append(1,(char)n);
. C9 M( v. W' k: d U }
8 [, e, x! ^0 w" C5 a return rtn; 3 u( d3 }4 O9 v! V: t4 L
} 5 K _& {+ y9 H( b6 ^/ q
8 F' v% ~- }" k
-- 无关话题结束 --
. b' h$ u+ H, p9 V$ l
2 @" J$ R2 I, b6 `4 ]6 [! E最后,引用一句装逼的话,结篇. ! ^9 I' K8 k! [: a* n3 w" I& S8 }
“Across the Great Wall We Can Reach Every Corner in the World” |
|