查看: 17301|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 }7 R+ X4 _. J: f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig  c* {5 s4 j, b, n) \: \$ }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:9 j, U3 \( C& P( ]) H
usage: himr <address> <value>. sample: himr 0x80040000 0x0$ M: H( Q2 B" t4 ?; }3 [" T
6 I( }6 ?/ i! E; i. F- `
$ y6 u4 g- w+ Q+ }6 }3 W
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% e4 o% u4 Y5 L' f8 ~$ L3 I& u  h
9 j  n% _- H+ V' l3 n
补充内容 (2012-3-8 09:42):
% a: ~, d: g& k2 t3 U4 |& vhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; A" V7 ~+ z- s/ b1 k  D, j0 m5 [这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。5 E. c, v5 v8 G8 N/ u
5 e; v6 ]! W8 ^
himr <address> <value>. sample: himr 0x80040000 0x0
9 ~, ~; J  g/ C* z1 n! b" @8 n3 X) g' @) ?0 N6 ?
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, P# d- Q# `. ~* t5 q5 N0 Q5 Q7 fhimr 0x80040000 0x00
- H1 G' z% Z6 \; T9 _1 v- E+ i' Y- ehimr 0x80040001 0x11
+ j  T" C9 X. j/ d' T9 i: mhimr 0x80040002 0x22. r* L0 b% q, i2 O; z% O9 D
himr 0x80040003 0x33
2 p: `( h4 b9 ?0 X7 m+ A: jhimr 0x80040004 0x44
, B  r  c9 h6 Y* }( Lhimr 0x80040005 0x55* J" J1 d/ ^: ~% J# |) G; k0 d! o
1 h) U) Y' m( J: R4 Y5 {, P
SN也是类似。
6 O2 ?# X+ j! W& |% a$ o6 `. a; I0 Q4 C0 m  o: a9 g
现在主要是,谁告诉我们MAC和SN的地址?
( E! \( R( s+ Z+ M+ q8 h- I
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 j3 ?% K5 k  n* i
一直想找到运程修改MAC和SN的办法,苦于无解啊

) A, v$ W1 N2 U) Q  s" p0 G. @源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 8 @# X# F/ q  G" W2 X
6 K3 a. {: ]! U+ C7 X) i
修改的代码早有了。到今天不会编译。8 c2 f" E: U3 X' j
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ; R; M+ Q4 G- r- ]+ L0 y6 W- f
  2. #include <malloc.h>
    1 [% D, i; G* \4 D# m
  3. #include <sys/types.h>
    + A8 q$ ~1 }8 b/ ?$ v2 v
  4. #include <sys/stat.h>, S. i, c  ]  |" {
  5. #include <sys/ioctl.h>
    $ h- H$ r5 n1 P3 e; q$ p: ]7 M
  6. #include <stdio.h>
    ! P5 x  ~. j: Q2 j* K
  7. #include <string.h>+ Y& o- o- j: t+ ~
  8. 8 D2 E: E3 b) n& t9 u
  9. typedef struct {
    " _, [- s, i# T; ~& K& y1 X
  10.         unsigned int        e2prom_cmd_sub_addr;
    , ~0 z6 _$ s8 i$ j2 n
  11.         unsigned int        sub_addr_count;; ?1 ^. j) ^2 e" \5 A8 ]
  12.         unsigned char*        e2prom_cmd_data;
    + `% r+ i1 x' b8 L5 k! R3 H
  13.         unsigned int        data_count;6 x- P% K/ A: M; X1 S* E$ F2 l
  14. } e2prom_s_cmd;
    , z) m, F/ d3 g% r2 I

  15. ; r0 q- p! {9 o
  16. #define E2PROM_CMD_READ 1
    1 e3 y' v* _' ~6 J! z$ g$ L
  17. #define E2PROM_CMD_WRITE 2# e1 @, N6 c# p3 y! ~7 X; Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# V3 E' F3 P; C+ x3 N! }

  19. 7 S' F+ I( ~7 D% l" l9 ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)% m, X# q2 _6 Y; P$ o; Q
  21. {
    . `  {  ]" E% C1 H4 q0 s& z$ P
  22.         int fd, ret;* E3 K* a8 z8 I% V* J; Y7 {
  23.         e2prom_s_cmd arg;/ ]  Y. T  }2 ?( e# C4 {
  24.         unsigned char buf[0x18];
    3 D5 f9 b5 x' P4 x9 @( Z
  25. ) e$ z! M( y! U6 [$ [# d' @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" g$ \  v6 t- q- \5 a9 {  ~- ^
  27.         if (fd  < 0) {
    ! ^' h% W$ H9 q$ x2 ^% {% q, G
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 U0 M5 b# Y; _/ `* F( q
  29.                 return -1;$ }; }5 {& {! P0 }' [3 P2 m
  30.         }
    0 H) }0 ~% f2 J; T) q$ [
  31.         arg.sub_addr_count      = 2;
    ( ~$ o0 m* c: A6 P! Q) ~3 l: {
  32.         arg.data_count          = 0x18;) q6 W' E$ F. A1 P: ~: r
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    $ S! ^. r' L: k+ o, d4 Z# h5 T8 t
  34.         arg.e2prom_cmd_data     = buf;8 l0 ]- `# ?9 E: V7 F; l$ R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);6 m5 G% o/ D1 T( e  \5 R
  36.         if (ret != 0) {* r% {3 q5 z1 k- ?
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " n# c4 _( W3 j6 B! s, ^9 M# g$ R
  38.                 return -1;
    ' i+ B1 K" b" a& N7 e" v
  39.         }6 _9 ~- g9 w) M. u  G, B- H& q! J
  40.         memcpy(mac, buf, 6);
      ]" {3 P; x5 k+ u- B
  41.         memcpy(stbid, &buf[6], 18);( G" C7 ]6 _; Q% L
  42.         stbid[18] = '\0';6 A4 M9 }  P, b' \9 G# b

  43. 4 _1 {) K! f/ p
  44.         return 0;% y* c$ ^1 q2 w7 W
  45. }, |! i# N, P+ V/ K6 l7 v  {* {

  46. , Y- e. M4 M# \/ O+ x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # d  N' G; c1 A, @0 |
  48. {4 v, {' C1 H/ O" T/ u* u
  49.         int fd, ret;. W" e3 @* H1 c9 a& N' _
  50.         e2prom_s_cmd arg;
    + n2 A0 G9 F: e$ r
  51.         unsigned char buf[0x18];
    6 r1 h# q% @; V" {9 m
  52. : j8 n( v7 ^* ?) t% C
  53.         memcpy(buf, mac, 6);; u" W$ n3 l: G+ H# s7 r3 ?
  54.         memcpy(&buf[6], stbid, 18);3 l, u) q4 \0 P# z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; S1 L" l' o0 ?* H2 n5 ^# ?. r8 Z
  56.         if (fd  < 0) {
    6 |, W* s1 b) k, Q0 T3 D$ f- d
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / S  B8 v4 d3 x- P) a2 l5 B4 o
  58.                 return -1;
    4 `5 q) g, K7 C% _* V- Y( H
  59.         }
    5 i/ g. P/ T" E; W* N% h
  60.         arg.sub_addr_count      = 2;
    ) M9 ]1 h  b& A$ c, u8 U
  61.         arg.data_count          = 0x18;9 F! L! @( z, G5 S6 D9 |
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 [! Q: G- C4 v( H. S2 O. Z% n
  63.         arg.e2prom_cmd_data     = buf;
    % r' w) P- N4 Z8 ~3 y% h3 E
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 C9 u2 Z! J" z+ ]& Q/ R4 j
  65.         if (ret != 0) {; z: A& B9 J5 A& b. V1 B0 _- z; ^3 V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 G  y1 H* L6 ~! Q3 s5 S. L
  67.                 return -1;; k. H1 b, Y! H  m" \
  68.         }. Q/ H9 U* o% V: Y2 u5 k

  69. & B; K3 I3 B5 F" f7 j: V
  70.         return 0;
    * v/ S/ o+ v4 A8 B3 \* k
  71. }
    ' u0 J6 A/ q! Q

  72. 8 f4 F( c: ~6 v9 A. K! o% {
  73. int main()! L5 g" X$ T8 _) g; P( ?
  74. {- e, E6 Y; T) U4 U1 x/ u
  75.         char c;" b+ A: v' d: {% F" \# t2 ~
  76.         int i, macs[6];
    % ?4 O  r  u2 v
  77.         unsigned char mac[6];0 H9 @& m: f8 Q9 ~
  78.         unsigned char stbid[256];
    4 E0 C# |; ]: K. u: s

  79. 6 f: e& T* X2 p& \
  80.         if (readparam(mac, stbid) < 0)0 U# z: N( k5 q8 n
  81.                 return 1;
    0 s8 [& ]# r+ Z% {0 G. j' ]

  82. ) ]" D7 o: p/ d* P( r
  83.         printf("Current parameters: \n");! H/ m% s, v! A! R) `/ S$ b( S& K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% G* u+ v& ^' l1 h$ P9 _$ G" H
  85.         printf("  STBID: %s\n", stbid);# I" Q2 o8 g" `/ c
  86.        
    - E. _4 E# m/ H5 ~! r
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 _4 E3 H8 K! G) A! z$ Q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {+ n% Z" x, P2 J2 [+ y- c% P  T
  89.                 printf("Input MAC error\n");  j+ Y7 U% E( Q' g
  90.                 return 1;
    * x8 c% V: Y- N( Z& y8 s( l
  91.         }
    # J/ W: v( d: q$ [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! M. N' U/ {, h. J" F
  93.         printf("\nPlease input new STBID: ");
    5 o, g( p+ s) e
  94.         scanf("%s", stbid);# ~- X9 @* V, `+ B
  95.         if (strlen(stbid) != 18) {; s3 [, L- p( L3 W3 U
  96.                 printf("Invalid stbid\n");
    ; T2 J5 ~6 W* j$ i7 g7 x
  97.                 return 1;; L& q" ]" Z+ o1 Z
  98.         }. Y5 l5 j0 R4 K6 Z5 t, L* d- E
  99.         printf("\nNew parameters: \n");
    * M; X) A; ]0 Z7 s
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: e8 {1 j+ V9 U- @% M9 E) p
  101.         printf("  STBID: %s\n", stbid);: h/ T! o0 d" Z# T3 T8 l9 |: `

  102. % @8 d% Y/ @# O: o+ f% X3 I
  103.         printf("\nDo you want to change paramemters? (y/N) ");% s$ z( z1 z& E) q- {
  104.         for (;;) {
    7 J# F/ h' V2 }) ~4 ^+ A
  105.                 c = getchar();
    # {" i/ O% c% m
  106.                 if (c == 'y' || c == 'Y')
    ' W' i  q; V1 k$ e- k; U
  107.                         break;2 u# O4 x4 h* B$ ], s9 N+ {5 f
  108.                 if (c == 'n' || c == 'N') {# N2 o$ Q: |# g, T2 a
  109.                         printf("\nAborted.\n");
    - J, O# Z% Q# b# x% \+ j
  110.                         return 1;: ^! d) ?* Z. ~
  111.                 }( V3 T- Y% e5 u  e
  112.         }
    ! b+ v3 f. J4 \
  113.         if (writeparam(mac, stbid) == 0) % w+ d. K! @8 X7 `
  114.                 printf("Parameters changed.\n");: @; V& h8 V# J: B# ]# R

  115. 6 I$ Z9 |2 M% |9 V8 R5 T) a6 G
  116.         return 0;
    9 @3 Z7 I% t4 @  Y& Z
  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 9 h* x5 t- K: b/ A- p. ?5 J2 A3 g
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: @, m/ E* o1 ?你用的编译命令行格式是什么?
- e' J7 M4 v2 Z& K8 M0 B, O
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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