查看: 16974|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * i' z8 b! _/ K$ J: W6 x/ i
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    6 a9 N$ o, q1 K  O- |! S2 W
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ W* T" n3 D! J. Lusage: himr <address> <value>. sample: himr 0x80040000 0x0
. Z' c2 `: l0 R' _( L/ [# l* P% O: P$ @8 |3 s) c8 C* p
% A2 S+ T& A' N
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& n- h9 s: q' \* |! D2 F* }
: O" J4 m% S; g8 E1 a
补充内容 (2012-3-8 09:42):' x. ~+ n+ x9 w1 U% S1 r1 Y+ i' h
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 f$ r/ A3 b' m
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。. ]2 m/ s  |+ ?- o

0 s" P; G# c3 L9 \  Y0 ohimr <address> <value>. sample: himr 0x80040000 0x0! U! C) n, @2 b
6 r2 c) b1 `* ]. s) G- b
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ H6 G1 }- W1 C3 r8 whimr 0x80040000 0x00
; H; z- f0 y5 k- F9 `himr 0x80040001 0x11' `" Q# K  p( ?) r4 H% C# {
himr 0x80040002 0x22
, z0 A7 w- u7 C/ l: shimr 0x80040003 0x33+ c' h% r6 q7 d/ t" V
himr 0x80040004 0x44
, r, m1 a# t- H! F, ^himr 0x80040005 0x555 D! @0 J* Q9 d+ Q* V

% p. `# ]2 r* q# l9 ESN也是类似。
- u/ L2 ^; J" I) Y
) v0 E# K8 [: N5 j9 N* \" \- o现在主要是,谁告诉我们MAC和SN的地址?
0 r: _2 F; K& T0 R! _
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
' j# ]/ h  b0 b. y一直想找到运程修改MAC和SN的办法,苦于无解啊

+ i0 }' v; T6 o1 K1 _源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
5 V9 T1 K* C7 p6 x' e) g2 z4 D4 [' H2 u+ ?6 y- w; y4 ~: c2 l- N
修改的代码早有了。到今天不会编译。& @9 F- n, M. B1 w  l2 [- d6 ?
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    6 G$ I2 q- ?9 r
  2. #include <malloc.h>* f0 F4 b5 l8 R6 y! Q
  3. #include <sys/types.h>: A  P9 O; j; j1 u
  4. #include <sys/stat.h>8 J6 {9 C, t/ x' E" @% d
  5. #include <sys/ioctl.h>
    1 W$ I) Z7 R$ o1 q1 @' Y9 [( c7 t
  6. #include <stdio.h>
    . ~7 B0 S% ~; f0 h1 T
  7. #include <string.h>
    ! N1 u% \# C) Y! m7 }

  8. " f# m2 h9 R! }$ d9 l+ g/ ~
  9. typedef struct {% s( N  ]/ e& y+ t: k- Q
  10.         unsigned int        e2prom_cmd_sub_addr;
    $ w3 E: A/ ~0 H9 {' V! _
  11.         unsigned int        sub_addr_count;
    6 d) k) l2 e. @/ m5 g
  12.         unsigned char*        e2prom_cmd_data;
    1 r& O/ n/ a& t1 `
  13.         unsigned int        data_count;
    $ ?* ^9 A$ ~# l( l
  14. } e2prom_s_cmd;# O4 ~* g5 n$ U7 ]0 G6 |

  15. 0 m% F0 J1 u) _# O4 T' |3 }
  16. #define E2PROM_CMD_READ 1& L: I  X+ E1 C/ N7 u. j7 O
  17. #define E2PROM_CMD_WRITE 21 l, q& q8 Q2 e5 t3 @
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      T  ^7 x9 ]' f7 U+ G* e

  19. 9 g7 w/ Z$ w% l9 j5 F
  20. static int readparam(unsigned char *mac, unsigned char *stbid): Z+ E6 O! g- e& j1 p
  21. {
    + J$ G( g3 K; h
  22.         int fd, ret;
    $ C- k6 ^2 |  C6 O2 e. }0 v6 `$ M
  23.         e2prom_s_cmd arg;/ A4 O: ^' Y% h: R2 r
  24.         unsigned char buf[0x18];+ m. X7 x" |4 c0 N. S

  25. - A* H! W- x) C# ^2 V; F
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , F$ {% [) ?) o. n! h: Q
  27.         if (fd  < 0) {
    % s, l- N. d( d2 z: o3 x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 d: n3 H6 W, [/ ?8 l7 W: I
  29.                 return -1;. d% ]- i+ _3 i, j
  30.         }
    2 r7 M/ F: L( A# L
  31.         arg.sub_addr_count      = 2;4 ], C6 ~5 c: g$ w! N) r
  32.         arg.data_count          = 0x18;
    " z- `0 n: U0 \& n$ K5 f
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 j8 i# @. z4 d! u$ g2 N# V
  34.         arg.e2prom_cmd_data     = buf;
    4 w- {1 j0 {0 i  ?8 R! l" p+ K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);) o8 v- E7 _$ Q, T: X
  36.         if (ret != 0) {" v! G' c! u8 h; {+ M( g0 u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - y- }' S5 w$ Y$ T# S
  38.                 return -1;
    $ N: N; c8 }( D" G# _! R% x
  39.         }
    " @/ s! x; u- R
  40.         memcpy(mac, buf, 6);
    ' h9 Y7 u! Y1 d; g
  41.         memcpy(stbid, &buf[6], 18);
    3 {4 {# i! g( V: s- m
  42.         stbid[18] = '\0';
    ' _5 R. R9 B3 K. O3 u2 G
  43. 8 |2 ~. X; R# [: |
  44.         return 0;
    " i& e! x" ]- E
  45. }% Y  E: B+ j1 Z8 E3 n! V# i
  46. # k" T' H$ w$ Y% C- d  R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . n; m1 I+ P4 I& R2 P$ J
  48. {4 I, k% o; k  ^. `
  49.         int fd, ret;4 r! C* [* S* {$ \
  50.         e2prom_s_cmd arg;9 S% H% v/ j! U* a$ t# R' e+ U9 Q, S! K
  51.         unsigned char buf[0x18];# z# b( o$ F5 @+ ]* p
  52. % S$ c3 x2 [+ {0 o# e
  53.         memcpy(buf, mac, 6);
    + ]8 x7 O, D0 v8 `" ?
  54.         memcpy(&buf[6], stbid, 18);) q5 Y! R; n: C8 W7 n/ U) _. R8 G
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 q8 u0 {  |& |  N, ?
  56.         if (fd  < 0) {3 e+ \/ g' s0 @9 `1 x6 v6 \. m
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . X, ^5 X0 S0 `
  58.                 return -1;" V( Y$ o( `: K2 R1 u7 q! B6 c
  59.         }
    / b2 {! \# U  O
  60.         arg.sub_addr_count      = 2;
    : m6 ]& v" z- b, t9 g
  61.         arg.data_count          = 0x18;
    / f% a$ v. _! x4 ^* {  x
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' r# {# |1 |* P0 a
  63.         arg.e2prom_cmd_data     = buf;
    & K; x' N: Y; r/ Z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + s+ L3 O! m3 I
  65.         if (ret != 0) {" K! x; ]5 d1 }$ h0 t$ K" \; O9 J' C8 |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);4 c7 Z5 k: T" B& x1 W" D5 p2 R+ o
  67.                 return -1;
    . j7 |; P( g! w* r: {
  68.         }3 [) i( ^1 \1 }( J( ~
  69. 5 n6 I9 O* i# V/ r) o  U
  70.         return 0;
      d" \9 r4 t7 W! i# b5 {( J
  71. }
    3 c: H" P! K0 \/ V" ]1 f
  72. ( `8 K) V1 l3 s3 c% n9 W- O, M* s
  73. int main()
    & c1 w- k7 ?/ u) f" D3 [8 A4 Q
  74. {
    . _: g$ ~# Y8 Q( k+ R; l
  75.         char c;
    5 Q! T. Z* W3 Y( \
  76.         int i, macs[6];8 j/ A+ ], g- f
  77.         unsigned char mac[6];
    : e8 r: X* f! B
  78.         unsigned char stbid[256];1 N( p: t+ q7 p3 i! I

  79. 7 r6 R% q( P9 g. L: v' b) W' t
  80.         if (readparam(mac, stbid) < 0)
    # z& v5 G: E# c' ^
  81.                 return 1;+ ]% A7 @, @4 b/ G2 g/ }
  82. ) R0 j3 b! b6 V. p" |! S' a7 ]
  83.         printf("Current parameters: \n");5 z( }5 N3 _# Q: H+ A1 D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( R. ?- M& U1 a6 Z
  85.         printf("  STBID: %s\n", stbid);4 v$ M  u9 t4 k6 j* J
  86.        
    ' b9 t: a+ w2 z. @
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");' r; j/ a% a2 e
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ) r& s9 Q0 ~, K; ?( m, B/ P7 z6 ~
  89.                 printf("Input MAC error\n");
    7 B' v$ Z6 p" R# N5 y! M+ G  T
  90.                 return 1;" c! Y+ u+ c; E, E3 F
  91.         }, S$ \& o6 ~$ R/ @; F
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: ?4 |+ U/ j9 L+ R
  93.         printf("\nPlease input new STBID: ");
    0 `) ]5 \" t: u4 o( d+ d( o0 S
  94.         scanf("%s", stbid);4 k+ {  W2 G: D1 t- U
  95.         if (strlen(stbid) != 18) {% E- u7 j4 F" R% ^" t
  96.                 printf("Invalid stbid\n");/ ]2 _" `/ @0 R" R
  97.                 return 1;* B0 q9 Y. ~1 U
  98.         }
    . S6 R6 H- Y: @( p
  99.         printf("\nNew parameters: \n");
    " k4 A$ @% D7 z% E
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) q! q; {0 p/ G; s# |' g4 m
  101.         printf("  STBID: %s\n", stbid);
    ' ~7 q5 \9 |5 V/ M7 H1 G0 W6 K/ t$ T2 u
  102. " c2 v8 _  o' ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      B5 p% n- B0 A
  104.         for (;;) {
    ; ~( N% G# z% S, I% B6 v
  105.                 c = getchar();
    9 L& {: u' e' I( g
  106.                 if (c == 'y' || c == 'Y')2 C4 i3 Q* n) P0 R
  107.                         break;/ Y* }! _9 C, B7 M: ]1 [5 l
  108.                 if (c == 'n' || c == 'N') {; R4 d5 i+ l/ P# r9 o
  109.                         printf("\nAborted.\n");
    # @* N3 _* D1 s% I; Z2 V
  110.                         return 1;
    / p. q. T" w8 X4 l* r1 n
  111.                 }9 P; d  O2 U. }! X: h: J3 @
  112.         }/ I1 P: I- H2 o
  113.         if (writeparam(mac, stbid) == 0)
    ! Z3 L" w0 c) j+ I4 f# ?% H( X
  114.                 printf("Parameters changed.\n");- h9 g( ^( ?7 S
  115. / g/ d: Z$ a. q
  116.         return 0;
    7 _3 n# N) R0 t+ q, M' z' e
  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
  \1 K# G6 V9 H! ]* B, U0 [+ p" a在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 q' F1 D5 b7 N5 P6 {你用的编译命令行格式是什么?5 e' M. X7 _, }  ]; c- \. w
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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