查看: 16869|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 }) n# M; x3 ^% X- `, B3 l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % k! y. ?  R. ~9 B- g' [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:9 ^# f2 A# o( u+ s0 c1 M
usage: himr <address> <value>. sample: himr 0x80040000 0x0
- E- _; |" W5 I( D' G; B. x' ]  M7 Y- M- Y
( ?3 N1 d$ O0 [8 s) ?  c
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?/ f7 o2 ]" h5 H  ?. k5 q
$ A9 b% l/ }% ?1 p$ W1 i+ U% W# d
补充内容 (2012-3-8 09:42):% j2 S  ~3 E0 I) F- I( Q8 |3 o( Y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! `, }! z. W( E& P6 |! Z- a5 Q这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
4 I' k) H1 r4 N" }9 `6 @* ?% g4 T* Y8 m4 c8 F9 q3 [
himr <address> <value>. sample: himr 0x80040000 0x0
, i7 n, p: z5 |4 m, m  b. u5 p8 w( c8 I
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
5 D% m1 s6 s6 V( Y& A1 K; ?8 Thimr 0x80040000 0x008 i6 j* q  r  g$ _( k/ |6 Y+ q; i
himr 0x80040001 0x11$ v8 e8 O, t. o- ?% S7 @
himr 0x80040002 0x22
' j( s$ S2 f. x7 n+ y4 a4 c" k! U4 ^himr 0x80040003 0x33
' ~$ d2 D3 N0 Fhimr 0x80040004 0x44
+ T, ^, n& |( _+ @6 y0 chimr 0x80040005 0x552 o; m3 `& V. }4 T) C: k

# `+ H% B* H$ R; C$ ]SN也是类似。9 c# m' k% S% p( e. O  S3 x; b+ w
1 A) m# j0 o2 b" x& O& F
现在主要是,谁告诉我们MAC和SN的地址?2 b! [- i6 S, W6 z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( K+ j/ `0 O, _- h* R  O一直想找到运程修改MAC和SN的办法,苦于无解啊

% u2 p% `, q0 b. y/ [5 X0 r源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! N. w$ w. i, S3 M. k' K* }) M
  B2 A9 }5 `& k# z
修改的代码早有了。到今天不会编译。
0 x4 ]& n8 ^5 I  q- a  j需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  z6 D, L# ~/ m/ k
  2. #include <malloc.h>
    7 Q  C, k6 F9 d0 [- E
  3. #include <sys/types.h>/ ^& l, z) ~5 d5 ]7 p
  4. #include <sys/stat.h>
    ( |2 f. n. n! i( F, K
  5. #include <sys/ioctl.h>) s. ^" S1 u5 h. f& T6 N* T
  6. #include <stdio.h>
    % h" \- J/ D# \
  7. #include <string.h>
    : Y; X4 K' C' x) m; C  y& r, M; l
  8. + b; ~4 {2 ]8 Z+ N. a% z
  9. typedef struct {
    . K- G/ h+ \2 L$ [. Y
  10.         unsigned int        e2prom_cmd_sub_addr;
    & J2 |- x+ x* C# p7 v6 G, Y
  11.         unsigned int        sub_addr_count;
    ' w5 V6 h9 H9 j, }7 `- W
  12.         unsigned char*        e2prom_cmd_data;/ @8 i  D9 \# M/ w- @- k8 ]
  13.         unsigned int        data_count;
    : [+ l) |# b( c# v$ }
  14. } e2prom_s_cmd;
    + w: t/ s1 x2 O3 `6 V/ g# d. ~

  15. : \# d2 M% ~$ A
  16. #define E2PROM_CMD_READ 1) u: O9 T1 A; F$ I
  17. #define E2PROM_CMD_WRITE 2# e$ ]' N+ X/ [0 U
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"- m+ U5 o7 a8 I' G

  19. 2 a1 P. N. c6 ^9 m7 ^" Q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" d* Y8 U7 S6 r* B, w
  21. {
    3 P3 M4 n% g8 m7 X/ Q
  22.         int fd, ret;
    5 l1 P- W: p( m& Q  y
  23.         e2prom_s_cmd arg;; d; z( s' ~$ e  L( L1 F& P
  24.         unsigned char buf[0x18];5 Y. w. H/ J$ j, O8 c, I: D
  25. ( f2 `  f' w# @6 V$ G* Y" M
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ P% \* d: @0 d: a
  27.         if (fd  < 0) {1 b9 e) d& T( [+ n  h* P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 C8 O1 d  k8 y. `. P! }) N' e
  29.                 return -1;
    + g- Y, D7 M- c3 [9 Y
  30.         }- g, n& W! U3 Y0 k6 f4 |2 b
  31.         arg.sub_addr_count      = 2;
    3 ]. g7 U! u- k- c' d( X8 O: Z* h
  32.         arg.data_count          = 0x18;0 h( W+ k! o  _# ~4 ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 _% ~) O. V& B( W8 X3 B
  34.         arg.e2prom_cmd_data     = buf;+ ^' W- b, `% W7 z* }! y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 X6 O# e, B9 T! c. Z; Z
  36.         if (ret != 0) {8 ?. @3 E  \: z4 d8 j  f, {
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);! n' v. q# ]6 R! ^# h7 @
  38.                 return -1;
    , Q; e& a1 r) c" p; a
  39.         }$ J; k5 ]4 z" x0 a# j, A
  40.         memcpy(mac, buf, 6);4 v2 H+ i" Z" ?5 _& i* C3 L4 X
  41.         memcpy(stbid, &buf[6], 18);
    + K" ^- ]" w. j" ]! i' Z3 g
  42.         stbid[18] = '\0';) {8 \# s# ~1 c/ s/ |5 q
  43. * ^$ A5 ~% N+ z" B. ^3 C
  44.         return 0;
    ; `. p1 o' h0 N9 j9 L* s2 O
  45. }1 w+ T$ p6 i; R; L8 I9 y+ b, a1 J
  46. - C! ~2 ]) Y* w, P0 a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' I( u5 n( m6 Z, [" m; d5 {$ v- G
  48. {3 \: P6 V8 t1 m" Z  Z5 o
  49.         int fd, ret;
    5 ?- ~* y& y3 m6 A5 g, r; @2 ?
  50.         e2prom_s_cmd arg;
    $ F+ ?, f% N' D  b2 c) a
  51.         unsigned char buf[0x18];
    0 Q$ ~( \4 A+ r4 M5 L

  52. $ \0 O2 f9 c6 }, u- P  M
  53.         memcpy(buf, mac, 6);6 C7 F8 t% Y: g* H
  54.         memcpy(&buf[6], stbid, 18);0 ^; \/ y8 O( c/ E; d- R6 ~
  55.         fd = open(E2PROM_DEVICE, O_RDWR);9 S4 Y  a' E6 g# Y, J
  56.         if (fd  < 0) {
      I! M3 o- r# B# h/ i
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 c- z, Z% W. Q
  58.                 return -1;
    % M2 p5 I  |% S5 H% Y! m
  59.         }
    9 f' b' v. a+ J4 h, W
  60.         arg.sub_addr_count      = 2;' B/ w# @8 C5 X1 P1 i* C2 j5 H+ p
  61.         arg.data_count          = 0x18;
    $ }" @4 [* A  N: T' h
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 Y& L. _8 G# ]* D
  63.         arg.e2prom_cmd_data     = buf;
    - Y. ^- g7 U3 I" U& Y* A
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);; m# Z1 P+ _1 c4 E1 D. B, ]$ i; c  y
  65.         if (ret != 0) {
    , }5 J7 `% Y$ a5 V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . C% q" }: U& G. Q% ~% V' g; c
  67.                 return -1;) f' Q6 m- n5 g3 B8 Z' t! D
  68.         }7 h- H9 l) {6 e
  69. 9 b: A# O5 i; b6 l" ~- V3 s! V
  70.         return 0;4 c/ X+ A% R; }' c3 _
  71. }
    ' U( z, {0 S8 h

  72. 7 s( h& k' \/ U. L9 q' C
  73. int main()
    ) r1 h/ m" O7 f5 B& e- A) z
  74. {
    * o8 I1 e& |& }5 \
  75.         char c;2 `4 K+ E7 @2 X/ M4 _& R
  76.         int i, macs[6];9 J$ v3 l7 [5 Y/ P7 S
  77.         unsigned char mac[6];# Q" a3 a0 |, E; u* R- j6 X
  78.         unsigned char stbid[256];
    ' e, N/ t8 E/ `3 ~
  79. 6 G* r2 h* W5 k
  80.         if (readparam(mac, stbid) < 0)' u( a& j* h' Q! e% e( d
  81.                 return 1;
    4 n" _# Q5 z7 C( W* p1 x5 f

  82. / Z4 L! J5 C2 f; X( J* c- d; I+ H
  83.         printf("Current parameters: \n");
    ( a; c0 c7 [$ q6 W6 |- N+ b
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' W  F/ P: T$ Z4 j5 u, u9 f
  85.         printf("  STBID: %s\n", stbid);
    - B5 E6 }3 H3 |+ l7 o
  86.        
    3 `: w& P0 ~  ^6 I2 S
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    $ W/ Y7 z/ O9 i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! Y3 T/ a+ {' P& W8 K
  89.                 printf("Input MAC error\n");
    3 ?! h. A$ W6 B. `) a, ]9 c
  90.                 return 1;/ O3 T) T0 }3 n6 w  k# {  I( q, |
  91.         }; f5 P9 r  e# z7 X. e
  92.         for (i=0; i<6; i++)mac[i] = macs[i];+ N$ m& r7 `7 l5 l; ^
  93.         printf("\nPlease input new STBID: ");
    5 b+ u+ P3 g% L5 X, Y
  94.         scanf("%s", stbid);) L/ e+ w$ U, T7 A! X0 e* `! l
  95.         if (strlen(stbid) != 18) {
    : n% i+ H9 q6 E& O/ M6 ^
  96.                 printf("Invalid stbid\n");
    / D. c, d* I0 F3 X
  97.                 return 1;% m# I; x, y) |) A% [1 d
  98.         }
    5 b5 F! m% }& m$ |: D) J' O
  99.         printf("\nNew parameters: \n");: Q- c& @- P4 h! X& h3 G4 I3 ^
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " k4 J3 |) {1 ?' V; k# }5 w# d
  101.         printf("  STBID: %s\n", stbid);
    / [! U- v0 h: L+ F; `

  102. 6 K8 ^, g8 s! O
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 o% ~2 |, k. ^
  104.         for (;;) {& d- X2 y3 k( }! P$ l, H% R* I
  105.                 c = getchar();
    2 [) _, A8 l; _( B8 h
  106.                 if (c == 'y' || c == 'Y')% M. P' A- Z$ _% }. L7 p
  107.                         break;, @+ N5 j( H! z
  108.                 if (c == 'n' || c == 'N') {
    6 V1 D4 c0 E8 ]' P# M9 [
  109.                         printf("\nAborted.\n");5 Y/ k( N5 p, T7 g2 [% G6 |
  110.                         return 1;6 ]: |, \2 Q2 n! K/ q& Q6 u/ X
  111.                 }
    3 G% p' C! o& L/ S2 @
  112.         }
    ' h" T, }: q. P- C
  113.         if (writeparam(mac, stbid) == 0) 9 k& Y4 A/ f1 f1 M
  114.                 printf("Parameters changed.\n");- V! E6 P4 Q$ q/ }

  115. ) M$ _# M" g4 h7 r" @" d
  116.         return 0;
    ' `5 n6 _9 l" n4 L2 U
  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
1 ~& r* J% o5 _  [9 V. [在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" I" P! l& ]9 c: Q; ]% I" w6 v- n
你用的编译命令行格式是什么?
" x/ P+ ], U$ h! \3 N
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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