查看: 16742|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  S9 f; g) |6 J$ d) W$ R  q: B
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig' F3 W$ p: Y* g# m- x) M! D6 ]
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
& f! @" c& `; B8 O7 j1 Fusage: himr <address> <value>. sample: himr 0x80040000 0x0% W5 H2 J% d, x  s9 D7 r/ Y- [6 X
  }" N. M" x* N( n
" i! _, S+ q, M6 W6 L+ n
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) {5 M) u. V( U3 \, B3 E, k
* r3 b( t5 D& R9 S7 u% I补充内容 (2012-3-8 09:42):
4 M4 R* n. J9 Q( p$ k( zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. p4 s* r- F; L+ a6 Z
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
& I/ o$ f3 M5 B: R9 p! f5 r9 p0 I, p% m! Z7 ?, O  [
himr <address> <value>. sample: himr 0x80040000 0x0
# r9 F$ f* \/ m( T# a& A8 p
7 H% y: ?' ]* X9 V* X  R例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 s) K1 D6 O  x/ N. ^, chimr 0x80040000 0x00
0 Y. F6 N% e- g, ]# ^/ V* V- D2 Uhimr 0x80040001 0x115 G( Q2 d% E5 \& {- C% S4 Q: l2 k
himr 0x80040002 0x223 \6 B5 _: E. Y$ d
himr 0x80040003 0x33
5 p7 Y5 t) _- [  Y' l+ ]% g2 _himr 0x80040004 0x44
. G9 l' o, B. ~0 K: xhimr 0x80040005 0x55
  s' n3 k/ o! m# T3 D  W6 a! @3 E/ V
SN也是类似。$ K! [  l3 s. L# z. N* ~* @$ }. U

, P. I" _7 F9 g+ `. }, C/ N现在主要是,谁告诉我们MAC和SN的地址?% ~1 B8 B: r1 L( ~& V
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 3 K3 F% d& z5 q
一直想找到运程修改MAC和SN的办法,苦于无解啊
2 \( V: i: q3 s' P4 C/ q2 V
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : {9 ]/ W4 p  ^$ m1 @

) e$ F0 o& v2 ?修改的代码早有了。到今天不会编译。: v: v# ^+ F* w! F; S$ }' c) s3 X
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - ^# Z! F( j$ T
  2. #include <malloc.h>6 \# ~8 D/ x: L5 Z: o4 `7 D+ |
  3. #include <sys/types.h>
    5 t6 ^0 N  \1 S3 |8 `
  4. #include <sys/stat.h>
    2 }9 o) k3 b# S0 y+ k  X
  5. #include <sys/ioctl.h>
    5 K: y' e. s: x  ~& H' N& ?4 g3 W
  6. #include <stdio.h># U! |  c" ^9 D
  7. #include <string.h>( V4 R; X. w+ }  C$ W  W

  8. ! `5 \, f( Z9 o1 o  B
  9. typedef struct {$ i$ N  Z. e4 S3 T
  10.         unsigned int        e2prom_cmd_sub_addr;0 M' @7 M, C, k
  11.         unsigned int        sub_addr_count;
    2 @9 A$ X4 e  E3 I$ R7 ]
  12.         unsigned char*        e2prom_cmd_data;2 o! l' i& t4 v
  13.         unsigned int        data_count;8 h, _8 k. s& h2 O
  14. } e2prom_s_cmd;
    & B& A) S9 k2 w' [

  15. ) c: F! C) p- _. _- m1 w
  16. #define E2PROM_CMD_READ 1' k' [5 Z' e9 r/ R) K- U( X
  17. #define E2PROM_CMD_WRITE 27 d& Y2 n/ G# p4 r+ U
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ y$ C* a$ E0 w4 w# G! }7 O0 b8 ^

  19. ; m& f  V( c% u, {% v
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 B+ o1 u* m1 j7 d/ h3 h
  21. {* z+ e7 s1 X5 t7 c
  22.         int fd, ret;
    & V1 R9 ~% K  U1 |
  23.         e2prom_s_cmd arg;
    9 @# [  d7 A2 h( l/ S+ A5 g
  24.         unsigned char buf[0x18];( W+ t; a  p- r8 x( ?

  25. 0 {2 i$ g: t8 l# q2 D
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 d) O) e) z1 l5 q2 @- ]% H+ Z
  27.         if (fd  < 0) {* V1 S9 Z4 ~$ e" T" ^
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);; D; T2 M+ J/ q2 H* C
  29.                 return -1;
    $ U* A0 y* g9 t  V& _! ], t% o
  30.         }+ v) }, Q+ j" u4 v4 V
  31.         arg.sub_addr_count      = 2;* _. R5 g3 l: A6 s' Y3 p) W( w
  32.         arg.data_count          = 0x18;* I  ]1 d+ o% q. Q9 R$ |
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    . j  u% }$ g- V( g4 t8 g0 t
  34.         arg.e2prom_cmd_data     = buf;: ]7 C6 N: z- |$ F) `7 Q! v* P
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 V% `0 ]) K$ }8 e7 @: e5 F5 }! g
  36.         if (ret != 0) {
    ) e5 \- z/ D0 d
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 q! Z) [* O" K4 w2 t& A3 g/ S6 E
  38.                 return -1;+ ?' R0 Q% q$ F
  39.         }/ G/ n/ x) c: A/ e  c& K$ g1 h' n' A
  40.         memcpy(mac, buf, 6);8 q! C& T" N! ~5 H
  41.         memcpy(stbid, &buf[6], 18);
    4 A: P7 V! [1 I- V: n
  42.         stbid[18] = '\0';9 @6 j. g& C8 Y% E9 O9 Y

  43. # V8 i; \+ p1 S
  44.         return 0;$ q: F: U# N, y. p* I
  45. }
    ( e* W9 K* ~/ F" L) A; i

  46. % l9 n0 d+ e0 a* _9 [" {# _9 P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ @; {' S$ G- ]% X
  48. {1 U2 p3 W5 @% I) h" P
  49.         int fd, ret;8 ?+ l; Q$ \7 v2 j0 D9 D4 C
  50.         e2prom_s_cmd arg;
    : j6 P2 h# |* g) L; j
  51.         unsigned char buf[0x18];
    * C+ C" |- ~6 z" r/ |
  52. * U* O2 i; o- G( N
  53.         memcpy(buf, mac, 6);: Q" @: y! t: [  G
  54.         memcpy(&buf[6], stbid, 18);
    % Z0 A4 P7 T( ~! b1 O1 j
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" E- E3 F; m: Y. m
  56.         if (fd  < 0) {; E) |% T9 p, N/ x: l" J9 |2 L/ s
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 D- R) m* l9 |$ h2 y$ c
  58.                 return -1;8 k+ R. {, K' K# X0 q
  59.         }
    0 M1 l! Y$ Y1 S- Q9 a
  60.         arg.sub_addr_count      = 2;/ k+ |- l" D; L* _2 E0 ~  V. t
  61.         arg.data_count          = 0x18;& t( E! q9 ?- l% l  d
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 a$ c% T3 q$ l% g
  63.         arg.e2prom_cmd_data     = buf;
    ( B0 Q! P; }/ o$ f( |; q- J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);5 x3 R% {4 Q8 n: r1 E; C+ K
  65.         if (ret != 0) {8 Y- ~  s. d# l+ D5 E8 F2 v! _
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);  q8 \$ ^1 E3 O: o8 W9 s
  67.                 return -1;7 R9 p& P5 a% T- k* j; q" b* T2 K
  68.         }: }& e: M) K6 D0 ]4 c
  69. 3 |6 M: P+ ~9 j+ w4 ?) }
  70.         return 0;; g2 L$ i) G/ Z3 ~
  71. }
    9 J, }1 z4 Z1 J5 `) H) C  T
  72. 4 B$ U  j* z0 Z: \* p7 q8 y
  73. int main()( i# d5 e8 `# P3 w' h
  74. {- s) X7 _1 ?) z9 s
  75.         char c;! W) P- v! Y: B
  76.         int i, macs[6];7 M' L4 s4 |4 W' D
  77.         unsigned char mac[6];& ]; V- @4 j4 _0 \' E
  78.         unsigned char stbid[256];
    ! K# S' F3 s/ K0 a- r8 w  A6 K

  79.   C4 P8 j$ w% r, x% K$ U7 X
  80.         if (readparam(mac, stbid) < 0)) j3 B4 Q: n% y- z& U9 M- B
  81.                 return 1;- D. P. S& \  R) Z* g! a

  82. 4 f/ @& S8 j  b
  83.         printf("Current parameters: \n");0 C& u' `. L$ ^! |: A( a
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% ^- S$ S5 g; J" M
  85.         printf("  STBID: %s\n", stbid);
    # [9 D3 q. T4 ?. ~5 A. R6 V$ U
  86.        
    ! S5 H( u! ]! ~  D4 K2 ^
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    $ ]9 f  q5 x$ X9 Y  c5 c6 }
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    / c1 Q2 u  C' v+ k2 G0 _# n
  89.                 printf("Input MAC error\n");
    " r& q. q* W4 F1 r* p
  90.                 return 1;
    3 U+ s1 g0 g7 a& d$ o- d
  91.         }
    9 X# |8 r* O0 z2 k0 j) z2 |
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
      ~4 a3 [+ O1 g$ e
  93.         printf("\nPlease input new STBID: ");
    ' G5 V* \4 V' ?2 ]1 y
  94.         scanf("%s", stbid);
    0 |- |6 @" s7 |3 m( w3 p  s* \
  95.         if (strlen(stbid) != 18) {/ F0 m8 F% a/ H; c: B9 R: Y
  96.                 printf("Invalid stbid\n");1 X6 G( U9 w4 Q% }5 T: o, {- ~! o3 H
  97.                 return 1;
    - Y8 L9 `+ q3 c% v
  98.         }. P+ y  ?2 ~( y2 {& m1 R
  99.         printf("\nNew parameters: \n");
    " N1 l6 T- ]( q( |# G: g8 `# ]
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' l6 H- K4 S/ m3 A: w
  101.         printf("  STBID: %s\n", stbid);5 V2 ?8 W1 ]) j4 ~5 o3 Y

  102. 5 C- p' N  E6 ?
  103.         printf("\nDo you want to change paramemters? (y/N) ");* n4 }7 J: N0 n7 l. g4 e
  104.         for (;;) {
    4 i) K1 B& R6 V
  105.                 c = getchar();) v) T, ?. U6 E( O0 T* b' i4 h& K
  106.                 if (c == 'y' || c == 'Y')" ~5 k3 j# R: R( \
  107.                         break;  h" f- K7 I$ G. ?, s
  108.                 if (c == 'n' || c == 'N') {" z1 J% t+ D8 ], _3 [% `
  109.                         printf("\nAborted.\n");
    5 c; }3 y% e, [% s
  110.                         return 1;3 s8 q* |& A$ I# [8 j, B9 C
  111.                 }
    $ k8 v. d+ f$ b3 T$ n9 E
  112.         }
    , _7 l. G' K% Y- h* r" R+ L- K
  113.         if (writeparam(mac, stbid) == 0)
    ! p9 b* X8 f* F, b$ \2 A
  114.                 printf("Parameters changed.\n");
    2 ~. Q. c: h, B/ l( ]- S* c3 V& a

  115. 6 Z, }' ?4 l$ g- a8 U5 y
  116.         return 0;8 @) M$ a$ F) ?' O0 f& W
  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 ~1 q% a2 q4 K) g' U' G在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: i; a3 R" Z- T7 e你用的编译命令行格式是什么?
5 a3 s9 ?6 z1 R5 r; B4 [* `$ ]! w2 z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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