查看: 17234|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ H% Z6 l. t: A' |, q9 s  {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 K4 y' u0 X1 g/ w0 o5 u5 k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 E' t. W. f8 K1 Z. d- v# t' Y
usage: himr <address> <value>. sample: himr 0x80040000 0x0
/ N9 Z; T, _: l. F  Z; a4 c. r( u) a6 b2 a, e; K

+ x9 y" @9 S+ u* u$ I7 {+ h  a# P不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% a8 g$ u* _! d) i, v0 i9 Y  m7 [

1 C- K& U" U# H. r. C补充内容 (2012-3-8 09:42):
, z! p- p$ _$ U; }# N$ W9 K8 qhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% }9 `0 D! ?7 R; n+ G9 j+ ^
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
, \: o6 T) k) h* V: G) y( a$ B; O4 Z
himr <address> <value>. sample: himr 0x80040000 0x0% Q( R) ~- C" ?5 \. y$ z

2 T' z. {' T0 [- w9 |- c+ h4 G9 R例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* k7 Y2 _1 H& v" J1 Dhimr 0x80040000 0x00
4 M5 ~& F% }9 O' @himr 0x80040001 0x115 O' B' e8 O( h& ?$ K% N2 l
himr 0x80040002 0x22* J- l6 e# q: ?4 J# N/ z
himr 0x80040003 0x33
  s8 i' @% J( K4 P; J+ rhimr 0x80040004 0x44- ^1 Y; h6 G/ y
himr 0x80040005 0x550 _0 f, [/ U4 f8 x( q9 `( i9 p
# W& C# |, r: L9 q; ^- c
SN也是类似。; \8 r! @/ O1 i/ ~

* ^: \8 ^9 U9 P+ s9 z2 h3 {9 P3 m现在主要是,谁告诉我们MAC和SN的地址?3 A/ N# k/ i) C  {. V
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 M# G7 o1 r" u3 y" _9 V  B一直想找到运程修改MAC和SN的办法,苦于无解啊

) ]% A$ l) k- U! k  @3 X源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 6 U# s0 x- V' ~  p5 a

' \) M- |  `$ G; V修改的代码早有了。到今天不会编译。6 a: e; S: n1 `/ K' g
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " p$ T( s( E# t! k& Q
  2. #include <malloc.h>' c6 S! P0 Z* ?4 I. F6 B- T
  3. #include <sys/types.h>- k  V2 ]' j% E2 b) Z/ J
  4. #include <sys/stat.h>0 _! y4 z$ t) V. F8 u
  5. #include <sys/ioctl.h>
    1 c) x5 H8 Y- p) v+ C5 t/ l
  6. #include <stdio.h>
      C* U" v0 m4 }' L
  7. #include <string.h>7 N  r; v, i7 L
  8. 9 Q; A) C/ w$ N9 A
  9. typedef struct {
    5 K3 P6 I: x+ ]1 I$ f( m( i
  10.         unsigned int        e2prom_cmd_sub_addr;
    3 s# n9 F9 w' ?, C
  11.         unsigned int        sub_addr_count;
    " \! K' F1 D( n8 g
  12.         unsigned char*        e2prom_cmd_data;
      a! W8 x2 `) p" E* ~+ a( A9 M
  13.         unsigned int        data_count;
    0 h- b! B1 ]) [6 _
  14. } e2prom_s_cmd;: L% `  _2 g7 V

  15. 5 x7 N' x% |, S* T$ n
  16. #define E2PROM_CMD_READ 13 }) T- f; M- s+ K5 t" z$ ]
  17. #define E2PROM_CMD_WRITE 2
    $ Q& \6 Y* ]. O  y0 T0 q/ V- A4 L
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"5 J: A2 T& F: E( y4 x8 B% ^) I
  19. ' u' K" q. Q8 P; n( u
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 R% c; E" I2 I+ J
  21. {8 U0 w( C% d+ R8 d! b3 F
  22.         int fd, ret;
    " L: J0 n' m  l$ i8 F0 Q
  23.         e2prom_s_cmd arg;
    ! t8 I5 D  Y8 `+ a+ {& B) \5 v; e2 `
  24.         unsigned char buf[0x18];+ \9 A8 k/ r, y$ {
  25. ) O2 Q) y& L, M
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 _- W+ ?+ _; ^" I  E
  27.         if (fd  < 0) {) T' Q/ G/ W) |0 q: V6 J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! F8 b' l5 x8 e$ m
  29.                 return -1;7 o' x) G5 n6 t& I4 {6 K
  30.         }' t) c1 v; H3 r3 n- Q) _
  31.         arg.sub_addr_count      = 2;' P. e7 e/ r" V/ e, \9 f0 G
  32.         arg.data_count          = 0x18;0 X, a3 K! l' ^$ j9 Z2 C
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 F& y0 M( s+ A/ v" a0 ~
  34.         arg.e2prom_cmd_data     = buf;
    / J* L; J  @' U- I# H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 m9 u; |2 i/ f8 Q% V! [/ g
  36.         if (ret != 0) {9 M6 o8 h& T# Y: R7 p& t! ]
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& n: ^. [) R9 D, m( s( C
  38.                 return -1;2 c1 w% j1 R& p! @8 m* H: ~9 b& k7 L5 S
  39.         }! k, ~8 Z. x, q/ q/ G& r3 S# o
  40.         memcpy(mac, buf, 6);/ f) ~, k' G# y+ O7 q, u0 c
  41.         memcpy(stbid, &buf[6], 18);0 Y" S5 s- f! g) g
  42.         stbid[18] = '\0';
    ( |+ h+ b+ U" J6 e
  43. 0 N" V- c+ U1 `( {# D6 ?
  44.         return 0;' v( C4 p4 x; C$ d# a/ ?' V. j
  45. }% |: d& Y/ m/ A  U
  46. $ ^7 j( z1 T) {4 O5 f
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" D/ F/ r' K4 M% @4 I
  48. {/ M7 D; T( n- b  }# r
  49.         int fd, ret;9 }: Z$ l# x; `" T  b
  50.         e2prom_s_cmd arg;
    / e0 F0 S$ ?* E9 o8 q' w9 h4 r0 d
  51.         unsigned char buf[0x18];
    7 T) l% \0 K& g; c- s  K
  52. ; `% S" C) J! |
  53.         memcpy(buf, mac, 6);7 a* ?3 P' N2 f: b
  54.         memcpy(&buf[6], stbid, 18);, T8 }$ p$ Z2 E+ P6 N4 y$ \3 j
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 }: x8 J3 ^( M  H& U
  56.         if (fd  < 0) {
    % D( O' m0 N. B( ^: w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: h7 O2 n" H- A% f$ o& ~
  58.                 return -1;
    4 S5 z9 o% {, Y8 b' C! @
  59.         }8 H' n8 N3 Z# ^6 k
  60.         arg.sub_addr_count      = 2;" D6 }1 }! E) W: R/ {
  61.         arg.data_count          = 0x18;! f+ n! W% p8 l- e8 w
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " W, g3 Z' s2 H$ K' W1 B
  63.         arg.e2prom_cmd_data     = buf;- Q, ^9 j- Z; X$ m/ t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / d% e1 ]4 }8 b7 [( L
  65.         if (ret != 0) {
    4 J/ ^7 O. v: V$ c! k. }4 n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% n0 l+ H9 A9 U- k+ `% n: B: O5 o  x  J
  67.                 return -1;
    1 W( r* J2 n2 d4 E1 M
  68.         }
    ' r3 ~7 p  \6 n' r. R& B3 q
  69. * k$ J7 w( T3 U& |% G9 @
  70.         return 0;9 A2 r* y& L; V: P2 F
  71. }
    1 S; ~# ~, J6 x/ K$ E( x) N

  72. : V; D. W" F1 ?; C4 g5 C( ^
  73. int main()/ i; }$ J2 K) C1 C/ f
  74. {
    3 `9 L9 G# L/ P+ R+ u6 h0 c  X
  75.         char c;
    + {$ H. y! C$ G; A& _
  76.         int i, macs[6];1 ]1 z! e! m0 g* e4 \  a& F; D- U
  77.         unsigned char mac[6];  ^3 \8 G0 N' S
  78.         unsigned char stbid[256];/ C0 j& C2 O8 O; i

  79. $ d) n& n0 j, C, }) V
  80.         if (readparam(mac, stbid) < 0)5 v6 w9 C$ V+ r. b" [
  81.                 return 1;
    : K: n. P/ W! v/ H

  82. / b  a. F4 J( j! r* z
  83.         printf("Current parameters: \n");
    - n% Z5 y; v# k) s  {
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : R& u7 L+ Y4 v7 Z2 @+ v
  85.         printf("  STBID: %s\n", stbid);
    ) ]- R# @4 N( @  b. r' |
  86.         8 y% |6 F4 w" g2 G: c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / \  b4 f& N9 G( A+ A, U, ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . K- k( H6 X4 M: O/ Q
  89.                 printf("Input MAC error\n");
    3 w. _1 T: w, ]
  90.                 return 1;6 `8 J! ~: R& R
  91.         }
    4 P( s6 r4 ]8 {: {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];1 |  m, h  s9 P8 d2 D  @
  93.         printf("\nPlease input new STBID: ");( o6 |0 N2 N1 }5 E6 m6 ]
  94.         scanf("%s", stbid);9 z+ G# D* e" Q( Z( n
  95.         if (strlen(stbid) != 18) {
    , o6 a, L. x' F/ X& H; h0 A
  96.                 printf("Invalid stbid\n");' `7 a" C% U. Y& w0 f9 j
  97.                 return 1;
    - h4 Z* I1 o+ L
  98.         }0 L4 a7 v9 U6 G9 ]
  99.         printf("\nNew parameters: \n");
    9 y( H3 a) U( r: g  Z  Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % v' z6 a! _6 X  g3 n
  101.         printf("  STBID: %s\n", stbid);
    - ^6 C- k* r0 q. e; T

  102. & G$ o0 b$ u& l) o6 j! @6 |
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( J0 z8 B* V5 t. U
  104.         for (;;) {& \( T9 D* j  y5 N) O& F
  105.                 c = getchar();
    0 |. F7 Y( f* Z- p5 x: Y0 U+ J+ G: l
  106.                 if (c == 'y' || c == 'Y')
    5 v, u) S/ i+ k  j6 L. B/ i% T
  107.                         break;+ p1 E% M# G- v. L
  108.                 if (c == 'n' || c == 'N') {
    1 ^+ h5 M8 C5 x4 V
  109.                         printf("\nAborted.\n");! M( @+ s; A0 e0 y
  110.                         return 1;& c3 r% {: k. l. F- S
  111.                 }$ J4 m' M2 \6 V, K3 ~
  112.         }0 S# p; u1 K: H  k9 y
  113.         if (writeparam(mac, stbid) == 0) 8 V5 z$ m& ^- ?9 I' i8 A8 o7 r7 }
  114.                 printf("Parameters changed.\n");! ]9 \6 k7 L+ H1 b- e' U

  115. 2 r+ l2 D% @9 B0 h+ C8 G
  116.         return 0;
    1 d3 v# U( u* m% b3 T% u
  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
7 r& k5 I0 C. u- U( K" H! [在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

. I# |' ^9 I/ W. T你用的编译命令行格式是什么?6 Y0 A1 F4 s+ U; w) ?/ J) a. `
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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