查看: 17893|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    " ]" y6 Y/ ]0 ~; P2 R0 c7 d
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) R; K8 e! c1 q; d
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:  U- Y: a+ _3 o. Q
usage: himr <address> <value>. sample: himr 0x80040000 0x0) z; g2 B4 ]* u# j" G9 a6 k

: I- C+ O- Y8 [, W, o+ s  d# F" \; a- Y" O- n/ Z- W
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
% R# {! }, _2 p
, M+ I/ i# y) Y补充内容 (2012-3-8 09:42):
  R, A0 ^' N* B. E  Phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: y9 I. c: v4 J6 D# R& j这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
2 m0 p4 g& z! W( w, I# [' q0 R# u
himr <address> <value>. sample: himr 0x80040000 0x0
. G+ y! O7 ^+ W& T% b0 A% p. Y
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
' N6 s: t! F, \+ ahimr 0x80040000 0x00
( }9 U& [; q$ K% x5 F$ Shimr 0x80040001 0x11) n( J3 X) @- x
himr 0x80040002 0x22& {- w4 g+ p, r, D: O% ]* X+ K
himr 0x80040003 0x33
  h) ~, T2 d  _himr 0x80040004 0x44
3 p* [$ y$ l  Y4 h8 c& Lhimr 0x80040005 0x55% m* Y/ y2 Q* N2 Y% e  J
; o& [2 }7 e$ w3 U  \2 }8 ]
SN也是类似。  m- @8 a; [0 d, d8 K2 p
2 \' e" |9 \* ?  \
现在主要是,谁告诉我们MAC和SN的地址?
  K$ _* s" R) U2 k; z% s* v
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, n9 G% d, ~; h一直想找到运程修改MAC和SN的办法,苦于无解啊
2 L5 V8 z0 `& [3 M
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( S1 `: n% m5 Q9 N
( J: R2 T, `6 H' H4 S; _修改的代码早有了。到今天不会编译。
3 S  T: e! N) o; W# ?1 Y4 l需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
      T( k7 R  W& o
  2. #include <malloc.h>1 {! d3 q, |( _3 \
  3. #include <sys/types.h>4 K" Q9 j" n. i# [/ `
  4. #include <sys/stat.h>8 I; @5 F) H( X8 V
  5. #include <sys/ioctl.h>
      p3 O. F  A. g0 [+ H% {3 V  Y
  6. #include <stdio.h>' k2 X2 G' H9 Y# r: {6 H
  7. #include <string.h>- z" S) s* s2 i. c# _& ^" ?* H

  8.   G; m2 S3 y' ]% o7 [8 |
  9. typedef struct {9 v" Z" k2 _5 U6 I: X" a8 F: x
  10.         unsigned int        e2prom_cmd_sub_addr;6 s. Y- D0 n, e8 H/ q' H
  11.         unsigned int        sub_addr_count;1 A! g8 H5 s0 C- h
  12.         unsigned char*        e2prom_cmd_data;3 P$ I8 K! U8 b* j
  13.         unsigned int        data_count;* F( B  q$ ^' m9 j
  14. } e2prom_s_cmd;( c$ s7 B; ~' ]1 Y. v
  15. ; {- k0 z0 d& `9 D1 a
  16. #define E2PROM_CMD_READ 1. Q  G/ r& ?+ u
  17. #define E2PROM_CMD_WRITE 2! B) E! q- g0 J/ k& B8 y/ u+ D9 Q% S
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  {6 s5 D% q& n

  19. * `2 |9 [! ~; G! l' Q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) z0 S6 S4 V5 e5 i1 j( H1 G2 v
  21. {$ a2 @8 k# Y- }+ ?
  22.         int fd, ret;
    . E2 U3 E$ X8 A0 [3 L, T6 d* |$ `
  23.         e2prom_s_cmd arg;, m5 g# Y( n! @
  24.         unsigned char buf[0x18];
    . j6 q! }- g/ O7 @& T/ z/ [
  25. ) g5 b# \: O7 L$ b( J
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 z  R) X9 z" v5 h7 O" B% n
  27.         if (fd  < 0) {# }& Q5 a- i( y8 R: V7 D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 R2 g$ u1 I/ k) V
  29.                 return -1;
    ' l# M& E( F1 I( H  _) r
  30.         }
    7 X; c. S) J, ], Y% Y
  31.         arg.sub_addr_count      = 2;
    7 Z; ~$ r% Y  j/ F' G5 r
  32.         arg.data_count          = 0x18;/ A1 K% ~* v5 u+ A% N
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 _0 T9 t0 p+ F2 S
  34.         arg.e2prom_cmd_data     = buf;
    # k* L. \5 ]# [$ |
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    2 _) C+ W2 H$ r. U/ h
  36.         if (ret != 0) {/ C" J1 A$ j/ s+ }3 L0 I
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # a! `5 l4 V, w2 m
  38.                 return -1;/ b! j* }* {% e. c  R
  39.         }
    & E! R. z# E8 J, F6 d0 r
  40.         memcpy(mac, buf, 6);
    0 r, ]- t+ x& M2 d
  41.         memcpy(stbid, &buf[6], 18);7 t7 Y2 h7 c  S# A9 k4 W" u/ s$ b
  42.         stbid[18] = '\0';
    * K  O* Q! g5 y% q% d7 ?% e" ]

  43. / h6 n$ `6 o! g3 v
  44.         return 0;
    * o7 T; y0 x7 Z5 R; H
  45. }
    0 h/ q/ e4 k5 {6 z
  46. 1 W/ l  K" P4 W# K" G* s- Q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)8 {+ O3 X: ?& W3 m7 A" F
  48. {7 K6 J/ y$ f- G' G; A1 h
  49.         int fd, ret;
    : `, j5 l, Z+ `; D8 z9 R+ B6 a
  50.         e2prom_s_cmd arg;
    4 h  ^5 T! [! w' Q  H
  51.         unsigned char buf[0x18];
    9 {. O, A# Y$ ]3 G, S
  52. . H7 s( w, W+ L: j; u+ x
  53.         memcpy(buf, mac, 6);( K( }6 Q7 w- Z9 H1 i
  54.         memcpy(&buf[6], stbid, 18);
    ! i5 F" @9 G+ ?, G0 _. T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 k5 N- j7 m0 \7 u# B: g2 h- B
  56.         if (fd  < 0) {! K7 ~- e8 I" p5 s
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 E5 s- m# _* {! f7 ?
  58.                 return -1;
    & i6 d" \- h3 x* g2 ^5 z0 \% G  e- G
  59.         }
    % L  F" h8 e0 P4 W# a
  60.         arg.sub_addr_count      = 2;; Y7 J" x0 w( @. P2 n" `
  61.         arg.data_count          = 0x18;
    * M8 ^# y; i$ Q1 U. f7 t5 R8 C, D! \
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' ^1 M1 G& v& l" c! j( j
  63.         arg.e2prom_cmd_data     = buf;
    3 Q% N& P: E+ [$ \) k6 _5 h- L( c
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: y6 d, G3 N4 H- L5 u
  65.         if (ret != 0) {
    , Q' ~; N3 ?0 `3 {  p( A; m$ @
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);8 N9 Y  t- e1 }: u6 S1 c
  67.                 return -1;$ z8 S! \7 O' l' P
  68.         }+ Y+ G- V9 R( o1 X+ o' R( s" M: d

  69. , E) P/ X1 ~; k% |
  70.         return 0;
    3 E5 ^0 y$ T  i2 y. `
  71. }
    # n  ^; b) Z0 E, [" ^" \& y. f6 @

  72. 3 ]5 C1 n' f- e
  73. int main()
    0 {$ a3 I4 v) ~: ]* o: M: @0 v
  74. {, q* `; i7 v5 ?( l
  75.         char c;
    ) o6 {7 C9 n1 Z2 V% Z8 r
  76.         int i, macs[6];
    . m) M' S6 ^" q, J0 E, M) e
  77.         unsigned char mac[6];
    8 e+ P- d5 @; u; ~9 U' f
  78.         unsigned char stbid[256];
    2 L: l4 \1 d4 x( g/ m
  79. & |( z" m9 q! u
  80.         if (readparam(mac, stbid) < 0)
    * M- \0 u9 ^' O  y) n( ]
  81.                 return 1;
      @* f+ R9 D8 p
  82. 9 B9 r2 y) c$ S# p( J
  83.         printf("Current parameters: \n");5 Q+ V1 U$ G* G% q/ C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # ?& y, f% ?' v' A/ q, b- z
  85.         printf("  STBID: %s\n", stbid);$ u/ i3 \6 _% K. k) T. g' q
  86.        
    : z" j. t! @5 {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 @- G1 \& V& I+ m/ i+ {' L
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 n) E4 m; Z8 h# X3 D6 U
  89.                 printf("Input MAC error\n");4 h; }( q# a  X" t6 A* k. q% F
  90.                 return 1;+ w0 p, f- J) s+ N
  91.         }% e5 b' G) h/ J1 ]' X& J3 q/ E: X6 m
  92.         for (i=0; i<6; i++)mac[i] = macs[i];* i) u! X  h1 X9 w6 s3 Y# R* N6 ~
  93.         printf("\nPlease input new STBID: ");
    2 U) [3 \" B* S- x/ o! ^( U* g0 p
  94.         scanf("%s", stbid);+ N+ p# \1 _1 J9 K
  95.         if (strlen(stbid) != 18) {
    0 V) D5 |% S* P" p# N6 [" B
  96.                 printf("Invalid stbid\n");# o: j7 j5 `$ Y
  97.                 return 1;1 Z& d& [& n* x! c( }8 w; I) v
  98.         }! o+ g: ]1 H/ f. }$ P! L
  99.         printf("\nNew parameters: \n");% S. V8 \4 u: ]. z0 U# \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / J# y& Q$ l; ^9 M
  101.         printf("  STBID: %s\n", stbid);
    0 Y' b6 |; k( r; R6 I" n+ T* s
  102. ' o7 S' r% @& h% g
  103.         printf("\nDo you want to change paramemters? (y/N) ");' R' |% D$ j0 P+ G
  104.         for (;;) {
    1 ~$ A: K# i* Y; s# h
  105.                 c = getchar();6 ]; W+ \( j5 F& H' w9 Y
  106.                 if (c == 'y' || c == 'Y')# x7 }* x- U& E/ j
  107.                         break;
    9 n% c* t  f) Y
  108.                 if (c == 'n' || c == 'N') {
    / ?5 Q" {2 A$ _( k4 n6 }) j
  109.                         printf("\nAborted.\n");
    4 ~1 l' G6 \0 Q' ?/ K, e8 ~
  110.                         return 1;
    5 ^& c6 f% v  a4 K' {
  111.                 }
    5 F  S, T: x; j' x; g. u. F
  112.         }3 }" H$ [6 n- D( z. b, q3 n
  113.         if (writeparam(mac, stbid) == 0) 5 }6 k1 h+ M& y9 r* c
  114.                 printf("Parameters changed.\n");
    ( o8 U) C/ w6 r8 f0 a8 H

  115. ( m9 @3 i% }% W" h7 |$ ?
  116.         return 0;
    ) d, |, k/ }6 L; t4 b
  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   o7 f3 R/ h: S; R4 J
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 R9 V7 ^  s- s8 R+ A
你用的编译命令行格式是什么?
* {, a. i5 w; @9 [* i/ W0 \/ n
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部