查看: 15964|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- H' P& G. `$ k% b% M" t! Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 k; G9 s, a8 `* y$ Z) o
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
. S0 ]( Q3 R  p+ ~usage: himr <address> <value>. sample: himr 0x80040000 0x0
$ ?+ N% P9 y* {& X+ U. C/ T& e$ z# f5 H% k& F, ]
1 ]6 P9 n+ t  S1 s5 G
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' @$ f! \& V! \  t$ w, C. b5 D6 R* W. e0 d! G( ]
补充内容 (2012-3-8 09:42):
) }2 u" U3 K4 r  h' i$ |# Phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数: k& h' ?; [" S% {' Y7 \* t8 j* G
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。( y+ u% `1 @5 a7 ^5 V1 L. m3 Q

! t* o: H$ c3 w8 S8 I3 h: }/ w# {himr <address> <value>. sample: himr 0x80040000 0x0
" ^6 t: }/ \- r1 g# y4 S- Y& T' |7 i+ ^) @6 x
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- V% }0 D1 E+ g) k$ Fhimr 0x80040000 0x005 _) K7 L8 P  x3 t
himr 0x80040001 0x11% {8 Q( V$ F6 d9 X) l1 `
himr 0x80040002 0x22. O7 G7 v1 y9 T6 E9 \7 m, Z
himr 0x80040003 0x33  ]# T  Z7 b; ~$ M
himr 0x80040004 0x44
" [5 W3 ]3 V- ~7 A/ |himr 0x80040005 0x55- V5 B; S5 Q4 E0 {

0 ?. s7 ^# t; G2 wSN也是类似。
' b6 ^3 D. f2 k2 O. i2 `/ f% ?$ ^
现在主要是,谁告诉我们MAC和SN的地址?8 x+ w$ w4 _$ A# E5 B$ M6 G; R; [
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * g4 }1 W/ X( Y6 o5 f# Q
一直想找到运程修改MAC和SN的办法,苦于无解啊
0 q6 L0 F  p8 i, }7 j8 F& t
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 4 `0 s1 A. Z! ]9 ^  i3 Y% p  L
$ c6 w4 b+ r" t6 ?* L& h! Q( Q
修改的代码早有了。到今天不会编译。
3 G: f* e% i3 a$ p5 Z: `" @9 z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    . g4 ]. x8 b2 I
  2. #include <malloc.h>
    * a8 D: K7 q. J2 p" R& @
  3. #include <sys/types.h>
    2 X4 g' C) ]5 n' K
  4. #include <sys/stat.h>% \% w& Q, V% r4 }1 Z" _
  5. #include <sys/ioctl.h>
    / w5 i; Q' q, t8 f
  6. #include <stdio.h>
    / W5 E$ E1 b+ S  L# j
  7. #include <string.h>
      ~, O4 r! |2 v2 [( i1 p

  8. ( y0 q& d; V( @+ F9 U2 L) G
  9. typedef struct {
    8 K6 y" @/ m- q  ?7 }
  10.         unsigned int        e2prom_cmd_sub_addr;
    : S! s& q3 f2 C/ B8 L- p; T' @  J
  11.         unsigned int        sub_addr_count;
    + d. ^( g( ?$ s( |, [
  12.         unsigned char*        e2prom_cmd_data;7 g6 k, }6 w: i" p" f8 e' W: M
  13.         unsigned int        data_count;
    , ]) D+ l' o; y# e
  14. } e2prom_s_cmd;/ _6 Z; m8 `5 `$ n0 {* r$ n: f
  15. $ J1 A6 s2 J5 ^2 o* t
  16. #define E2PROM_CMD_READ 1& ]% B) C6 O+ Z' M! g. ?: P$ z
  17. #define E2PROM_CMD_WRITE 22 ]6 }+ @' `8 O# n
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ! y9 L. A1 a; q% ]# G6 H

  19. / a) t" q' W- Q6 ~+ @, i% V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 L1 g: |0 g" C; t$ E# t
  21. {! X& I2 [' d4 E: U) _' w4 L7 L
  22.         int fd, ret;# i. {+ a& t+ o+ q3 k, o7 n$ y/ L
  23.         e2prom_s_cmd arg;
    & ^5 O  Y. _9 C# u. l: R6 a
  24.         unsigned char buf[0x18];( e9 l/ R* I5 t9 \" h% j/ l

  25. ! J, _# v1 c9 p. ^% ?) \4 e
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % B1 j4 N' \5 g" y" Y" C2 \7 e
  27.         if (fd  < 0) {
    & [% y4 i; d* @+ n0 U4 w1 d" V
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + o% m9 l0 Q6 q% V: L0 j3 m% _3 Y
  29.                 return -1;2 l2 J8 Y" n! s& H2 _3 d
  30.         }
    5 {- N- e2 h1 }! J' \/ Q
  31.         arg.sub_addr_count      = 2;
    ) ]& k1 ^" x: W; l, E
  32.         arg.data_count          = 0x18;. [0 p: r2 [. g9 K, R
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    $ c' z6 c% ]$ L8 ~3 ~# o- B
  34.         arg.e2prom_cmd_data     = buf;: k" F+ r- K7 n$ J' ]' |0 @6 K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 _* c/ w' ~4 q
  36.         if (ret != 0) {  ^+ z$ x& K+ x! x6 k1 B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    $ P- n$ A7 D1 t- Q) \) l
  38.                 return -1;
    " ~& O6 X/ X" |! A- T
  39.         }' R% g+ x7 Y, S4 ^" s
  40.         memcpy(mac, buf, 6);, ], g& ~! ^: ~. n" n$ a# i
  41.         memcpy(stbid, &buf[6], 18);1 F4 Y) t6 D- o
  42.         stbid[18] = '\0';! y# B$ p6 e+ j' l* D9 x0 Z
  43. 4 x  ]: v7 c" i
  44.         return 0;2 H3 ]( l* k: k
  45. }
    % {, r5 N6 r. ]& R, `$ ^' b. }
  46. : Q- h& |( K# {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , W8 l% H; r/ p  C9 Z
  48. {
    / {5 h$ h9 u  h3 b4 ?+ ^
  49.         int fd, ret;
    7 {3 A* [, m- y7 v- K
  50.         e2prom_s_cmd arg;( W. e' Q1 l7 Z0 \+ r
  51.         unsigned char buf[0x18];
    , h: \5 x) C, d5 ]  \% h

  52. 2 o, E9 f1 l' A* K
  53.         memcpy(buf, mac, 6);
    8 H, l) I) ~+ E5 t7 h, }
  54.         memcpy(&buf[6], stbid, 18);
    ( L1 S" R5 ?1 h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ c* Y- H0 h; L1 u, a) q/ F
  56.         if (fd  < 0) {1 y- i# ?' J2 T) V* _! h8 @
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# h* m7 |  w1 `& n  ~
  58.                 return -1;" g% N6 e# Y0 D$ C' o
  59.         }4 a$ j5 p& [% C  ~
  60.         arg.sub_addr_count      = 2;
    & F) o, c% ?5 L+ ?1 d
  61.         arg.data_count          = 0x18;0 W  W. e8 ^7 c: Y; x1 h/ n2 P7 F+ y
  62.         arg.e2prom_cmd_sub_addr = 0x290;  r2 G/ m- Z8 B1 [& `
  63.         arg.e2prom_cmd_data     = buf;4 y" H/ D6 k4 |
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + o  w- v6 f  ^" f1 I
  65.         if (ret != 0) {/ a. m6 z3 y* Q. R
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    7 [/ h+ l( X/ n! U
  67.                 return -1;+ T1 u+ }3 S4 s; F$ r
  68.         }
    6 }( R$ H  h: z  e3 f) |
  69. # j/ w/ L' a  B9 }1 f  `& W
  70.         return 0;
    9 P! c7 y% l8 o* j" Y# m
  71. }& m- ]: v, |: J4 _4 j
  72. ; R: G% R& X8 s3 V9 D8 I
  73. int main()! V& @8 k4 Y! w% P
  74. {
    ) W: S3 @: s% k# D# [. ~$ b! ?
  75.         char c;6 K9 z0 `9 r8 T9 ?* N  A4 B$ i9 R: w
  76.         int i, macs[6];
    1 F0 c" |4 h' \! p( b
  77.         unsigned char mac[6];$ V5 H: _) Z+ n! u8 v
  78.         unsigned char stbid[256];/ c* J' ^) f$ s

  79. ; I$ P  j' d" v2 O, M% O6 s
  80.         if (readparam(mac, stbid) < 0)  l! n2 T5 Z4 {& H' N. z
  81.                 return 1;
    . U# i1 M" X# E) n" r
  82. 5 G7 K( b" a6 o3 t! H+ H: l# a
  83.         printf("Current parameters: \n");
    $ f1 k8 h# j4 e5 E
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ u& L* V3 Z$ H3 i" m$ E$ X
  85.         printf("  STBID: %s\n", stbid);
    , F& q6 W6 a+ y
  86.         4 a+ \1 P8 w8 Z2 T3 U9 o: f2 c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");3 C" O: W) a( B" s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
      R$ X& l& {3 b: L
  89.                 printf("Input MAC error\n");8 L" z# f7 |+ w7 }+ _1 R0 _
  90.                 return 1;
    " }1 V7 [' q4 x# D
  91.         }/ {0 J3 z! x5 J6 ?( Q6 Q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' d$ x/ {1 \: Y( O2 A% Y& R
  93.         printf("\nPlease input new STBID: ");
    6 W# v: M3 b3 n* u. R
  94.         scanf("%s", stbid);
    # C& y5 M, i1 a8 }: G: N9 T+ M. n
  95.         if (strlen(stbid) != 18) {
    : K4 R* w  D2 U& g4 Y  u/ T" q, E
  96.                 printf("Invalid stbid\n");* N% T7 [; M% I  Z) T
  97.                 return 1;1 F6 m3 z1 A4 x1 u
  98.         }
    & U* U6 y0 L' k4 V5 z* L
  99.         printf("\nNew parameters: \n");$ D9 P- R0 J9 x6 J
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 h. c$ d2 F6 k8 k: A
  101.         printf("  STBID: %s\n", stbid);
    - M8 D4 V( ]  [' |

  102. ; l; C- O& J5 z3 F6 r
  103.         printf("\nDo you want to change paramemters? (y/N) ");7 x9 C" U2 K; x( B
  104.         for (;;) {3 k$ |1 r% x$ E5 O3 i
  105.                 c = getchar();" b$ t1 I- B8 b; N
  106.                 if (c == 'y' || c == 'Y')
    5 ]$ b: S1 _8 [- \( n+ J8 J
  107.                         break;3 G3 y& L& ?7 h' m
  108.                 if (c == 'n' || c == 'N') {* ~% X: i- ~3 N2 W
  109.                         printf("\nAborted.\n");: |: L! G5 a& I" R. L
  110.                         return 1;
    0 _! \0 O) Z8 u
  111.                 }
    3 n9 Y! A) N/ W3 f+ U' S
  112.         }
    4 O1 s+ `0 I/ ^+ m/ P6 R6 o& R
  113.         if (writeparam(mac, stbid) == 0) ) Z+ g! P$ ~# k) D* B$ o7 h4 z3 j
  114.                 printf("Parameters changed.\n");
    * o' g1 \9 _: F6 K

  115. & C9 I* f+ T. x: p6 w7 B' {& K! Y
  116.         return 0;. J, y1 T/ S: K: ^& {
  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
: a9 `% Q5 y7 E9 U5 A$ K/ C! h在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 _6 b! I8 n  m' Y. g5 t: `5 j3 a
你用的编译命令行格式是什么?
) k- z5 D5 p5 a! p
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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