查看: 17243|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , E! X% y/ l- d% n6 A7 d* T
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 \6 [0 X0 f4 q0 p
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( y5 H$ g& E5 }9 b' c: y* u5 z  t
usage: himr <address> <value>. sample: himr 0x80040000 0x0- K3 \7 j& M' O8 N9 b

3 Q% ?+ K5 b9 z, M1 T# x2 W8 N+ |7 @
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
5 z; e1 C' D/ Q3 A& s+ x$ J9 J
( i6 K1 o7 w. \. ], U, r- V, L+ a; V补充内容 (2012-3-8 09:42):
- ]+ U" I' ?8 b" h* Phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数; [7 F$ A! N6 S9 W! p. S
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
5 r$ {; S% d% `9 n
% T+ R+ j: d5 J. Ehimr <address> <value>. sample: himr 0x80040000 0x07 ?, N, v  E  H4 Y3 r/ i

, j; o7 Y: X% L5 U$ }) {例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& v( e( n9 [( |# M% k7 n) u% Whimr 0x80040000 0x008 B4 H# W) a7 Q  @
himr 0x80040001 0x11+ x! o2 s+ k2 z% K
himr 0x80040002 0x22
6 L3 p. h+ e' t9 S0 u; P* }himr 0x80040003 0x33
2 k8 N7 \' g) A$ [2 d3 h- y: phimr 0x80040004 0x44
" p/ x# j" b/ e! t; Nhimr 0x80040005 0x55
* B# g7 T$ F* B( s% J+ z% _7 ~( S! }: X- Y  M: E
SN也是类似。
# |" s$ S& P1 W/ K% q, u8 \0 f* w& o; \6 A: J: c  X& }
现在主要是,谁告诉我们MAC和SN的地址?2 G$ q* x. T8 }4 u$ M5 ~) J
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / x) [1 x+ X" a+ D9 }
一直想找到运程修改MAC和SN的办法,苦于无解啊
. M& p; y9 r  G) K
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ Z! Z9 U% S; z' G+ K3 W
: p. J" I% V+ O# X; |修改的代码早有了。到今天不会编译。
, \2 p; J& s$ Z: O- T8 Q需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" O4 q0 Q" u$ @# s
  2. #include <malloc.h>) [3 V  {3 L1 E  Z) V% A# a
  3. #include <sys/types.h>
    . L- e1 U0 `$ ]+ k9 y" }
  4. #include <sys/stat.h>! ^4 ?9 ]( N, j
  5. #include <sys/ioctl.h>
    / j$ j+ p& M' ?
  6. #include <stdio.h>! e' F. e( l% \! z2 p
  7. #include <string.h>% U. N; Z9 Y  |- r8 x, j
  8. + K5 O3 x  e; {( s& \* b6 f
  9. typedef struct {( [. s- J4 d# k8 v
  10.         unsigned int        e2prom_cmd_sub_addr;- k" K, m- r; i+ p- A/ u! K
  11.         unsigned int        sub_addr_count;
    % y# |! W$ [* ?6 F4 D
  12.         unsigned char*        e2prom_cmd_data;. L: f! y/ f) X6 f2 ~
  13.         unsigned int        data_count;
    , [4 D  P4 D7 z
  14. } e2prom_s_cmd;$ G; H8 v: [* A2 o2 _
  15. " L: R: c; ^( B' H# H8 E6 g
  16. #define E2PROM_CMD_READ 1: L/ R* g+ J5 F
  17. #define E2PROM_CMD_WRITE 2
    7 N6 ?3 ]) Q1 I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"8 K% a9 [' v  }7 a- S: T! J/ J2 a5 T( p
  19.   Z1 X" L5 K# c
  20. static int readparam(unsigned char *mac, unsigned char *stbid), B. H) C2 u( a; \" i$ D
  21. {
    6 V8 `6 w. ]1 f, T, l2 x
  22.         int fd, ret;
    0 s4 e' [0 \* K& T; m5 F
  23.         e2prom_s_cmd arg;, T  `4 n5 W- X8 S
  24.         unsigned char buf[0x18];, `: b* ]8 y% E# w: T: w
  25. 4 u+ O7 J1 o$ [0 h6 Q/ E" N6 r! O$ Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( d$ d. }6 ~, X
  27.         if (fd  < 0) {& z$ R  H  l, N* Z5 ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 v' Z5 D6 k+ D; ~5 f
  29.                 return -1;5 A" [1 ^% E0 H
  30.         }
    # G+ U- E: y3 C# h, o* F& c
  31.         arg.sub_addr_count      = 2;+ a2 J5 J: f1 d3 I3 E+ A5 s( Z
  32.         arg.data_count          = 0x18;
    5 T& \. \' [4 S9 F9 _$ S
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    + }2 R- Q+ ?. N3 _/ `/ [4 Y
  34.         arg.e2prom_cmd_data     = buf;
    5 v% U/ ~3 B$ y% v/ e) f" i0 }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - Y) u: {4 S2 H/ Y: j1 K& ^
  36.         if (ret != 0) {2 ]0 w' t& i; I! G
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; @0 ~( ], u3 _7 W
  38.                 return -1;
    : J8 o7 p& [' o' @( _
  39.         }
      T7 }( c" h7 L1 g
  40.         memcpy(mac, buf, 6);7 L- u4 i8 K' `: V+ L
  41.         memcpy(stbid, &buf[6], 18);
    * W5 e  s1 z, ~* o
  42.         stbid[18] = '\0';1 |' v  x7 j8 D! a1 D8 R
  43. # h& ?0 F9 Y* d. U% r% W" [% C& S
  44.         return 0;5 Y. f- w7 g: _+ {8 k
  45. }# `) T* V* V0 A: i* d' o
  46. / z* H/ e) n2 m$ W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , s! U$ y! U& _! \, M
  48. {/ K: I2 v- x  @7 n
  49.         int fd, ret;! Q- D( `5 Z6 O
  50.         e2prom_s_cmd arg;0 e% O: W+ r( \1 q
  51.         unsigned char buf[0x18];8 V2 n' V& X) _1 H: b

  52. 5 @( t. x, G% O  R" S% W0 m
  53.         memcpy(buf, mac, 6);
    & n4 s3 `% Z# c% \+ U, Y' l
  54.         memcpy(&buf[6], stbid, 18);
    " y* b" p- D0 n9 ]% |8 A* M7 q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);9 `' X2 x. j6 L/ }
  56.         if (fd  < 0) {* N/ h2 h& v6 ?. [8 @% W0 m
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 Q7 Y+ E2 v, N
  58.                 return -1;- f2 c$ b/ w) ~2 g! g5 Y
  59.         }
    2 R0 z- K& `$ C4 s. r; |
  60.         arg.sub_addr_count      = 2;% o2 M; @8 L6 U6 i0 t' l7 V
  61.         arg.data_count          = 0x18;* B. ?1 K+ x% [& Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & V) b1 o$ E( c# Q7 X3 I
  63.         arg.e2prom_cmd_data     = buf;; |+ k8 |  r8 D
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);% n* ]) W! U) C
  65.         if (ret != 0) {( W' d" y4 b) [6 U9 y+ R) p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 A# b$ q" q, _1 C2 Y1 o8 i  x  B
  67.                 return -1;
    : w4 o4 ^" P5 e4 J1 u* r
  68.         }2 E3 D% r* C- O' ?$ y0 i' h
  69. # b. ^) C5 z9 a: a
  70.         return 0;  L( d) U2 p# O$ ]; i. d# d
  71. }
    ) }6 K) j  _* y% O% W
  72. ! u8 L% }& C% z- {. z
  73. int main()
    : i4 |0 n* G1 ?- D
  74. {  s$ H2 [0 g3 k8 J! Q+ a
  75.         char c;
    2 ~* ^% W7 }& l6 x
  76.         int i, macs[6];& C) ~4 M. K) H4 q9 d
  77.         unsigned char mac[6];* }* ]' A% O2 U! e9 S0 D! P
  78.         unsigned char stbid[256];
    4 |) }5 o" {! c. i% Z+ [
  79. + A- L9 `  Q& l1 `' p& Y3 P" [5 O
  80.         if (readparam(mac, stbid) < 0)
    2 S4 J2 }' ?7 C1 c6 q5 D
  81.                 return 1;
    - }; H; x. N5 l# B4 T) ?% B6 F
  82. ( R5 F) f  X. W2 W* h
  83.         printf("Current parameters: \n");
    , m% Q+ l8 A# U7 K3 p
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 I" T* q9 k, b9 M" O* k: y
  85.         printf("  STBID: %s\n", stbid);6 G6 ?8 B/ ^5 r* j' B' v9 s
  86.         4 B1 J/ _8 p( ]% H. Z/ }
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    9 j2 B8 G% g4 V
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {1 \: h/ B- ~1 Y# b
  89.                 printf("Input MAC error\n");3 N  F; A) X1 y( j1 _. m; Q
  90.                 return 1;3 K7 H. a) i6 ~$ l% {3 z
  91.         }
    & f/ v( B7 A) t# V* y( v! V
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # l8 X/ r6 i$ T, ]8 U, G) S
  93.         printf("\nPlease input new STBID: ");* Y( `6 B; `. p/ l1 A
  94.         scanf("%s", stbid);
    ; z. G7 j: M+ g5 n; \5 N! s5 `/ u
  95.         if (strlen(stbid) != 18) {5 {% y- o0 l1 ~9 @; C
  96.                 printf("Invalid stbid\n");
    ' n" c/ \3 T. s7 `4 n$ V
  97.                 return 1;
    , X7 G; s/ c7 m! L+ n- X
  98.         }5 W8 N- W) }1 V) n( I- f7 f
  99.         printf("\nNew parameters: \n");6 K0 j7 W' O* }/ H, j7 [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - M6 m/ E+ j" i# }
  101.         printf("  STBID: %s\n", stbid);
    3 H8 R9 o/ v: q0 V& @% M8 D
  102. # g- F4 H% a9 H' }( U* L
  103.         printf("\nDo you want to change paramemters? (y/N) ");: ]( m7 |6 a( C# Q! P4 B7 _
  104.         for (;;) {
    , v: T' G! O, H- H1 s/ f
  105.                 c = getchar();" J( G5 y# c- X' a/ P5 N3 v1 c
  106.                 if (c == 'y' || c == 'Y'); u9 O0 Z5 @* w* H
  107.                         break;, w8 `( a9 K$ F4 S
  108.                 if (c == 'n' || c == 'N') {9 p' q3 f* E# C$ s2 Q, f
  109.                         printf("\nAborted.\n");
    # ~0 N; Y/ B  o" a1 U2 l
  110.                         return 1;
    ( h: @1 |; Q9 u7 g
  111.                 }
    - e- ]$ j7 U0 A! H$ P- \9 x  d
  112.         }, @& t3 Z' R( |  c7 V' p! E% C, G
  113.         if (writeparam(mac, stbid) == 0) 8 C1 h' b% {; K+ g3 L  O9 O
  114.                 printf("Parameters changed.\n");& y+ |  r/ n; l% Q
  115. ( [/ K% z/ C9 Y. J
  116.         return 0;
    8 M% O- N, y" @, }! D
  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
/ [! F9 a$ H9 Q0 Y在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 i6 {8 ?9 @1 X. N% o( f, I) v  h! o
你用的编译命令行格式是什么?
4 ^+ s+ X1 \; f/ D
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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