查看: 17282|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr4 ~, t) Q/ @5 r6 q# M# j9 X8 R
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- z' g% F; t  [: s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
4 f2 w  R, [7 }) N: Y- g8 Q  {usage: himr <address> <value>. sample: himr 0x80040000 0x0$ a' \5 m! M: Q- E
: L3 ^& P+ T  ~7 T/ I+ T6 a

4 R; Z7 B8 `2 J* n  r1 g* o不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: H8 k! T- ?. p& \0 `( p3 i; x
' D& F* R: c. A. [2 K* z, `1 K! u
补充内容 (2012-3-8 09:42):
( \) Q/ }! J' ^) j% T) Rhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数+ ]5 A9 S  [8 N* R* l5 m
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
" ^, l: E5 q( k9 q% K! h3 Z; k, i" e6 m
himr <address> <value>. sample: himr 0x80040000 0x0. f1 U* u* X! A5 B; P
# z- O. b+ o3 W% b
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
9 ^$ C0 E( M9 e" J( u5 Ghimr 0x80040000 0x00
6 ?5 h* E" f/ B1 m9 |  Thimr 0x80040001 0x11* c5 @1 K& [- s
himr 0x80040002 0x228 ~- h6 u9 D; Z$ h
himr 0x80040003 0x33
2 V% V5 x7 D+ \himr 0x80040004 0x44
7 X3 u" J$ |: e- P9 B) j3 C$ Phimr 0x80040005 0x55; R. M: x; H/ q7 M) H! F* x# a1 d
- ~9 t# w! R2 P. @% b. s5 F
SN也是类似。
7 a0 S9 X4 R& J* J; A
4 C9 C) ]' \0 @3 J8 q4 C& p. Y4 R现在主要是,谁告诉我们MAC和SN的地址?
9 z  `/ K, T0 h0 N0 n+ {4 i
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - y6 u% T1 w4 W* d. J) q
一直想找到运程修改MAC和SN的办法,苦于无解啊
0 j1 g2 K% M: Z( j2 B: G6 c" \
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
9 D6 J9 D& V( A. c
+ P' M2 G) U; h+ }3 _修改的代码早有了。到今天不会编译。1 E, V% ]# u( g* `% j
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ! K; c9 Q7 L$ R
  2. #include <malloc.h>- g' f6 \- k# g9 [
  3. #include <sys/types.h>, \) f$ b" [. L9 }' ]" I+ Z" r, n
  4. #include <sys/stat.h>
    ' I% @& k6 u9 W$ b
  5. #include <sys/ioctl.h>
    ( D" t/ r9 w3 z, E; x
  6. #include <stdio.h>- y. g" }- S- K( f
  7. #include <string.h>
    5 c' x. x& s, }" j
  8.   h7 l6 c0 k$ |) C4 D# ?3 @
  9. typedef struct {
    ; X+ ?* H; t% F3 c+ h# r
  10.         unsigned int        e2prom_cmd_sub_addr;0 Q% V7 h3 ?" A. ]3 q/ U) o
  11.         unsigned int        sub_addr_count;
    ) P( i5 v! }) @% g6 `
  12.         unsigned char*        e2prom_cmd_data;- D( m( v  m( u
  13.         unsigned int        data_count;
    - K7 S' a' h) J5 X% A
  14. } e2prom_s_cmd;
    1 E$ k! L/ N5 T/ N
  15. $ ^( h/ V4 m; m7 ?3 P
  16. #define E2PROM_CMD_READ 1
    : Z7 Y6 `" Y, W$ Q2 w
  17. #define E2PROM_CMD_WRITE 2
    + l! Y; m& E: d# p. m6 L( B  }+ \" b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". x: K5 R+ k9 ]# S) g- V) W2 i2 e
  19. " u& K" N* t, U! O& R) q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)' ]1 a, \0 p1 H' p/ ?4 k
  21. {
    ; z2 n3 ?8 R8 c
  22.         int fd, ret;
    , J$ {$ U4 `) S1 k- `- i  F
  23.         e2prom_s_cmd arg;
    2 S( j; A5 u+ s: B& Z  Z& O
  24.         unsigned char buf[0x18];
    / s1 w$ I" x/ s$ t9 @5 e+ x

  25. 5 X4 E6 p3 d8 t
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 r8 Z) K. p; S  [
  27.         if (fd  < 0) {! m" B3 H, Q3 q) R+ O6 T
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " L+ ~' T0 C: _) Q
  29.                 return -1;
    6 l& y$ \: @# \5 x! A/ ]; C
  30.         }2 k3 Y& x+ d- K$ L# `
  31.         arg.sub_addr_count      = 2;# a" k# \& y; a$ f; H
  32.         arg.data_count          = 0x18;, Q1 g5 z- w9 D
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 F+ G# e3 _( ]( l, ?* z5 f" r
  34.         arg.e2prom_cmd_data     = buf;) v7 I( I( {; q3 ^
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    2 p! I+ V( ^. \1 n9 n9 ^% t
  36.         if (ret != 0) {1 {- E/ r/ \5 q/ V* @
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    : g1 @8 C: C8 O, H: ?% `
  38.                 return -1;
      l5 }5 ?$ T+ Z' }* Q. G" X# s! l
  39.         }( X" A: W! j/ Y& }3 G
  40.         memcpy(mac, buf, 6);
    # E, Q+ O) U0 K; s) b
  41.         memcpy(stbid, &buf[6], 18);
    5 R0 Q& ^$ K/ D
  42.         stbid[18] = '\0';
    2 t, o. o4 x+ f8 v- E

  43. + X5 Z- n8 M& V
  44.         return 0;2 o" b; d" k& k2 D
  45. }
    + b/ P# e3 ?; U3 W. N+ m

  46. 0 B9 O- g& x$ I
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ S) v$ p/ i7 X! M7 P$ N
  48. {  A9 X2 p5 a$ R) t' A# X
  49.         int fd, ret;
    ) Z' T1 ~; H& x. x, T# w' Y
  50.         e2prom_s_cmd arg;
    4 o( @" [9 ]& j  V% P# ?
  51.         unsigned char buf[0x18];2 I5 I3 {2 L# e) m

  52. & b$ S& h! y" N" B
  53.         memcpy(buf, mac, 6);
    $ H" I$ E# S: _1 T- Q$ A
  54.         memcpy(&buf[6], stbid, 18);$ ?* P3 {2 f% [8 m% ?
  55.         fd = open(E2PROM_DEVICE, O_RDWR);: E/ [5 ]/ e3 J' r# Q1 Z+ B
  56.         if (fd  < 0) {7 p8 X3 d- ]6 Y0 }) \
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ e5 P$ \% ?" n7 t
  58.                 return -1;
      z7 b- a/ P  w* {! r6 L
  59.         }
    / D4 T* Y- @$ ?+ l3 R/ a7 I6 U+ Z
  60.         arg.sub_addr_count      = 2;
    9 p  G# y' c: s  f9 U% U) e
  61.         arg.data_count          = 0x18;
    4 q- f' P) j1 K/ l! F# l- X
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 i0 Z% X+ T7 A+ m
  63.         arg.e2prom_cmd_data     = buf;
    , N0 H8 [& w3 K. y) B/ P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" d2 J8 T' y, _- G
  65.         if (ret != 0) {
    # W' ?% {, z0 y* b7 k
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);+ W( A' `6 i# H4 `9 p9 o
  67.                 return -1;
    & J+ a' S* h" x0 H7 k! J/ Y
  68.         }) U4 B5 _) T, ?* S

  69. 3 u4 g8 P1 D9 y2 a; O  h; G
  70.         return 0;
    8 k' N6 V$ [4 D0 q3 l# q! W
  71. }4 ?/ \' \3 z0 x# m
  72. , |) M$ n3 ~/ s8 c9 H
  73. int main()8 }8 x7 n4 i+ R  i5 j
  74. {
    - i0 G( ~& B  ^7 B
  75.         char c;
    8 S: J3 L2 o# F/ N& L' E; a
  76.         int i, macs[6];9 {% }. q% a- u- w
  77.         unsigned char mac[6];
    / D8 B3 b; f  Z, s( Z( e
  78.         unsigned char stbid[256];* ?& D2 I, g5 t- R  s; I- y5 H  n

  79. ( W3 ?3 j1 E- S0 g$ O
  80.         if (readparam(mac, stbid) < 0)
    " h4 ~$ z( \* I* Z* I
  81.                 return 1;1 [) q7 Z, g! L/ ?- i7 o" S

  82. : @% i" Y. I: F' U) Z+ _
  83.         printf("Current parameters: \n");
    7 i8 c: C  z. `% c9 ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( ^7 ?& I5 }$ T. ]2 n# @
  85.         printf("  STBID: %s\n", stbid);, v# p& D# N6 t
  86.        
    9 O9 F" g7 u$ m3 g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 E% Q0 \7 L5 C, K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 D) o; b; |' j% I& y) E
  89.                 printf("Input MAC error\n");
    & y: U' t2 b) w; [% T3 a
  90.                 return 1;
    $ j' q* m! }+ O+ s
  91.         }. N* k4 f# u3 Z& [, w9 u( P! w) h' i& [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    $ R( G( a' ]& G$ U1 g5 w( h9 J
  93.         printf("\nPlease input new STBID: ");5 J" q3 }: P) r! l
  94.         scanf("%s", stbid);# h: [$ X/ }, K& x/ Y
  95.         if (strlen(stbid) != 18) {0 @' b# o. S/ t: W
  96.                 printf("Invalid stbid\n");
    9 A" F+ S# `/ i5 h( V3 @
  97.                 return 1;
    & Z$ B2 ^: W* ?
  98.         }
    1 u+ h& d5 j0 k9 J9 T, c
  99.         printf("\nNew parameters: \n");2 u, t, N, M* h/ G$ x& s
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 U; I7 f) A: B; D, `( @- }$ z
  101.         printf("  STBID: %s\n", stbid);
    ; N8 u. P3 C" I! |, w
  102. 1 k/ b  k4 y7 R* @3 z
  103.         printf("\nDo you want to change paramemters? (y/N) ");' w8 J& v) m& l3 ^/ ~* e! _
  104.         for (;;) {
    . A, y' T2 J! v; u# d- t
  105.                 c = getchar();
      R. G9 L7 M$ X, g5 `  i" A* @# V
  106.                 if (c == 'y' || c == 'Y')9 E2 q1 e5 A8 W" l$ d3 ?
  107.                         break;( c( v4 m$ E. f& Z5 S
  108.                 if (c == 'n' || c == 'N') {
    % q$ Z" U( E& p8 j6 B
  109.                         printf("\nAborted.\n");
    " |' A# I+ t9 b4 |7 w$ D/ b$ D8 o+ x
  110.                         return 1;
    ( `1 Z# k, K  G, K6 ?2 n1 o1 {: l
  111.                 }
    % P, A. `1 I6 S) D* J
  112.         }$ D0 s' @9 z( E7 i; c0 x: E
  113.         if (writeparam(mac, stbid) == 0)
    ' S- F, C/ m0 f3 [; u6 R$ u
  114.                 printf("Parameters changed.\n");
    1 G5 \7 P; @/ p% o4 i& U3 j: z0 I

  115. 4 D0 o9 k. C2 o/ D4 ]
  116.         return 0;
    - T1 q0 A' N8 w3 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
8 \9 t* L0 b- s% o在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 d' D7 V! K% O  s6 g你用的编译命令行格式是什么?) u1 M5 }) L+ o# v* ~2 E7 _
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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