查看: 16011|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr: q% D6 P$ {. Q' l4 j
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig' o. j; a% Y* O# m( L% c7 ]
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# P8 A' x  r: @$ f" \( H! Xusage: himr <address> <value>. sample: himr 0x80040000 0x0# W4 l4 W5 R5 m5 R

2 c! e, R0 D2 f3 z) Q- I+ O0 D# r) i( W( B2 K
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 E, Z5 K! N+ J; F4 P7 D
+ V' p6 G6 s, j  P( l" g( {8 G
补充内容 (2012-3-8 09:42):; e+ O1 N. J5 c6 I
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, Q7 C+ y5 a1 \5 ~* P" X" U这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。+ x. k7 e9 m% ]; o4 T

# T. s% q: A3 K, L  |9 F+ ^, A- Mhimr <address> <value>. sample: himr 0x80040000 0x08 E6 k& I' v5 G! V5 K$ Y- R

1 R! M' T7 s* l" _! c: d例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 j9 r8 f7 I% [! v# U- x4 chimr 0x80040000 0x004 N/ D; O- |: F+ p2 e$ f$ h! p
himr 0x80040001 0x11
% q) p; P3 h. {* I; B' Lhimr 0x80040002 0x22
) {6 `+ q4 d+ d3 b0 I: t  m" [& M) chimr 0x80040003 0x33
0 @6 Y- {+ Y0 w$ M3 Xhimr 0x80040004 0x44" R- Q# g  ?5 r
himr 0x80040005 0x55/ f3 s' G* A& r6 y( H6 H
+ W1 I7 ~" n! V5 Y8 j
SN也是类似。
5 b; `9 d/ N- W- N* q+ U: |! b1 X; w; ~7 ^! T
现在主要是,谁告诉我们MAC和SN的地址?  q6 W( t5 U% }! f% l; E! i! \
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
4 ?1 C: r8 L: F* }9 Y; V一直想找到运程修改MAC和SN的办法,苦于无解啊

& T  m* ^* k. c; q; R5 x源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - D+ B% b* E7 Y. j9 \7 T% ^

# t: K7 {( ^5 |% K修改的代码早有了。到今天不会编译。- e6 n" a3 h7 [4 q4 M  k, h
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 \  M& Y) j; `" L9 _& m+ D
  2. #include <malloc.h>7 C" S9 N" I) B0 N# e% v- S2 b* n
  3. #include <sys/types.h>* Y: b7 L" H! p, F7 E
  4. #include <sys/stat.h># G# o, R; t# K# S2 `+ d
  5. #include <sys/ioctl.h>
    : W8 ?, `* @' {% o
  6. #include <stdio.h>
    $ w# a: J* |9 G4 s- }; B3 S
  7. #include <string.h>
    ! L. C7 f; _$ H% X& N7 S  U
  8. % p0 ?. T( r- k8 `
  9. typedef struct {
    : L1 k# }6 J" Y+ H7 \0 r+ t
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 K6 }- v, t/ {: P/ _6 V
  11.         unsigned int        sub_addr_count;
    9 E0 n. e+ E0 R; l1 Y
  12.         unsigned char*        e2prom_cmd_data;" Y& E1 I* U9 S6 y
  13.         unsigned int        data_count;
    " L4 g2 H. _6 U( o1 n
  14. } e2prom_s_cmd;
    ' _  r: [  `( o# l, z3 z: [

  15. 5 C; y# z+ C4 C+ C1 V. N5 |; s; e
  16. #define E2PROM_CMD_READ 1& i  G) @! j7 [8 }0 }7 z
  17. #define E2PROM_CMD_WRITE 23 n; j4 \+ I7 z. x* Z; c  y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; R! c2 b0 q$ `4 W

  19. 6 z1 A  k/ @" i
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( Y' ~* X9 `& k
  21. {) a! `. J. ?2 `/ U
  22.         int fd, ret;% b8 o/ |2 ~% `! g5 r9 h; X
  23.         e2prom_s_cmd arg;; b8 ^1 p! R# ^4 A. p
  24.         unsigned char buf[0x18];
    ; ~" l' A# r% f1 A9 _: e. q
  25. 3 c1 L, m/ N9 L# `% b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 o: @* j' [  z. T6 N
  27.         if (fd  < 0) {
    + A/ M1 v( V. S: [- w
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 t- y, E- r* z0 o; e
  29.                 return -1;* J+ Z; f9 L0 i2 W4 W0 J( F
  30.         }
    % _0 O5 x" D+ I; G2 [% d
  31.         arg.sub_addr_count      = 2;( n( W& l( _4 a) x% I6 Y
  32.         arg.data_count          = 0x18;
    / p8 C# D5 D' \9 {0 ~0 ~6 ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 M, |2 Y1 K4 p! K) A( x$ H$ j
  34.         arg.e2prom_cmd_data     = buf;" o5 Y- Q1 W" {7 }. k
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    + a! y  J* ~' h- ~
  36.         if (ret != 0) {
    : t4 ^3 `3 Q' F$ d, k2 U# `6 w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ X7 n  B& N0 p( y7 m8 e/ c7 r
  38.                 return -1;
    3 T, [. p9 Z" K4 C5 e
  39.         }# t: ?$ B3 U- P" x: B" f$ L  h
  40.         memcpy(mac, buf, 6);- z6 @. `; U1 r6 @- k8 W  p
  41.         memcpy(stbid, &buf[6], 18);
    5 d$ I8 h5 O: [# A! q: Q+ [
  42.         stbid[18] = '\0';& u; [+ M# n1 [% X
  43. " }2 A# g) N  L- Y3 C" L7 [* _$ ^5 ?
  44.         return 0;/ Y/ v! K( r' u7 W3 B8 I- }4 ?
  45. }( m3 C6 }2 e  V, n8 l  Z: K. r

  46. 8 R0 E% m" @- k2 I- O6 C4 \6 ^- X! |
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)7 }9 ?3 T5 q& c0 R+ M: ?
  48. {) t( N; ^8 h. ~; b# c$ ~  |% k
  49.         int fd, ret;
    ' ]' u) Y4 @( M$ N5 w2 C/ n
  50.         e2prom_s_cmd arg;
    ; {( _0 R9 u$ a3 @! Y
  51.         unsigned char buf[0x18];0 G1 g+ Z+ K; c% D' i5 @9 d/ g

  52. ) L! c# a2 {$ u' u
  53.         memcpy(buf, mac, 6);
    7 Z  {: D) ]6 g+ E3 g2 @
  54.         memcpy(&buf[6], stbid, 18);8 {2 b7 i' b* p4 o: L
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ N' ]* D7 i8 n1 \! N
  56.         if (fd  < 0) {
    ) k+ J# g$ f- n" l; e3 r
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 E. i1 _& y( S5 q0 ~( i
  58.                 return -1;
    # u8 r+ P: |2 r
  59.         }
    ; ^! k! B3 ^+ p' O# L  Z. w8 B- b
  60.         arg.sub_addr_count      = 2;% ]' l; ~+ m% h
  61.         arg.data_count          = 0x18;
    # u/ V5 i9 N( K4 u, C( n
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( }) N  ?* o+ N; u
  63.         arg.e2prom_cmd_data     = buf;, x# r. f( R) ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ B' n# g  B5 z+ J/ }- a6 c. X
  65.         if (ret != 0) {
    ( c6 ^' ~. e( A5 J, ^& u$ |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 M. \4 V) X( d8 w9 i
  67.                 return -1;9 W- O5 y2 x4 p# ~" D" w
  68.         }
    ; s+ i8 S0 `3 X$ N% e5 E% u* ]

  69. ; D  v) A7 n. \" o' q
  70.         return 0;; ^" o  ]4 L0 a: m1 ]& m2 P
  71. }
    3 I$ C- I6 _+ U/ F1 I& _7 X
  72. 0 H2 y0 ?. E5 Z9 X: H
  73. int main()4 J6 t* v* n7 R1 h( Y0 a
  74. {
    % g% d/ D9 P  e# p6 u. B4 d8 n: g
  75.         char c;( k+ }* S8 \0 h, l5 t9 m) @
  76.         int i, macs[6];8 C6 E0 L: S  F3 u0 p( i# p
  77.         unsigned char mac[6];# z, r8 R+ d3 ]/ V$ O
  78.         unsigned char stbid[256];1 }5 g( T9 Q6 |5 S% e  u) G

  79. ( r4 `1 h: K. u. l5 N8 C
  80.         if (readparam(mac, stbid) < 0), c0 w8 g$ O- T: I: X  v
  81.                 return 1;- S+ i  R0 N& H* M* {
  82. ' N: h0 B) Y; `$ D0 P; |+ b9 x8 j
  83.         printf("Current parameters: \n");
    ' H6 C, d7 h* @9 v% [3 J2 u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! T- s7 F+ G  ~+ f2 u/ [% I# c, @3 E
  85.         printf("  STBID: %s\n", stbid);
    9 M" r# \! H. V) t
  86.         # Q# G) e$ y$ T5 q/ M
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      b4 z& I: i& J; }; G' a
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    " D/ ~9 A3 p) d  i$ U* C' h
  89.                 printf("Input MAC error\n");; U3 M2 ~, D( b- d  |- _. h% q
  90.                 return 1;
    9 q4 w( N: v1 P$ \& r8 |
  91.         }. g% L. Z& u3 o' p4 A" ~# O
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 P: P; J: r, o1 Q* D  b$ O7 ~& m1 C
  93.         printf("\nPlease input new STBID: ");/ g: A( ]  U- Z) ]! C2 n
  94.         scanf("%s", stbid);
    9 ]6 l7 j. d5 E4 T; p# x: q
  95.         if (strlen(stbid) != 18) {
    " b) Y  x) y& n% m
  96.                 printf("Invalid stbid\n");
    / Y( {1 v2 K$ q
  97.                 return 1;
    7 i; a9 `" T3 n) W1 N
  98.         }
    8 |. z3 ^5 J% W+ {3 Q0 @+ N* Y
  99.         printf("\nNew parameters: \n");
    6 t" j! ?3 v  y0 V* t7 C6 o. h
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! c- ?7 M! L) v1 u/ K" q
  101.         printf("  STBID: %s\n", stbid);! J: Z' p0 B3 g. {8 a5 o( O. Z5 X

  102. - Y; a0 ^- x* O
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 ]6 w0 B$ C& v3 ~% |7 W2 R
  104.         for (;;) {. g8 Y# q  s. d& Z- B: ?' b
  105.                 c = getchar();
    ( r0 T9 h% {$ m  K$ u' o
  106.                 if (c == 'y' || c == 'Y')
    : ~% U+ J4 [  H3 a4 H7 b, K
  107.                         break;
    ( P" |9 ]7 H: H, t
  108.                 if (c == 'n' || c == 'N') {7 c3 A& p/ t8 d. \$ r/ T7 E
  109.                         printf("\nAborted.\n");+ z$ {1 y: c# ^+ `
  110.                         return 1;
    % p" m0 p( T/ k" f
  111.                 }# {4 |# Q1 y% S) {# x) _9 s" X  N/ ?
  112.         }
    % f# y/ K: i; Z. n0 Z! D5 X: L& i
  113.         if (writeparam(mac, stbid) == 0) : B$ [) o- m; a: G
  114.                 printf("Parameters changed.\n");  y5 N4 @. u% U* R$ o- z
  115. $ R! J4 m4 ^$ s& c/ z7 V6 Q
  116.         return 0;
    6 S' s# c2 d( n
  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
' ?3 H- M& d- `# p7 ~在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 b4 Q1 a3 M" ]* H& g0 K你用的编译命令行格式是什么?' L" S5 M; }+ t. ]
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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