查看: 16019|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + C$ }2 S( P( C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 D% j. a2 O" U
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' ?+ h7 Y, }) e- Wusage: himr <address> <value>. sample: himr 0x80040000 0x0
) g# z9 X6 I! ?* m; S0 E- a  P# `  _$ e1 c% P2 q9 i
" y* j; }$ f/ l. l& L0 o7 o4 R1 i
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* d) A+ @, K/ f: {- I; f
) W, ?; e# X4 d5 k" m- E3 Z补充内容 (2012-3-8 09:42):4 F: n  k( J! ?6 C
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 v+ E* D" ?! }' f
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
- K$ b. l1 ~$ p7 M# y' Z$ a+ z% V! |9 Q, _/ a
himr <address> <value>. sample: himr 0x80040000 0x0
% d; ~- B/ l9 J! I' O
# T! n9 p7 E; Q; E5 ~5 q1 S# M* S例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: M5 a8 w8 b$ c5 l. w& hhimr 0x80040000 0x00
* N$ i8 q8 p- r8 `0 Lhimr 0x80040001 0x11
& ^; u9 Y( I! ?- {& Ehimr 0x80040002 0x22
' A: l5 I+ C( ]himr 0x80040003 0x332 d# y& v1 @7 d! C/ Z$ t" C
himr 0x80040004 0x44: n* q; {, d$ G. ?  W
himr 0x80040005 0x55
5 R" o9 B4 N% [4 z
/ X$ l! w: Q% c1 pSN也是类似。4 a/ T% c9 `1 H4 r

8 _5 }+ l1 w+ H+ O4 j# A$ B7 h现在主要是,谁告诉我们MAC和SN的地址?
% ?$ ^$ M9 A9 F" ^2 V
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / }8 J# m0 z  k* L' `; F
一直想找到运程修改MAC和SN的办法,苦于无解啊

5 k% h- @# h, v- |  m源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
- q- n/ z( R% L7 Q) }- S/ X0 H. w* T# I$ d$ @2 N& _$ S/ E- j& y
修改的代码早有了。到今天不会编译。
7 c0 x3 X+ e- O/ ^% `1 `需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 B0 O, r$ e5 `  e0 C& s
  2. #include <malloc.h>  w/ F7 t, J! y, h
  3. #include <sys/types.h>
    6 Y) A3 t0 _7 [$ V
  4. #include <sys/stat.h>. g# ]. Y! w% w9 g
  5. #include <sys/ioctl.h>( h3 }0 E* o7 |/ [1 ?
  6. #include <stdio.h>$ e! Y& w; [% G. v6 A+ D
  7. #include <string.h>
    . n& _, s6 b; R' v$ ^" c" M

  8. 0 p3 s8 f5 ~/ B5 s' f
  9. typedef struct {" T) M+ @  l3 b* W; Q
  10.         unsigned int        e2prom_cmd_sub_addr;
    4 }9 s( t0 N+ C! B' r) ]
  11.         unsigned int        sub_addr_count;
    : \. V* y3 g1 U' P: D) C- X
  12.         unsigned char*        e2prom_cmd_data;
    9 D2 l3 B: j4 Z( d$ y
  13.         unsigned int        data_count;
    9 ~0 ~4 w" [* v$ x) |+ F8 p$ q
  14. } e2prom_s_cmd;
    $ k2 k3 G; v" c( z0 w) x+ y2 b

  15. % c  C( c& h$ }0 E; S$ K
  16. #define E2PROM_CMD_READ 1
    1 L0 r0 S. w2 r# u( S
  17. #define E2PROM_CMD_WRITE 21 Q& s) U8 S: u; K% b: u3 G: S& i$ D
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"" m8 E; E7 B9 i( O; E* g
  19. # b; g: l: h$ ~+ u9 p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)) e* T% u" k( Z, m7 @3 j- X0 |; Z
  21. {: }9 y( e, b1 V1 `$ i
  22.         int fd, ret;
    . O2 f4 H* m$ k; x( g
  23.         e2prom_s_cmd arg;
    / U5 L6 E, f& `; v9 Y, V
  24.         unsigned char buf[0x18];, [- S: e1 F2 U. u( {( P

  25. % V3 E0 \! B0 Y! e: d( V1 H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % B0 B, z  W/ ~# A4 U7 y
  27.         if (fd  < 0) {
    * n4 n( H% D/ |( ~3 t# J  G( C
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) U& [0 [- J' g& O' h2 ]* m" S
  29.                 return -1;% a1 T7 `& [' `0 e# _+ N+ `( E
  30.         }" S0 \* _( X/ u. W/ a
  31.         arg.sub_addr_count      = 2;
    + N6 k* W5 c$ w3 M- n: [
  32.         arg.data_count          = 0x18;
    ; S" J" q, }. d8 D* u: q
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 [% Y4 d; ?3 B/ ]* @$ i( ]
  34.         arg.e2prom_cmd_data     = buf;5 h: n, d  y" O8 h% Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. |! a2 Y/ {$ s4 e. a
  36.         if (ret != 0) {
    0 P4 c/ K" k7 E5 c: }# k6 Q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& v2 v- ^2 U& G6 O! p. j' `
  38.                 return -1;
    + n; h' Z, x+ ~$ c4 u
  39.         }
    . O9 c/ ^0 i, s3 P
  40.         memcpy(mac, buf, 6);0 M0 d" r4 K+ |4 c+ D8 X+ _  Z
  41.         memcpy(stbid, &buf[6], 18);
    $ `. G( S9 @3 y; m, E0 }6 p- f
  42.         stbid[18] = '\0';
    ! J' D6 x3 c" T- c5 M
  43. 4 O/ B% C% l( l; ?
  44.         return 0;7 P" B0 p" H) j* l- m. m, z0 b( x- v
  45. }3 i% ]1 L$ W9 q- G% G3 [- _
  46. 7 j0 |2 B, a+ y( `/ x2 |! P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 d  {% y+ i, |& Z5 p' A! y" t! ^
  48. {: F! M5 w" o0 W0 x  [$ G
  49.         int fd, ret;
    6 C, w) e  m' h+ T
  50.         e2prom_s_cmd arg;
      F0 S& H8 C" L: i( v5 G+ n
  51.         unsigned char buf[0x18];, h$ a. g/ E- _+ J. Y3 u9 E1 d

  52. 0 s) P1 S' \& o- H. X3 X% t6 ^
  53.         memcpy(buf, mac, 6);
    7 f; h, G2 b! `) ^# u$ @
  54.         memcpy(&buf[6], stbid, 18);
    & ?: ?! E* ]" b4 }9 }% w9 T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);' c- q' x$ E# x! P2 k) ?
  56.         if (fd  < 0) {. Q8 X: o4 V1 d! {' }3 a: {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  J/ b# c) P3 Z
  58.                 return -1;1 j2 A7 U/ Y0 [* T8 o
  59.         }
    2 h. p1 q( x1 @  g5 c! A
  60.         arg.sub_addr_count      = 2;
    . v" o3 ^( |, _& ?( E4 l
  61.         arg.data_count          = 0x18;% K/ O  r8 Z4 I+ P2 \0 A5 y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! e: p; ~0 f* O' n1 \# b$ U
  63.         arg.e2prom_cmd_data     = buf;/ m7 N6 U6 T! E) R
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);, M! p, O; f2 g4 t) ^2 P
  65.         if (ret != 0) {# ?  h6 d5 Z) {( G; h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    & A$ \3 K( l- X2 J1 g
  67.                 return -1;
      x8 r# W) Z9 `3 a
  68.         }
    7 r0 v* r7 a/ T' ?& V
  69. 9 u* ^; \/ B5 P  S3 N7 q2 {
  70.         return 0;. f# W+ E9 _; L* Q5 }! w) q
  71. }
      i5 H, M' c# c: T  ]" n2 F8 I$ E

  72. 3 _# K- P# y$ c8 H) P9 e  [, f
  73. int main()
    1 v0 B0 X- t9 z
  74. {- x) _% o5 ?0 H4 s" u" r( w( w
  75.         char c;7 }' i4 B2 e+ r9 ]6 w7 [
  76.         int i, macs[6];
      P- j) {4 S; V  S5 g. H
  77.         unsigned char mac[6];+ t0 j4 h* s9 \, j# _1 J% a
  78.         unsigned char stbid[256];6 d7 q& w# L+ q- y7 [  _9 C9 \

  79. 2 S/ L* f$ s% v' H' d/ [
  80.         if (readparam(mac, stbid) < 0)0 w1 E5 R1 x, s6 i
  81.                 return 1;2 j" V8 s8 |7 Y

  82. 7 l! }6 M" R7 D/ E5 T. y- P
  83.         printf("Current parameters: \n");6 {! o( o1 R) V( O3 j7 b
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 D* D; y, K. L) W; b
  85.         printf("  STBID: %s\n", stbid);2 D6 J- x7 ^! }& P  p$ b
  86.         ; f% p, z8 y- j) P0 n1 H; l( F/ _' h% h6 E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : T& z1 d: f+ f5 ~6 e# V! _  ^* x
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    , v% @, a% q; o( a! e
  89.                 printf("Input MAC error\n");- l$ l) v) ~) W( T, c/ u' u
  90.                 return 1;" M. s- P$ ?0 [; h) W
  91.         }% Z" ?+ V/ m$ N# j$ `6 t: ]; Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) G. _. ~' S( m9 z; H- O7 |" q
  93.         printf("\nPlease input new STBID: ");
    4 r& ]. q' s+ n8 k7 f2 ?
  94.         scanf("%s", stbid);( S1 j. t4 L5 v0 n. \) Z
  95.         if (strlen(stbid) != 18) {
    & g3 y. r  C% m/ G8 @' r4 r  E
  96.                 printf("Invalid stbid\n");
    & j5 V$ u; Q- Q1 B4 Q' q+ |0 k
  97.                 return 1;/ w5 Q" j) T( ]1 \
  98.         }
      K0 c) r! e6 x
  99.         printf("\nNew parameters: \n");* j& I2 M8 i6 k' w- {3 A
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " F* X9 R( g% j* Y0 r" J+ i6 N0 i: J
  101.         printf("  STBID: %s\n", stbid);, c$ k/ ?8 u5 B, ~# Z

  102. + X- v4 r; x* H# v- T7 a! C8 ]5 ?, K
  103.         printf("\nDo you want to change paramemters? (y/N) ");7 N. s# H+ D5 q/ Z
  104.         for (;;) {
    # e  W  i0 M0 p# V
  105.                 c = getchar();. y0 B  L2 _7 p) a0 Y
  106.                 if (c == 'y' || c == 'Y')
    / l- \6 n# h0 I7 {* a
  107.                         break;1 d2 q4 h4 h) `" V) \' s
  108.                 if (c == 'n' || c == 'N') {
    % z7 F6 h  g8 w3 v3 n8 m- \
  109.                         printf("\nAborted.\n");
    5 ^) M% s' f$ u9 N6 E* W
  110.                         return 1;2 |6 {' w8 T1 D  g
  111.                 }
    4 I0 ~. K, }  ^7 w  |
  112.         }
    ! T1 r( e, Y& M7 r1 z0 f3 e5 f( B: o
  113.         if (writeparam(mac, stbid) == 0)
    6 X+ p2 |; x5 b! k) U" u
  114.                 printf("Parameters changed.\n");
    . b/ o6 ~1 a- e5 t
  115. & {6 y- E+ F  b( h, f( k
  116.         return 0;2 s+ K4 D% e. ~- D7 j! n3 ~8 P
  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 $ q& m# `3 E& d! A1 C
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ e, W. L9 D; }) S- y2 M. T' f0 ]
你用的编译命令行格式是什么?/ G8 W  ~" a2 r( r$ 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客服返回顶部