查看: 16911|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 J2 |# s1 l: x- ?) b  M  W4 Q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 h* t: F: J) _7 @, o
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ {2 E( t: q% B1 Lusage: himr <address> <value>. sample: himr 0x80040000 0x0# J+ a# }, X2 r: ]! P4 ?

; |3 s! n! z; |! Z0 Y- f2 {$ h
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* z. y1 L( x  `: r' q! T5 Q* Z( x# X* i! |5 w
补充内容 (2012-3-8 09:42):1 P# }2 I2 }! ^
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
' W- B" b+ q* P2 F这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。+ T0 D! T0 s% _7 i4 r% _) [

+ K3 P& J1 a- |& {% Uhimr <address> <value>. sample: himr 0x80040000 0x0
+ u5 b# ?, o$ W, c7 ^/ S% [7 E2 [  u& p9 n0 p
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, s4 V+ z5 [4 w$ U2 D0 V7 O$ a
himr 0x80040000 0x00' z8 o+ |: v! L5 b1 ]
himr 0x80040001 0x110 j- S( K% |: b) k$ M7 u+ }- A8 ?
himr 0x80040002 0x22+ P5 I; a( @1 ^. y6 u
himr 0x80040003 0x33
: [8 s6 ~: [% v, m/ Ahimr 0x80040004 0x449 X1 |6 E! u+ T! J
himr 0x80040005 0x55: E- e1 `# |  z6 Y+ N) W

  p% V9 m; n4 X( [SN也是类似。5 E' {% ~9 p) j: Q

7 c8 m0 l6 H* n( [' w现在主要是,谁告诉我们MAC和SN的地址?' P3 a7 U$ H9 m
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37   O! i7 y, b( |2 g1 \/ D9 g
一直想找到运程修改MAC和SN的办法,苦于无解啊
2 s) j$ s/ K& ?
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : w$ d4 Z$ [# S, k, z* b2 ?$ {
% `7 f3 |+ o: V) X9 ?+ ?0 h
修改的代码早有了。到今天不会编译。
, t# {# n5 Q  ^; ^5 V需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " K5 t1 V' S* u, ?$ v  C2 h
  2. #include <malloc.h>4 }8 D) s0 O) ^- T) @4 F& N
  3. #include <sys/types.h>; W2 q* m! j9 O' W% `8 ?, @9 r
  4. #include <sys/stat.h>
      n! e6 n$ [: l, S
  5. #include <sys/ioctl.h>
    0 Z8 P/ s3 A+ T9 I* l; ?
  6. #include <stdio.h>6 E9 {3 M1 t9 V- O" O: ^
  7. #include <string.h>% X( K0 n- i6 q+ @1 F

  8. 3 j  J5 S. X$ s# k8 O0 M
  9. typedef struct {
    % Q) r& C+ H# F% a
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 N6 g# V* F0 s; S+ n7 N6 Q9 r- B+ I
  11.         unsigned int        sub_addr_count;
    7 M4 I. `8 |. m' v
  12.         unsigned char*        e2prom_cmd_data;
    ' `+ p2 J+ J2 C0 y
  13.         unsigned int        data_count;2 P4 D, `6 H: X$ w
  14. } e2prom_s_cmd;# b# H% v+ k, v' y$ F. Z3 R

  15. 6 `# q# A" \% u/ U, d
  16. #define E2PROM_CMD_READ 1  m- M! {' x3 Q8 m9 m2 P
  17. #define E2PROM_CMD_WRITE 2
    9 E0 n. {( C( Y/ j- h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    7 U& D" O  d- [' c1 B9 Z
  19. . ^5 e" _' l5 T# }* n7 Q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)4 I$ j, }3 R8 V! N! I* O
  21. {; q! X$ n" j. f7 P, n+ Z6 s. n
  22.         int fd, ret;% G: F  i, w/ T: E; W8 O
  23.         e2prom_s_cmd arg;7 P4 m) |7 \. e: W% c/ P4 q% y
  24.         unsigned char buf[0x18];, K: D1 \  l& ?/ K7 a( `+ F5 j' T
  25. 8 c! t' f4 v- l9 F9 C% A8 Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 h/ C6 Q! d$ u, L/ a
  27.         if (fd  < 0) {" S, D) y/ M1 F: l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & {. z1 x( i* \/ R) m
  29.                 return -1;
    2 @: J% d- a1 J- ^8 P
  30.         }3 j+ Q7 X- C2 Y& k
  31.         arg.sub_addr_count      = 2;! J; }) v! p9 \9 `/ A5 U" X- O
  32.         arg.data_count          = 0x18;
    - S) \8 j1 u( i$ q' T! g
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ z7 T+ p, D0 @5 X% Y# I
  34.         arg.e2prom_cmd_data     = buf;/ `( I4 x7 g/ I" H( R) x! Y# ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, ~' C: \: X' [+ Q4 J) }
  36.         if (ret != 0) {
    ; B2 J% y/ O7 j% r! e: e. n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ S7 x6 I/ k0 M+ j! N8 c
  38.                 return -1;
    ' l+ _1 K! X" r) Z; @
  39.         }. Z4 I9 [8 g! k- N3 p& \4 g6 x
  40.         memcpy(mac, buf, 6);
    5 R4 }$ ~% T& U
  41.         memcpy(stbid, &buf[6], 18);& H; X9 K8 ~) `5 w4 J# S$ `" b# m7 }
  42.         stbid[18] = '\0';; N5 @  e1 p5 o+ b" H- ^8 j
  43. $ o* G' R/ J# ?& V1 A; Z
  44.         return 0;
      i$ @) ?/ [# b% ~
  45. }' b( x2 P- T) a2 Z8 s' Q* A- Z/ z

  46. 9 U& ?) }2 N. A8 K/ s; o4 m
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    & `. h3 c* E- @) h- b
  48. {
    , N( Z3 w% b7 E2 L9 d* Y
  49.         int fd, ret;8 @8 |' X2 y8 w2 q1 G4 m0 ]
  50.         e2prom_s_cmd arg;2 X! L  f+ J1 s
  51.         unsigned char buf[0x18];) s, |: v& a7 e
  52. 9 ^: U, k5 x2 w8 _) H: S  H1 p
  53.         memcpy(buf, mac, 6);
    * \) Q: e( t% S7 i
  54.         memcpy(&buf[6], stbid, 18);
    , O. R: X( C' j# W/ _$ M9 M
  55.         fd = open(E2PROM_DEVICE, O_RDWR);: }8 R# o+ z1 }/ _, ~/ L
  56.         if (fd  < 0) {
    & z5 v( X$ s2 {0 v+ }7 Z5 {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 ]# U1 W9 R% S) f# Y% Y
  58.                 return -1;' T# {4 \( f: o: l7 o, ?# Q: O
  59.         }
    / b' X! z6 Q/ Y# j* b
  60.         arg.sub_addr_count      = 2;! b* F0 i& F0 B& p
  61.         arg.data_count          = 0x18;; }# j/ q8 B4 B0 o
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 h- \! F8 c" `& w. X) l
  63.         arg.e2prom_cmd_data     = buf;4 F- Y) x% ?& K! }# k. v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    # y, X4 m7 X# q" ~
  65.         if (ret != 0) {
    . Z1 z) \9 v4 v$ A# y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : j( d  @. u: ^
  67.                 return -1;9 \4 z8 ^% E% q  V7 f
  68.         }+ H, R! Q$ F4 y: J. t( S# b
  69. . ~7 f2 z; X5 v1 |) k
  70.         return 0;% v7 S' Z% b) Q6 }/ e* o) ~6 E
  71. }
    ( S+ T. P3 A& n' F

  72. . I0 n, S! J2 e$ d; F0 n+ s4 r
  73. int main()
    + V+ ]6 s4 m; Q6 k4 h- z
  74. {% r  ?7 Y. }5 @5 f; C0 Y
  75.         char c;
    3 i  a) I% W$ p
  76.         int i, macs[6];
    . ^) }  i4 N& ~" }- r0 ~! n
  77.         unsigned char mac[6];2 q4 c& C+ m" M8 J9 g* M
  78.         unsigned char stbid[256];7 f0 Z. `" M5 a" e6 M0 l
  79. # n& C- o" B1 b" v! C7 F9 G, f
  80.         if (readparam(mac, stbid) < 0)7 W$ w: ]6 U- G3 E$ {5 i4 F
  81.                 return 1;
    $ h, ?" G) \$ e% J& D/ m+ {+ K  J+ N
  82. ) A5 ^: c6 W" x! i4 G
  83.         printf("Current parameters: \n");. x/ M* S  r3 a1 ?7 @0 V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 k. e( \- L' y3 @, I) Z  w$ W  O
  85.         printf("  STBID: %s\n", stbid);& O# k  o2 s* ~- z/ M
  86.         % e  Z  ^% j9 C/ s5 Q/ q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");6 x, b! ?7 r  ^' o  d3 M
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 ~* ?9 T6 W, K) i8 e7 |8 L1 g
  89.                 printf("Input MAC error\n");; u) [# {5 ^! ?6 \; `, V$ ?
  90.                 return 1;! u$ U1 j, y$ a* _
  91.         }
    8 Z( I* Q# P2 g- K( i" L; X* O
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) y2 u9 H8 n) D; u
  93.         printf("\nPlease input new STBID: ");6 `; _1 y/ ~  A9 G6 l
  94.         scanf("%s", stbid);
    ( u& a# q' A/ S
  95.         if (strlen(stbid) != 18) {
    ) [. `6 Y7 x$ f% E
  96.                 printf("Invalid stbid\n");- A  U$ r) v4 n6 S! H
  97.                 return 1;5 |( Q* Q8 g/ [: Y, J: T) Z8 P
  98.         }5 {. @; a" j% ]0 Q6 v% z
  99.         printf("\nNew parameters: \n");+ c+ }! j1 j$ E# r* M
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& N& w5 d( K8 J+ W
  101.         printf("  STBID: %s\n", stbid);
    ( j6 b7 p# Y& p: a/ o  s

  102. ( M/ \/ M& D5 ~! W2 E
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 ^8 \7 J6 X, m6 m  g
  104.         for (;;) {
    5 e& b5 i, X9 v" `; I1 A4 ~
  105.                 c = getchar();
    ' b3 ^) g; p# q
  106.                 if (c == 'y' || c == 'Y')
    # D5 N) {9 l: U* U  e
  107.                         break;
    # F2 v  K3 F, f$ ]( ^( H
  108.                 if (c == 'n' || c == 'N') {
    $ i: {4 i7 D4 `
  109.                         printf("\nAborted.\n");/ k% C5 c" c$ w- ?- {8 M" f
  110.                         return 1;
    2 }5 E  d7 |; v% |; P2 ~" v
  111.                 }
    2 T- H8 R4 E2 W6 f
  112.         }
    ( a! @* n4 K. ^/ @, v
  113.         if (writeparam(mac, stbid) == 0)
    % i4 d& m) \# d$ S: n6 L
  114.                 printf("Parameters changed.\n");- \4 `! _9 w; c+ C# [# T0 N

  115. . f+ K/ W  t* H
  116.         return 0;" m7 Y6 t8 g( s1 H, `
  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
2 C  k1 m- f3 \& z* x3 w在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) ]8 t+ F; k" G7 }你用的编译命令行格式是什么?
1 K1 e0 K7 |2 y  O4 g
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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