找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15296|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 Y8 N  u, M: E( d& s& r
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 x. v0 _: h) d7 n! d
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, Z1 ^5 q- T2 [# v, [2 nusage: himr <address> <value>. sample: himr 0x80040000 0x0  N! l% b( ^+ G0 f$ _- h

9 x6 [. z/ E4 l2 f
6 ]. {- m6 h# d; k# x/ h( E不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. S. H/ d# I; X& }1 l

$ E2 D# I* Q' l$ [5 V, \* `+ Y补充内容 (2012-3-8 09:42):
$ R( z2 L& i9 [http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ G1 Q$ P5 z2 @
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。( z" f" m; s6 D$ k# J0 s
' l2 H1 ]7 D6 t, F: w. ]8 W
himr <address> <value>. sample: himr 0x80040000 0x0) q# f$ L& R; v- d

( f$ W: |/ D# e0 Y, k6 p例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
5 E) h* y5 x& g1 Z7 phimr 0x80040000 0x004 L/ `2 l( B' I( e
himr 0x80040001 0x11" V: ~% _1 ^  E8 A0 a9 J7 A& f, V
himr 0x80040002 0x22' V5 f2 _8 B( g
himr 0x80040003 0x33
- u0 q2 F, a+ R9 T. Khimr 0x80040004 0x44& H* O0 _, N! R: R& L9 ?& Z. X5 ?
himr 0x80040005 0x55
+ k3 ~4 R  h% i1 Z7 c! `% i1 v+ x% K3 b( C- U" e" \, u+ K; d
SN也是类似。
( D( z- g& b, Y
& E+ [& o+ C# w& |( T' B现在主要是,谁告诉我们MAC和SN的地址?1 Q0 S4 A! v+ k
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ) M, n/ j1 x8 A" t8 a7 e* {5 {: Y' \6 O  X
一直想找到运程修改MAC和SN的办法,苦于无解啊

" H2 y- C3 V) C/ |  \% }源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& i/ O* X! d: x' B
2 F; J" p1 z/ [) t6 i修改的代码早有了。到今天不会编译。
9 U4 G& E; I( y5 g0 M1 h# l9 e需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 J. \8 c& m/ A8 Z& F" D
  2. #include <malloc.h>' z* |9 q0 n8 j5 H8 T
  3. #include <sys/types.h>. @. U. }* K3 U. h( L& L8 k
  4. #include <sys/stat.h>3 J+ h! m" \$ \) b' ^( [" {, a
  5. #include <sys/ioctl.h>- X( I- n6 b, t+ f
  6. #include <stdio.h>
    ) ~/ s# |7 N+ S2 W& T5 i
  7. #include <string.h>
    3 A: x! H) I$ f0 S

  8. ) y2 v" |* V" t5 _
  9. typedef struct {# X5 n& L, r. R2 T0 r3 k
  10.         unsigned int        e2prom_cmd_sub_addr;
    * ^' a+ k! x( f3 K% R9 p/ E/ i
  11.         unsigned int        sub_addr_count;
    ) w6 U, {8 Y4 [; C% M0 j2 A
  12.         unsigned char*        e2prom_cmd_data;
    ! g9 h3 f7 W- A. ]2 ~' [1 c  V/ |
  13.         unsigned int        data_count;
    4 [+ @) ]7 d) w8 }5 O
  14. } e2prom_s_cmd;
    " d; ]* [- m/ |6 I

  15. 9 t! J7 u5 C/ n. i
  16. #define E2PROM_CMD_READ 12 b. L6 e0 Q" p- J  p0 [4 L; _# b
  17. #define E2PROM_CMD_WRITE 2
    4 V0 r& M3 W! o
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    0 v: C& x# u# _- F( M

  19. # [" ?$ P0 k; a, u9 p: X  l
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# ^: r: }; r, C' `3 Q! W- w
  21. {
    & j: E5 |  o* \2 @" n& L, w
  22.         int fd, ret;
    4 V3 E6 p* v7 t! E: o2 Q
  23.         e2prom_s_cmd arg;
    : ~  e2 g% h" Q% s  q2 ~0 l7 Q
  24.         unsigned char buf[0x18];
    - i7 T) P  M( v1 a$ r0 \9 P- P2 q5 g

  25. 5 _6 g2 _3 e1 s3 r& K) \) u( ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % k% L, z/ y8 q9 C
  27.         if (fd  < 0) {' _' ?+ ]' L# s. \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + d. i! s5 ^4 V" P* [
  29.                 return -1;
    . G* y9 k9 Q  V; o5 Q
  30.         }
    $ O: L4 s' j8 z! y3 W' D9 V* h3 {
  31.         arg.sub_addr_count      = 2;
    # S; u1 q5 w) Z% ?
  32.         arg.data_count          = 0x18;1 X- u3 x$ O5 x. z! U# z$ H. H
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 h9 M/ d* G8 U8 ^+ ~" g* Y
  34.         arg.e2prom_cmd_data     = buf;
    8 ~. E6 `! }3 q& r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 j( T7 H' g: H/ f8 K  @. V
  36.         if (ret != 0) {! B" F; v5 i9 `6 h, L5 f- o
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);/ c2 \! F  m* a( |' t& b, O, j
  38.                 return -1;. K7 o# S+ J1 ~
  39.         }
    , x" P0 c2 i) V, l; y
  40.         memcpy(mac, buf, 6);2 X5 m6 j8 C. w; K
  41.         memcpy(stbid, &buf[6], 18);% R. Z0 M1 q& I/ D+ J
  42.         stbid[18] = '\0';' @: a9 L& S' t7 L% F4 Z, v% ~

  43. - x8 g5 p+ Z3 a- c: K# y
  44.         return 0;
    : F: e+ N& l  _
  45. }
    5 [, J" s" o: J, V" T5 }
  46. 6 S' G6 y* z. N  [3 ]/ b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    * r$ }; [( f. {# Q) u2 ~" m
  48. {
    0 b5 D+ M& `& |% p0 V" d
  49.         int fd, ret;. I' P( E, P' E$ W, J
  50.         e2prom_s_cmd arg;
    : t" Y/ o1 l8 p! o+ A- X% b2 |
  51.         unsigned char buf[0x18];
    " V' c) U6 w4 m4 U. B

  52. $ a! h( a* q" ~9 A
  53.         memcpy(buf, mac, 6);3 O9 ~  R* q6 h  ^& B4 R; {
  54.         memcpy(&buf[6], stbid, 18);
    ; q' o6 P4 h& `3 t1 Q. i. f
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, K: @2 J0 P$ a( Z# H
  56.         if (fd  < 0) {9 o& t1 a. i" i  |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);; o. @; F2 }. b
  58.                 return -1;
    $ X2 i: w9 u- }$ c7 w$ s2 W% c8 y
  59.         }- @) }) M0 d  \2 i7 i( [* `) \
  60.         arg.sub_addr_count      = 2;
    - K& D" F. \, e2 u) H% W; p
  61.         arg.data_count          = 0x18;
      q+ a, @9 k' y* B/ G; S. f9 K7 Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;, S' \' ^0 n! J3 n' d
  63.         arg.e2prom_cmd_data     = buf;
    - X6 \8 e! ^4 n7 M9 j) _7 k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);) D6 Q8 K3 Q; \0 r/ ^
  65.         if (ret != 0) {7 F* ]  l8 W% ]5 [
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 z; C# U: k$ o* ^" b% ?
  67.                 return -1;( {* V& ?. l( l  [. V2 T, z, [8 |
  68.         }7 W/ }% Y9 D) `7 b5 l# ?4 W4 z
  69. ) t& V* h( M; h
  70.         return 0;
    % a1 M6 P/ h/ W
  71. }
    " I$ L; Q# E4 Y* |. l' G
  72. , T% x' [( a: b6 R$ p
  73. int main()# e* g/ q% b) w; |5 c
  74. {: K' v/ H* e+ E+ H4 w1 D& r
  75.         char c;
    - m  I3 e$ G/ a) g+ }
  76.         int i, macs[6];
    ' y: Y, r# z7 r+ @6 t
  77.         unsigned char mac[6];
    6 C7 @5 {- J6 t+ ~
  78.         unsigned char stbid[256];, M& J( M/ C: e3 f% n  S

  79. + _3 r4 f7 h& }- I
  80.         if (readparam(mac, stbid) < 0)
    5 O. Y: \+ R9 b0 |6 V
  81.                 return 1;
    2 O& v4 K: y" M. P; O1 q

  82. . d0 P  R' Y4 d: y
  83.         printf("Current parameters: \n");
    8 V5 @  V+ r9 R! Q$ \+ D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' ~4 P) S- s( }+ k: F' H# O5 R' k* V
  85.         printf("  STBID: %s\n", stbid);) @1 @, |* W* M9 X
  86.        
    ) \$ ?! d3 f! n$ p6 T
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");9 F$ N4 c$ h1 t8 X9 U0 A  }
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" n- J. k5 L. @/ p6 b" C6 O
  89.                 printf("Input MAC error\n");
    6 J8 V& n# |: i5 {- r# E
  90.                 return 1;
    8 Z: E8 B- `1 C  E3 r
  91.         }
    % H% U% W6 i) D# w
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # B$ L% \# ?, z- j5 Q
  93.         printf("\nPlease input new STBID: ");
    " f7 |8 [+ `) y- h( W
  94.         scanf("%s", stbid);; K3 |7 B9 O) \
  95.         if (strlen(stbid) != 18) {
    0 W0 t3 Q+ c  L) B
  96.                 printf("Invalid stbid\n");: V3 p9 Z  X; O+ ?0 `
  97.                 return 1;; @! B8 Z+ i; V  @
  98.         }/ L' S, V& }% Q
  99.         printf("\nNew parameters: \n");9 Y0 V8 P) y- E
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' ^; U  y: z& e: X! e' t
  101.         printf("  STBID: %s\n", stbid);
    ! H+ }" y" K( B) b
  102. ) `; Q) K4 V; q$ O1 i
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    " C6 W, j% g5 D) c
  104.         for (;;) {  R  Q, a$ G/ Y
  105.                 c = getchar();
    5 j* A: A: l# D) M2 L5 t  r/ h
  106.                 if (c == 'y' || c == 'Y')
    , |5 L+ R- R9 z" w* Z: R
  107.                         break;, E1 t$ ~/ g, b. m  z
  108.                 if (c == 'n' || c == 'N') {
      Q2 F* C! R- v
  109.                         printf("\nAborted.\n");
    / H, E! T& g, ~
  110.                         return 1;, p) S7 V2 C; K+ c4 X+ Z
  111.                 }, m2 O/ B" D$ M' q- l  A
  112.         }7 p' e6 P8 ~' L* ?' `: C
  113.         if (writeparam(mac, stbid) == 0) - I5 m% j- Q1 e3 Z
  114.                 printf("Parameters changed.\n");
    9 x1 A% l0 @3 N/ e

  115. $ ~0 X5 W% I4 w( H& V* d9 ~& }
  116.         return 0;
    2 k1 D5 q6 p6 ~5 p6 {
  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
) T, B7 H- |8 N" n7 M/ G4 s; K. F在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, T+ E1 G' F, f7 L1 C# ^) V7 @你用的编译命令行格式是什么?: H* h& P# A5 l
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-18 14:04 , Processed in 0.024305 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表