查看: 17645|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ i% A* L9 W* a9 o5 g3 V7 X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    , H6 j8 C: U5 t* q9 B2 }( C+ G4 P' E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( C9 F- v9 O0 b8 _0 n4 P
usage: himr <address> <value>. sample: himr 0x80040000 0x0
4 z3 X$ y+ H# @# b9 @1 K" ?# J9 ?- M+ |) Q0 T5 v2 _

) w" @# O- g% b. d不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?) X) z& _% }- c6 Q' r) E

( j7 F- U; A0 F' k* t2 |补充内容 (2012-3-8 09:42):
* I3 x* h) r; H3 Y7 _7 m7 M; O- i1 Jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 t5 `% ^2 T" e
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
3 ^5 e$ W) Q1 r& ?& ^7 n$ t5 }9 Y, ^' m- X. H
himr <address> <value>. sample: himr 0x80040000 0x0: t+ E! Q& r) h* v. e

% }$ ?; n: m2 ]% }# S# u例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。' O/ j; ?( |! V0 f3 b
himr 0x80040000 0x001 J7 t$ p' J! R. x5 C3 }+ i
himr 0x80040001 0x11
# Z% p+ w) W5 ?2 X$ r/ I' lhimr 0x80040002 0x228 ^, n3 d: u$ a) t% n" U; w
himr 0x80040003 0x33
5 i! }) K9 z, s: y+ G. v2 {himr 0x80040004 0x44
# p2 F4 c  v7 A7 `. C, _8 |2 R; ihimr 0x80040005 0x55# \7 G. p9 |0 {4 y0 g
2 f+ {  P0 x8 ~9 [8 a
SN也是类似。
6 u5 _; J. a- \  Q% C3 q; k! Q; k* K2 I5 @! P8 L1 L
现在主要是,谁告诉我们MAC和SN的地址?
8 \$ R5 p. H! \  v& f. R
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 , s. S; @2 R: d, l$ b, V
一直想找到运程修改MAC和SN的办法,苦于无解啊

3 A6 C- d9 c" x& a8 o- E% o' z源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : X5 J7 z9 d7 y4 p; c% D

  k! B1 c# U, q; I8 w* q, a% B, O修改的代码早有了。到今天不会编译。
! X0 o% A+ @  a4 @# k3 f需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 H4 g: p( M% I" E! z
  2. #include <malloc.h>
    * N4 G/ p- K0 j6 y
  3. #include <sys/types.h>
    % w" i; O$ ?5 o; l! Z
  4. #include <sys/stat.h>
    8 P" y& a: f$ n8 F: b1 X
  5. #include <sys/ioctl.h>
      y/ Y- B7 C8 K! _* u
  6. #include <stdio.h>
    7 I# d& J0 D' f* Y( l
  7. #include <string.h>
    + ^/ L6 e0 d, p6 u, o& ?
  8. 6 l4 U- a, R6 v! s& N7 P8 t
  9. typedef struct {
    9 R4 I* G* ^& H, ]. J: J0 v
  10.         unsigned int        e2prom_cmd_sub_addr;6 A3 i) q( Z  K0 B, c
  11.         unsigned int        sub_addr_count;
      T0 T' |# z- A* f
  12.         unsigned char*        e2prom_cmd_data;
    ; U* P. V5 B% z9 j: O5 u3 q0 s3 a
  13.         unsigned int        data_count;0 H5 E$ \3 p4 M4 o1 g5 c2 r$ r
  14. } e2prom_s_cmd;
    % J4 x6 ?5 x5 N7 P: f* @9 h! B4 [
  15. 9 ?' a$ O7 ^9 C) l/ q
  16. #define E2PROM_CMD_READ 10 `9 v! G1 q$ n% o3 P+ D
  17. #define E2PROM_CMD_WRITE 2
      k9 {/ y* K3 ~8 j9 [( I  l  P$ j
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! q  _* {- ], U0 i7 f" B
  19. + T" b6 Y! e- l- W
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    - v, j9 Q8 H1 i
  21. {
    . A/ M: v4 I  ?6 Q7 D
  22.         int fd, ret;
    + Z3 P( ^% x$ k( v
  23.         e2prom_s_cmd arg;
    ' ]9 t. C* c3 G4 Q7 n
  24.         unsigned char buf[0x18];0 k8 f: p; z  {

  25. $ L, t7 F7 _  ?! v; Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 Z+ X1 ?# z1 S7 F4 Z7 K& g7 K, [! h
  27.         if (fd  < 0) {8 O, n, K) a# T; [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. Z: u; }% K" m
  29.                 return -1;
    3 a: e- U! H- X: m; V
  30.         }, F) A% f) @9 ]% {
  31.         arg.sub_addr_count      = 2;
    5 d" u$ v+ @' I) F1 V3 A
  32.         arg.data_count          = 0x18;6 s0 Y6 p" l7 X/ H( I9 [2 R
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    - t* ?/ A' }" E- x, x( ]4 Q
  34.         arg.e2prom_cmd_data     = buf;
    2 k6 q' n- b$ m6 p( K* A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. U: r- H5 v9 l0 l/ U: b$ b) ~' k
  36.         if (ret != 0) {  l( }$ v$ f$ K' y+ U0 u$ d4 b
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
      ^# _, Y$ o4 }  ~* M) h
  38.                 return -1;
    : t. L' U0 O( R: z  f) n, H
  39.         }
    " E4 {: `  ]$ I# [
  40.         memcpy(mac, buf, 6);  c1 q2 f( n' w% l4 s: i- d' D
  41.         memcpy(stbid, &buf[6], 18);( n9 I5 F, p( O/ k' H
  42.         stbid[18] = '\0';
    - [: y6 Y: ?, c1 P1 m9 B
  43. 2 m0 U4 e* e& ]
  44.         return 0;: z& H/ h6 I, @8 Q) T* k1 m
  45. }- y$ |, f6 B1 }1 B; y6 L! _9 y3 I2 x7 B
  46. % f' \" k8 a+ H0 t# w! a3 ?6 b6 f, S
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! k7 G0 o0 g  w. B' R+ y! k6 D" b( x
  48. {# \! l# N: H8 c: n
  49.         int fd, ret;) [& c: M1 Y. V
  50.         e2prom_s_cmd arg;
    0 }7 Y$ Y* k( Y! ?1 o
  51.         unsigned char buf[0x18];
    . y: s# S" k/ e& P' m: ~

  52. ! i* |$ |) C3 f7 `: c% {6 ~0 V
  53.         memcpy(buf, mac, 6);
    0 Z8 X2 l; S6 O& j9 d8 F) f8 O/ V
  54.         memcpy(&buf[6], stbid, 18);/ Q: x1 Z4 a6 g0 ^. H4 f
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 x- A* u4 W% g  u
  56.         if (fd  < 0) {! P3 q' Z  Q' T) A# N; o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# c# O* X" ^/ K( B; R0 x
  58.                 return -1;9 ^+ m6 q0 f5 e. z7 W# x5 x
  59.         }
    6 S- `- m" w3 w2 b4 ]
  60.         arg.sub_addr_count      = 2;  k* u. q) H' J/ X
  61.         arg.data_count          = 0x18;' W+ y! m5 R, o7 f: i
  62.         arg.e2prom_cmd_sub_addr = 0x290;* N: C; h( m2 ?1 [) V
  63.         arg.e2prom_cmd_data     = buf;
    . S  n. E  y( s* n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ B# U7 \% P: A0 g
  65.         if (ret != 0) {
    9 e9 N+ T4 f  o! O0 B0 t* w
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ) r7 p8 m2 v1 t1 q' [0 p9 Q
  67.                 return -1;; V( I0 R7 }6 _
  68.         }) x6 w, R& E" |0 X' ?

  69. * m/ A, a: i, i9 o( `+ Z$ K+ ?
  70.         return 0;
    8 y! ^, J' `2 L2 P( \
  71. }
    + z3 K4 F" G+ P" m/ C# i! n: h

  72. # t) G$ b2 u* s0 E$ ?
  73. int main()
    ) s( @4 l* {' W+ J
  74. {
    : B; Z' t6 n- L. b1 G
  75.         char c;
    . }# U3 P+ Z" o" J. }
  76.         int i, macs[6];# N$ B& I5 L; E5 p- d
  77.         unsigned char mac[6];
    + }0 ?6 M( f3 s! z
  78.         unsigned char stbid[256];
    - I) k) r/ d, R* g

  79. 8 _% e9 j# Q5 ]- p  h3 X
  80.         if (readparam(mac, stbid) < 0)
    * |  C. q9 s7 o5 c2 \/ q
  81.                 return 1;
    ; ~7 \/ T$ j+ j2 `/ Q/ d
  82. " ~: S1 b# f2 X" i3 @2 `9 Z
  83.         printf("Current parameters: \n");
    # a' _6 P5 S' e; x
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 p' i2 M3 J8 z7 [
  85.         printf("  STBID: %s\n", stbid);
    6 K: E% y8 g- f# J3 d0 @
  86.        
    ( y' C: p+ B. N/ x9 t
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");: h# c0 r$ S/ c% Q2 f" Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {2 `& i; C7 Y: o* }
  89.                 printf("Input MAC error\n");
    4 K; T! b1 B7 ]- {7 z, X# C7 ?
  90.                 return 1;: }0 G" `" W& v% r/ N
  91.         }
    $ `3 X8 }* X0 f* Q' D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ b" R: G) ~! o" {
  93.         printf("\nPlease input new STBID: ");* S* u. C( \) I& ?
  94.         scanf("%s", stbid);
    + R% \) u* R: K" W; a5 A) o# `
  95.         if (strlen(stbid) != 18) {, _9 U, u8 S1 J2 e, }- a
  96.                 printf("Invalid stbid\n");  L) G' H, ~2 ]5 m3 v" V: q0 H2 h
  97.                 return 1;6 {8 s: @2 b! i3 B6 P
  98.         }
    4 _( B3 s2 m/ U( K
  99.         printf("\nNew parameters: \n");
    : D' u" X- x( I7 F# A& }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 X; x% T/ h" L1 S9 [
  101.         printf("  STBID: %s\n", stbid);: W9 X& v6 f/ O1 W7 a0 B* o  i5 H$ E
  102. % {7 k* t, q% N8 Q0 c3 h0 e. ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");% u& e8 f% V% N
  104.         for (;;) {
    6 o' ]. x3 }  V( S  M
  105.                 c = getchar();
    7 V+ _& [- j" s0 J# o% h& ]$ d
  106.                 if (c == 'y' || c == 'Y')* @8 h6 J2 v* [* ]- F2 w
  107.                         break;9 l1 [3 P" K2 a' Q& n
  108.                 if (c == 'n' || c == 'N') {; w9 ^8 D2 n! e. `. Q2 ?
  109.                         printf("\nAborted.\n");
    0 m% {% ~% x9 L
  110.                         return 1;2 K5 U2 f" E5 c- s6 ^) s
  111.                 }- o) M' x: \% C! n: K/ {# K
  112.         }: @# k1 r) ~) t3 A% l
  113.         if (writeparam(mac, stbid) == 0)
    # k( P9 M2 b5 C
  114.                 printf("Parameters changed.\n");
    - n- ~( t# Q! \4 _9 h' u" l) T

  115. 0 q1 U4 h5 Q  \$ j; w8 A- ~
  116.         return 0;
    ( w0 ^, U8 N" h' v8 Z! M
  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
* n; X2 x  L7 k# S$ U& I  u在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 K4 J- I8 @! V: p, F: u9 U& P7 Z你用的编译命令行格式是什么?# K9 a7 J/ W' V5 A5 W4 N! a6 [8 b
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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