查看: 17000|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    " f- ]* C* B  _2 L7 b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig" j" A& i- ]4 L* o( L+ D
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ D) L5 |: F* c: susage: himr <address> <value>. sample: himr 0x80040000 0x0
4 `& j  G2 |( U" d+ o
% u- S2 j7 Z" z) H( ^
/ L/ E- t% ?+ D5 _" g' }: X不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- [1 b4 M- N" c* H2 O: k
* [/ W0 ?' P' y! S! n8 z
补充内容 (2012-3-8 09:42):* K) ~* }8 v: i4 o2 e+ m# l
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 Y0 J6 k2 T( r这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
4 q2 U2 W6 h1 u' D! f& e  l5 X; E# L( g. q& c/ t* A1 |6 S
himr <address> <value>. sample: himr 0x80040000 0x0: `# d; }& X) X6 o
3 \- P; P" y  y0 F3 h
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
3 M" K8 I. h+ Chimr 0x80040000 0x00
) Z" Z2 Z  k2 a; `6 k1 _himr 0x80040001 0x112 @7 X( [9 R0 z  M0 {0 A5 _! l
himr 0x80040002 0x22- R- O5 y. K+ h) F5 H; x3 Z
himr 0x80040003 0x33
; T8 G& H- L0 Y8 }himr 0x80040004 0x440 L5 u* T) t% I5 `' t
himr 0x80040005 0x55
! t& d' X8 Z9 J( v+ e6 }+ n
; I) e. r5 z6 C1 y) nSN也是类似。7 d* d! Z, k0 X0 Z$ |' r

4 f9 u1 P6 R* o现在主要是,谁告诉我们MAC和SN的地址?* ]" a; B# t% U) `: @
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 W" c- ]/ ]+ D* m+ A+ [* e一直想找到运程修改MAC和SN的办法,苦于无解啊
- x& z0 i" I! `* h( ~
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . c6 F# M9 ?0 ?+ X/ v

1 L; R9 W4 Q4 l* e: J修改的代码早有了。到今天不会编译。2 E8 D: c( L  h% G
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( C. o0 L  I4 l2 e7 ]5 O
  2. #include <malloc.h>" ~4 G& z' L+ e
  3. #include <sys/types.h>+ p) d& C' Q7 R% _
  4. #include <sys/stat.h>
    + u: @- S* R$ |: k
  5. #include <sys/ioctl.h>
    4 r% V. [- G: ^+ B, B
  6. #include <stdio.h>
    % p; @+ a- I/ k  p
  7. #include <string.h>
    6 i0 o1 n1 y7 c3 X

  8. $ }8 S& [3 n. m+ T2 h* ?# D7 h0 ~
  9. typedef struct {9 p0 d/ M2 t7 I3 q6 `! s! l1 c
  10.         unsigned int        e2prom_cmd_sub_addr;
    - _9 @& p% z7 y+ h/ X( I
  11.         unsigned int        sub_addr_count;
    9 I/ U2 C# g& U
  12.         unsigned char*        e2prom_cmd_data;* q1 T7 @4 y0 N! |7 \# y: T
  13.         unsigned int        data_count;+ x, b- H7 h) Z
  14. } e2prom_s_cmd;0 C8 A: w- {9 d" S! w2 N# h

  15. ( Z( R( D( a4 z. _, I
  16. #define E2PROM_CMD_READ 1) Y  D7 K  J  B% a, B2 y
  17. #define E2PROM_CMD_WRITE 25 S) u* U$ K% y; B6 z# [+ l
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* h. @: y9 k) [

  19. ' A  m8 N2 y+ D% d
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    - C% q5 C  I# V9 x+ k" I5 T
  21. {
    ) {* V! s" w( [: A. j
  22.         int fd, ret;6 E  M. d; X3 L( h+ h
  23.         e2prom_s_cmd arg;5 p' w7 e2 w9 a; w) C+ j( t" \0 w
  24.         unsigned char buf[0x18];+ e, }0 D1 _$ w, m9 Q

  25. ( k9 f( k2 D! U3 L6 u0 {1 x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);& T6 U- d- q9 ~  U- [# A
  27.         if (fd  < 0) {+ U7 x# V/ }0 {* m3 y/ g* g1 M4 f2 l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 T$ Q% o7 Q/ s% J
  29.                 return -1;
    7 m0 S% o0 o! e5 A
  30.         }) s0 k: Z* {# j
  31.         arg.sub_addr_count      = 2;; a7 D7 M1 _; D( y& ]
  32.         arg.data_count          = 0x18;
    - S6 G) f3 l- [# ~$ J+ u, r! z& g5 o
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    * Q2 S) ~& Y9 Q8 a
  34.         arg.e2prom_cmd_data     = buf;% f8 G4 \9 F( U+ ?- l
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / y) k$ O* Y: n: V+ M7 E, A: J
  36.         if (ret != 0) {
    8 D* ~3 B  q6 T- q" N2 h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);1 c! c  V4 n. v, z' q
  38.                 return -1;
    3 Z  \. s. H- W5 ~
  39.         }
    % R, F) ], E5 ]& ~
  40.         memcpy(mac, buf, 6);1 X# z* n* A% f
  41.         memcpy(stbid, &buf[6], 18);) N7 a; c- Q+ j
  42.         stbid[18] = '\0';
    3 g) m' o" \8 {/ h# c
  43. ; t2 U* K& L3 P9 q& e" E
  44.         return 0;5 ^1 Z% q# U* _  d' z$ d
  45. }
    , {: U" ^5 g7 \

  46. ) C$ U6 P2 F" e$ K- l
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)5 O6 n, [! `- m; S: U$ o) I
  48. {" R5 S& A# A0 t  n* n) ?
  49.         int fd, ret;
    - O  E  z# }) d3 [6 J% L! L
  50.         e2prom_s_cmd arg;
    1 n8 x0 E! {& H! ]5 E  e3 t  [: @
  51.         unsigned char buf[0x18];
    " ?1 ^- m( D+ b3 ]% Y2 g; I
  52. ' h6 n7 N, C8 ]5 `* a$ J
  53.         memcpy(buf, mac, 6);
    9 C( v' G/ u* t$ v8 z
  54.         memcpy(&buf[6], stbid, 18);) s2 Y  ~; X& A6 @2 W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# ?) [2 G' i' m- t3 z; m4 E. b. r
  56.         if (fd  < 0) {; \  j7 x1 w+ {- G
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* c5 J& q; @" o, J" M2 ~
  58.                 return -1;/ [9 U  I! G, s# @
  59.         }
    2 E7 R# W- A+ h5 w$ ?
  60.         arg.sub_addr_count      = 2;4 g; E% b4 U, r5 e* x( ~5 P, V
  61.         arg.data_count          = 0x18;
    ) X8 n) N$ `3 Z5 K$ L- G
  62.         arg.e2prom_cmd_sub_addr = 0x290;3 e+ ^# e$ X1 |4 L
  63.         arg.e2prom_cmd_data     = buf;
    7 s3 i: k0 U( E4 V/ H" E$ B' T. G; u& w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: ]' g! ?5 F% `% N0 Y3 Q
  65.         if (ret != 0) {5 o- o6 w/ Q4 D" [. z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);; g" p2 [% M7 W
  67.                 return -1;
    - a2 F7 n4 E* g
  68.         }
    ; a4 x+ B: I0 Y( w/ l

  69. $ q5 U# l4 K) `5 ~, G! h8 m# y, f
  70.         return 0;
    / O2 j7 Y0 b8 e8 K
  71. }
    + k# D% K, v# P5 s

  72. . A" V. W) w4 B$ T% e5 d; v, A
  73. int main(); U5 [$ e9 `# P. x) R
  74. {8 G- e9 z9 j) t9 J( f
  75.         char c;
    - l1 T5 v& @/ n! D7 |- ]( g
  76.         int i, macs[6];  H7 a9 q- D5 F" Y  U
  77.         unsigned char mac[6];0 V) H: p5 ~+ a
  78.         unsigned char stbid[256];" n& B4 I+ g6 \
  79. 7 J% n. u* `+ y( O. n; A
  80.         if (readparam(mac, stbid) < 0)
    # R/ L8 i. T2 ]0 w6 K
  81.                 return 1;
    0 r! S9 _6 U. J6 D% R* o
  82. 8 n+ `7 N+ n( Q; [" y
  83.         printf("Current parameters: \n");
    9 @7 @3 t" o/ U: L# \! p; T. j
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' g% B$ j* s( M( R5 b* W
  85.         printf("  STBID: %s\n", stbid);0 O. }% C/ R6 T- E( h
  86.        
    - O' E3 I. [; B+ Q5 P9 a: _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ R7 _1 s$ e8 }" A& j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & u5 f) z$ Z# C( ^/ U* ]2 {! Z
  89.                 printf("Input MAC error\n");7 y" ^7 f+ O0 T8 ^; ?
  90.                 return 1;
    ; r* e# U* P; O9 X% n! A3 R9 J
  91.         }
      z" g2 _$ U0 ~9 h  z8 _: i  z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) u  G9 M# @6 O5 j& b
  93.         printf("\nPlease input new STBID: ");
    1 s: ~- j1 \) M4 J( L8 Z
  94.         scanf("%s", stbid);
    6 |4 ~3 D* Y8 S" h! @! I
  95.         if (strlen(stbid) != 18) {+ r  w& v. D2 ^5 H3 y  P+ a
  96.                 printf("Invalid stbid\n");4 ?) q: c: h  x" ?7 L# h* i" z
  97.                 return 1;9 Q* F3 f# c3 W! Q, l! K4 j$ U
  98.         }6 \5 C4 [( q6 q) _8 ?) U- A5 X- T
  99.         printf("\nNew parameters: \n");8 G- t6 R6 {* X4 D6 T0 d* n4 f3 f3 |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : J" c& Y% l3 m( Z" o
  101.         printf("  STBID: %s\n", stbid);* `( U4 S# m; N% R% W3 }

  102. 6 @8 j% h2 G& L* I6 ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 Y3 q; ^* z$ J( K2 g
  104.         for (;;) {- P- m' \- H' y1 s
  105.                 c = getchar();
    , o4 b- T/ O$ u) o
  106.                 if (c == 'y' || c == 'Y')
    ) C. K9 k5 @- M5 p: q# h, ?
  107.                         break;
    ! R+ m: X# }; o! V4 i: v8 o2 I/ i
  108.                 if (c == 'n' || c == 'N') {
    - X  D" R3 i8 u4 m
  109.                         printf("\nAborted.\n");
    # T) C. A/ f) y; _
  110.                         return 1;  R3 J0 n4 a$ ^* L
  111.                 }- u9 N2 p) h4 C- s& a  a& r$ d9 @
  112.         }
    - f) c& k4 S4 g) _
  113.         if (writeparam(mac, stbid) == 0) 5 q- f* V( C3 ~$ n! e8 U
  114.                 printf("Parameters changed.\n");
    . q& P9 l9 `" V! d, s4 E5 P

  115. & u8 O# H% \# u
  116.         return 0;' W9 O7 C8 `9 R$ S
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 |福建| 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 |浙江| 显示全部楼层
0522 发表于 2012-3-23 18:24 8 N5 d5 ?8 s( D. V1 y; `# N( h! n& u
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 I4 U9 R0 h/ f" O你用的编译命令行格式是什么?7 U# U# {% b5 P" ?; ?* R
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部