查看: 17190|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr& \2 N1 h3 ^" @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! d+ k4 j3 ~, L$ _( d3 g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. N6 t( X6 s. w4 g5 ]
usage: himr <address> <value>. sample: himr 0x80040000 0x0) a2 f" `5 H  n1 ~% ^) |

' {! ^+ i3 W, c' w7 d; N
6 u" k( ?, |# n4 i6 `( P$ b不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
% ?( R) C. `$ |, s# [2 R# t- J" I. U* P7 S7 B) p
补充内容 (2012-3-8 09:42):; G. \; z8 P2 X) F: s! A
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" N* j( P' M4 s( ?! O4 w5 G这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。/ X+ Y7 x) S# i; L- j

5 k' S8 s! ?5 h$ uhimr <address> <value>. sample: himr 0x80040000 0x0
. m7 l# H3 C; E8 W. _. q: T( `: b8 L/ D0 S& G/ M
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# J  r  x, T" ^0 c+ d0 |  p4 F9 \
himr 0x80040000 0x00  a0 h. Q* g7 b3 \$ ]% L& p3 I
himr 0x80040001 0x11
: W0 U* b: L9 T( [2 T6 p- shimr 0x80040002 0x22* _+ _7 k& x6 b! i: @  c' ~
himr 0x80040003 0x33/ W5 ^+ S; X6 p* p7 a) L; b
himr 0x80040004 0x44- [9 V5 d1 i$ E, r1 @
himr 0x80040005 0x55! h" b7 d9 d; k$ h4 p$ q8 l
. T  a+ F# L. s+ k  [6 a( l' V
SN也是类似。! `$ N4 _0 m3 F7 r  T" Z

$ {* h; s1 @, E8 A5 N; M现在主要是,谁告诉我们MAC和SN的地址?8 z, ^+ \7 ?# o4 W0 ^- U& K, r5 f
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 P' {5 W' O; h5 X. I$ D
一直想找到运程修改MAC和SN的办法,苦于无解啊

7 L0 v* i, G; p源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 r' x5 p# ~9 ]; Q
7 Z' m& }: g6 d0 y* G
修改的代码早有了。到今天不会编译。
) I+ Z5 R  A( M# Y8 s+ Y* ^# E4 o需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    * T% ]; }# [! \% ?
  2. #include <malloc.h>
    3 {0 @  l6 w4 b1 ?2 P
  3. #include <sys/types.h>
    4 x9 u* E9 ~) O* P$ j8 n2 ~
  4. #include <sys/stat.h>
    - F, W) ~2 S0 C3 l/ ~
  5. #include <sys/ioctl.h>5 O& t9 \0 I+ z
  6. #include <stdio.h>
    ! C& O1 }2 G5 Q. I6 ?1 n
  7. #include <string.h>
    # \9 B  _% F9 w# A
  8. - c1 a* [+ v% r( s2 C
  9. typedef struct {
    / v/ |5 |" w, `/ ^8 F6 r! f; R$ R  P+ u
  10.         unsigned int        e2prom_cmd_sub_addr;# w0 X3 M- ^! [7 f
  11.         unsigned int        sub_addr_count;
    . o5 g; {5 |5 e0 L. D3 J# W6 s. q
  12.         unsigned char*        e2prom_cmd_data;
    . G, b% `2 k/ B, d$ M. {. s
  13.         unsigned int        data_count;
    , I: g- h& T$ C7 F- r9 s
  14. } e2prom_s_cmd;
    * A! }3 g* K$ w) a. K; K9 j, g
  15. % U" W) d* k' x# g* d
  16. #define E2PROM_CMD_READ 1
    & i# m0 K0 G, U1 v/ q3 A2 [8 Q
  17. #define E2PROM_CMD_WRITE 2
    2 T$ t' Y6 j, e3 j& ]
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". ~& S6 Y6 j/ t5 A' ?

  19. / F- @$ C% J/ ^% Z, U% Q! P7 E  B
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 Y! y( K4 r: Q  K
  21. {
    ! s1 G2 ^. x. N7 j5 M
  22.         int fd, ret;1 n2 _! R  ^5 L. b% j
  23.         e2prom_s_cmd arg;+ [& T( P/ z! l. m8 R1 ~1 |3 P
  24.         unsigned char buf[0x18];' X% X: z; q) k

  25. % P& V1 O7 W# X% l7 e
  26.         fd = open(E2PROM_DEVICE, O_RDWR);, F% z) f: S# ?& |9 n+ w
  27.         if (fd  < 0) {1 S1 `  F: s% L3 f0 Y  a
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 o4 |# L) t4 @1 k8 b' E4 V; i
  29.                 return -1;4 d" a+ a( t' p- w2 q/ ]. a" H; R
  30.         }! @% ^  n; s+ O9 S
  31.         arg.sub_addr_count      = 2;1 }. }1 W. P8 Z, R. c, V1 p
  32.         arg.data_count          = 0x18;
    8 L/ g4 \4 W) {/ n0 ^( o9 Z' }
  33.         arg.e2prom_cmd_sub_addr = 0x290;" z1 r5 D0 ]1 T6 q1 [# j
  34.         arg.e2prom_cmd_data     = buf;
    , Z! S) i: p+ E: _4 F: l
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      `# E- G; [4 N7 k
  36.         if (ret != 0) {- q! X3 B# b$ V, h- x
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);" o6 P: E" K# T7 F$ E
  38.                 return -1;* q* w, s4 H: k: Z) b; A& E
  39.         }5 ?3 s3 T$ ^$ V5 l  I) ^. E
  40.         memcpy(mac, buf, 6);5 A* T# u+ p) I
  41.         memcpy(stbid, &buf[6], 18);: `, g3 B) a* X- z% |+ |+ L
  42.         stbid[18] = '\0';  c  ^- G$ d" ?) H+ s+ \9 i

  43. 1 M" }( j# Q% O$ V2 p
  44.         return 0;
    $ ~, o4 I% ~: y
  45. }, w9 d0 a. u# q( q
  46. 5 {% f& x0 z1 V' ?; Q% ^1 |
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' a9 o5 R, {% G% a9 `: z
  48. {
    2 b9 l- \8 t/ V/ A3 N7 n
  49.         int fd, ret;3 K7 I' |( G) C- a
  50.         e2prom_s_cmd arg;
    1 D( B3 m) l8 X( S' @4 U- [* c5 q
  51.         unsigned char buf[0x18];2 r& ?7 Q" F, M+ M
  52. 4 G/ }& s: q, D; K
  53.         memcpy(buf, mac, 6);+ e# N! A) X2 r1 V' H/ e
  54.         memcpy(&buf[6], stbid, 18);# q& u& X, J) p7 F- X7 Y8 c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 i3 h# I3 q5 a
  56.         if (fd  < 0) {- _( k" v  o& s
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % Y, O1 {. _) o
  58.                 return -1;
    ( P" l0 v8 }/ ^  X
  59.         }
    : S0 X1 z- o+ C. D4 R# I$ g
  60.         arg.sub_addr_count      = 2;
    1 V9 u9 S: A9 ]3 Q& d/ D( {. B7 I3 b
  61.         arg.data_count          = 0x18;( q% K7 g; H. R7 }& `
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      S; L3 ^  W' G( X: D: }; F
  63.         arg.e2prom_cmd_data     = buf;
    3 p8 p& X/ [' u9 J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / t6 k- S1 c8 w7 [- j9 z6 n- Y
  65.         if (ret != 0) {
    - |2 U  ^* M% c" _/ N7 `$ q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ A& G# `0 @6 q* P1 g  }' s
  67.                 return -1;
    $ @2 N9 S0 G+ W- F
  68.         }- v1 j  |5 d( h' E

  69. . C, X, q4 p6 s2 _
  70.         return 0;) Y/ M; _* o+ @9 R. v0 U
  71. }
    7 B1 t, c5 x6 r0 w" [

  72. 2 g+ o2 p$ w4 C8 H
  73. int main()0 M. `8 s8 w- O* P* S  O. g( R# h' O
  74. {5 b0 s' M  e/ ?5 g5 ~
  75.         char c;" k: j, e6 S" d) D' v: f
  76.         int i, macs[6];
    % R8 |  @5 U( k6 d9 o0 L
  77.         unsigned char mac[6];6 i( H* C) z; j. u* K
  78.         unsigned char stbid[256];
    . A9 c8 `( `! s3 j3 D
  79.   o; U9 b$ m9 l! A8 l
  80.         if (readparam(mac, stbid) < 0)
    * X1 V2 c/ |: I5 d( F' T
  81.                 return 1;% T, z: @( ?& b4 o

  82. " C3 p! v2 n* {- p
  83.         printf("Current parameters: \n");
    % v* f/ S6 l( `$ ~* }' a/ B
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: D& G' t# p+ x+ T5 r! a
  85.         printf("  STBID: %s\n", stbid);
    8 A" R) h- w7 ]% F
  86.         ' ?3 O  j1 P9 ?8 v9 p
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ! r2 `/ M2 |* g8 I9 o. v1 J
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {: t! D2 g  G7 C+ y3 j! t
  89.                 printf("Input MAC error\n");
    ! {: _, [2 T* x4 |: P5 f
  90.                 return 1;1 ^) q- @  k4 F0 K6 A
  91.         }
    6 e: d' {1 n! L" n% A* U4 a2 J# w
  92.         for (i=0; i<6; i++)mac[i] = macs[i];* Z/ ?" ?! h6 A! Y- ]
  93.         printf("\nPlease input new STBID: ");
    + T/ J' K8 m) @. d! ]8 v: [- d( [
  94.         scanf("%s", stbid);/ W# ^$ [3 f1 {, O
  95.         if (strlen(stbid) != 18) {/ v  O: `/ p8 Q) R
  96.                 printf("Invalid stbid\n");: Q( c: q5 ^9 L2 M  L2 s
  97.                 return 1;
    9 i5 l. k1 ]! A! M6 ]" p9 Y
  98.         }( [: v1 d* _! o
  99.         printf("\nNew parameters: \n");2 M4 W& P. \$ s7 ]$ d! I, V& v5 L  K
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " Q8 P8 X# k& X& t7 ]& ]( o6 b' M
  101.         printf("  STBID: %s\n", stbid);; p- Z7 v# E4 r2 p! a! l) J! d

  102. & o0 Z( y4 T" O5 h0 n" |% F, u3 p
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 H+ R3 d; t, k, p! s
  104.         for (;;) {! {( W6 q. V6 k3 A
  105.                 c = getchar();+ F/ V+ z& u5 I9 R& X" @( d- C
  106.                 if (c == 'y' || c == 'Y'), ?  {$ F4 Q+ C
  107.                         break;
    % {& r. n% U0 a, t
  108.                 if (c == 'n' || c == 'N') {7 b1 \% D% @3 @1 z. Z- e# L
  109.                         printf("\nAborted.\n");" A0 z  x2 [: }/ u  ~
  110.                         return 1;
    ; P; H( I7 d4 m
  111.                 }& D7 E. U% r# I2 _$ |
  112.         }
    / i1 t5 x+ o4 Z" I8 V$ o- l
  113.         if (writeparam(mac, stbid) == 0)
    7 j- B, I. d3 L# C8 e+ x
  114.                 printf("Parameters changed.\n");, D0 I- H: T4 F" t( [5 I& [

  115. 3 `0 U1 {* U% n  l! E
  116.         return 0;7 W! v3 V. A5 U0 |
  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 5 _, x4 o4 ~  S3 f3 i
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

% W, S; l+ v& A* e8 a& A你用的编译命令行格式是什么?/ ?8 A! w- i9 C' K4 ^
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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