查看: 15874|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 w2 }) w% g' p4 Z0 o# Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 V9 i) L; _* J/ \  D7 Z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; [! d- T. h$ z+ O% t) A) n
usage: himr <address> <value>. sample: himr 0x80040000 0x0
& h4 I9 e. w% a- q/ ^' @  q# E# r% p9 \0 v4 k. q& o, K

# v4 @, X" w$ _/ w9 ]; L不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 J9 v) I7 i3 B" d8 b4 S
3 ^3 {- |7 O8 y/ g3 _: U
补充内容 (2012-3-8 09:42):
. c: H) G6 O4 _0 j' l$ ihttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
& O1 D) i7 [$ n/ n这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。+ o4 c( k0 _  M7 [2 c
: q+ F) I/ R- E6 `3 \
himr <address> <value>. sample: himr 0x80040000 0x05 `1 I. a. k$ k4 X2 S/ f1 e2 D
; n9 d* j3 o6 q2 j! r8 u/ q8 r3 x
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
1 n, x1 O5 C4 M% K* L  @himr 0x80040000 0x00
, B9 m/ `, a" S' O0 u( {- U" ghimr 0x80040001 0x11
2 t6 Z+ m# s5 ~% p* L' c0 m& S  i) Dhimr 0x80040002 0x22
) V, [# H+ }$ Thimr 0x80040003 0x33
1 v# H: ^, j3 |himr 0x80040004 0x44
3 i" A, Q2 O1 \himr 0x80040005 0x553 O, x! t8 w/ Z4 C

9 x' L) y( ?) `  wSN也是类似。0 n+ L6 }( P; j& c7 e! {4 v
, _' b; h6 G) z4 Q/ ~
现在主要是,谁告诉我们MAC和SN的地址?0 U/ b7 g, }% _; U0 ^0 A
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & |. D8 G0 y; u- Y& Q" r: ?
一直想找到运程修改MAC和SN的办法,苦于无解啊

3 x' G" I0 V7 q源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! f4 r( c6 }) {" f; a* k7 g5 v8 p
* U% A  F* X- f9 l
修改的代码早有了。到今天不会编译。
6 a* v- T% N( U+ T, o需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / n0 [% O8 L% v+ f: a3 D% l
  2. #include <malloc.h>
    . D. q7 U* u7 n. \1 p5 C+ t9 z
  3. #include <sys/types.h>5 H9 a9 j& n! q; I2 ]
  4. #include <sys/stat.h>( W2 W' Z$ E- S  ~
  5. #include <sys/ioctl.h>
    3 D0 z: o6 V# S% C9 [* S
  6. #include <stdio.h>! v7 f8 S; }5 K+ c
  7. #include <string.h>
    * P; z3 ?- e6 L* \" H* E( U9 G
  8. $ r: q2 H% K- h$ a0 o
  9. typedef struct {6 `9 n0 _" q7 x& [9 U8 F: }
  10.         unsigned int        e2prom_cmd_sub_addr;$ y0 c! J9 @1 r* ~+ |
  11.         unsigned int        sub_addr_count;! t" @, V+ Z/ W: T
  12.         unsigned char*        e2prom_cmd_data;
    ! {) w0 M4 s$ p. B3 C
  13.         unsigned int        data_count;4 h9 A, [2 V3 h0 [2 k8 b  M% z
  14. } e2prom_s_cmd;5 j* P) _: W9 x7 O' C  B/ f, t
  15. ; T8 g4 N3 e+ U* I3 U+ N
  16. #define E2PROM_CMD_READ 1
    ! Q, n( n4 f# j6 v. S) ?
  17. #define E2PROM_CMD_WRITE 2
    $ G3 N' B5 F; @* h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , ^% C, V/ C0 ]3 f. Y8 d

  19. : U" q% m6 @) K: H9 D8 [, X
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 d" j, n: M- s( G. I4 D  I
  21. {
    4 l8 Q7 S- n, ?' l, r  E& \
  22.         int fd, ret;5 n- y& ~8 j5 b7 ^& @9 s7 T/ `7 L- k
  23.         e2prom_s_cmd arg;
    ; c, _8 W! a8 O2 z& J
  24.         unsigned char buf[0x18];3 D$ \6 y& M+ c8 z/ I

  25. & J7 t! }; D; e4 n& u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : T; {! ^9 m% ^  A2 X  |# h- k. V
  27.         if (fd  < 0) {
    ; Z( Q6 c: F% Y5 Q/ o3 f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # n* |& M7 l# o' z
  29.                 return -1;( H- l( U% n% Z
  30.         }5 G4 ~; _) F/ ~+ _& ?# @, M
  31.         arg.sub_addr_count      = 2;
    6 e: j& ?; G2 C' D4 A# ^
  32.         arg.data_count          = 0x18;" _1 A" k: E' T
  33.         arg.e2prom_cmd_sub_addr = 0x290;' G( P( E$ l+ k. ]3 ~
  34.         arg.e2prom_cmd_data     = buf;# H0 Q) D5 m7 l# o" d8 k
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: Z2 l/ N7 @$ u, B7 k
  36.         if (ret != 0) {
    7 D, e& l. I% J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 P8 [- Z  m% Z# k% {" d* o
  38.                 return -1;
    : U: ?0 B4 ]  p- t
  39.         }
      J) b$ I* Z% L9 n; Z3 }9 R
  40.         memcpy(mac, buf, 6);, u$ h8 N* u; t8 \8 u: R# x
  41.         memcpy(stbid, &buf[6], 18);8 u% L0 p4 J! m) t
  42.         stbid[18] = '\0';# d: l. P' `$ W* n5 ]

  43. # m: P' U9 N& O
  44.         return 0;$ r2 ]9 z; l* b& e5 w# k9 _
  45. }, d6 F1 X; s$ `, Y9 E( v7 W! F" g- V
  46. * l8 Y/ C/ K4 V2 W1 T" E
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - P. Y6 k, y' W1 G' [$ G
  48. {5 B  [, H- X! X  z, u7 \
  49.         int fd, ret;
    $ S* n! R( Z& O' X
  50.         e2prom_s_cmd arg;$ r9 d/ D4 I" d! v. y8 P' j
  51.         unsigned char buf[0x18];& g+ e  C1 R6 z8 G, c
  52. , t2 c" c$ B0 D) m0 ]6 P8 z
  53.         memcpy(buf, mac, 6);$ M7 `. S) m6 U4 w
  54.         memcpy(&buf[6], stbid, 18);9 D, k3 A1 f3 z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);: O# j) s" n- O& A6 L) ]
  56.         if (fd  < 0) {
    : |, L1 [2 ^% q9 Q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 D8 g* H& o0 W7 Z+ B
  58.                 return -1;
    3 |, ?* w* |; ?. V% N6 s) V
  59.         }! c' K% F0 U4 [% n. T
  60.         arg.sub_addr_count      = 2;: x: y, W1 y' h1 ~
  61.         arg.data_count          = 0x18;
    - o" ~" A% a2 `. s- ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 C, X  \$ M& \' d2 m1 f6 l
  63.         arg.e2prom_cmd_data     = buf;" B" z: w0 |( P) X( h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ B. Z8 {: b; [( m2 S+ `8 C
  65.         if (ret != 0) {  _9 }' ^$ h/ `
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; b0 p; f; _+ _
  67.                 return -1;
    . ?8 F* Q( X; B* N; m
  68.         }/ b0 K1 q7 p( }4 {8 Z# e- T7 B

  69. ; P* r2 [% x1 u2 N! t- t
  70.         return 0;) U1 _/ [# ]4 l  g& y0 }$ C3 \
  71. }
    " o8 q  M3 P* g2 `1 r

  72. ! c$ `9 L# m; R( [
  73. int main()
    ! j5 P* X4 i; n
  74. {
    3 l4 W  f$ O& Z3 I: d
  75.         char c;) B' K' B. o2 G6 Z) W  L5 C# v
  76.         int i, macs[6];
    + V- _# Q& f/ I2 _
  77.         unsigned char mac[6];
    0 u. W' Z# ?9 z! v
  78.         unsigned char stbid[256];
    % q0 k8 @, D  ~. W. l8 u0 B
  79. 9 k8 H( @- ^- I0 g
  80.         if (readparam(mac, stbid) < 0)
    7 l9 d) H6 f$ ?
  81.                 return 1;# c; m3 I3 D1 |
  82. 6 C6 L0 R2 B. F; U0 z' T& f! {
  83.         printf("Current parameters: \n");# Z3 B; E9 _- f  h9 c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % V  _. a6 b8 S3 k# n2 o
  85.         printf("  STBID: %s\n", stbid);5 s1 A: C0 x# I: \
  86.         , Q- b) P% n0 X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 Y) S3 C* Z/ e! Q- O& I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 J  {7 T3 ]1 e5 L. n
  89.                 printf("Input MAC error\n");
    4 l- u* \! A3 b8 d  D) N
  90.                 return 1;9 l$ C, ?0 A3 J  Z7 I1 J/ ^( Z
  91.         }3 I3 D4 B0 K  J- \
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 d1 n2 o% J& A( L& C4 F7 V
  93.         printf("\nPlease input new STBID: ");5 M- w5 P) h; C/ C" G
  94.         scanf("%s", stbid);
    / Q6 b  q7 k% i* m
  95.         if (strlen(stbid) != 18) {
    * X6 v* d# ~9 W2 a
  96.                 printf("Invalid stbid\n");
    $ b; i2 p2 S% A! n* v+ m/ t
  97.                 return 1;. b3 ~! G1 o) h* Q) e3 y& s0 J0 S$ T
  98.         }; J5 {: }5 v6 I
  99.         printf("\nNew parameters: \n");
    * v# V" ^6 l% k% a8 R
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 d4 H$ k! ?) |. L: L% c( F' S
  101.         printf("  STBID: %s\n", stbid);" I$ `4 K6 l( h- W: I  {

  102. 2 O; r8 K1 v' L* i6 r
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ' T0 {* S) `1 c
  104.         for (;;) {
    % D1 U. a( B/ w
  105.                 c = getchar();
    7 B* ^( n8 Z) K5 p( i/ D: M, j
  106.                 if (c == 'y' || c == 'Y')7 B  \% F/ s! d1 r7 J
  107.                         break;6 y2 D6 `3 H- [7 F. s* `
  108.                 if (c == 'n' || c == 'N') {
    : F4 \) x+ a( ^% @9 ^  i
  109.                         printf("\nAborted.\n");
    ; S8 t- _# S1 H3 s' k3 [" y! j
  110.                         return 1;
    & n. Q# E6 u6 v, I# E$ O! Z) e# K
  111.                 }' r4 C/ J, @3 d3 r& F
  112.         }
    1 j! C/ Z3 C. J  d
  113.         if (writeparam(mac, stbid) == 0) " i2 p- G1 u) p) j
  114.                 printf("Parameters changed.\n");
    , @6 e3 B+ M/ M1 {6 P3 r2 ^
  115. 0 @+ L% ?# p. A5 c4 Z) y: B9 W
  116.         return 0;
    ( G" l/ U, D; H6 w) c
  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 7 |* R; I9 L8 a+ R. r- i& [
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ D3 J& s4 g  N
你用的编译命令行格式是什么?! Y& \; B0 n5 p3 \: e5 |
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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