查看: 16701|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , k; }0 p" _; D! v" g- x5 Y# R
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 W6 Q$ ]  @# N7 O1 n' L( K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 ]8 ?7 g+ z: S0 n! m7 }: Gusage: himr <address> <value>. sample: himr 0x80040000 0x0
7 A; }$ H% T9 \
0 P& H* ?$ ]; ~, }; x; {2 I! D8 j' P9 c% C% q9 g, J
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 G2 U! U# K# z2 W( j
$ o* M. t5 y, W7 i8 x( @
补充内容 (2012-3-8 09:42):! I( `; r6 a: Q  m; l9 m6 C0 `
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数3 c, |* c8 {' U2 I8 ?) ?
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 X0 [& |: m$ ^! W  a8 i8 B) R" S5 r4 @: [
himr <address> <value>. sample: himr 0x80040000 0x0! L  ~! ]% S- W0 I4 Y2 P, N+ v

, {8 u+ l) v3 j* i" }4 w: J$ M% X! r例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* z2 ]9 S4 ?% _* Q9 ~  B& H7 v
himr 0x80040000 0x00" [! T8 A- I4 B% a
himr 0x80040001 0x11' `9 V# i- s5 G
himr 0x80040002 0x22
+ R$ t$ d. q, D- F9 u# Fhimr 0x80040003 0x33
. M8 X  I. l9 N* i2 Q" G% dhimr 0x80040004 0x443 g2 U" h% \1 s  K8 S
himr 0x80040005 0x553 [; t) D) y: z* l& l, f/ J

& h' U% A5 C; @' F! ^SN也是类似。
# B$ E$ N4 y2 u; g" y% O" d8 r
5 O& t# X5 M+ }. }4 U现在主要是,谁告诉我们MAC和SN的地址?' V) m: f$ x' i0 f6 f5 Y; Q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 x6 h- N- C, E0 v一直想找到运程修改MAC和SN的办法,苦于无解啊

6 Q2 R# o. u0 j+ M( g" V3 [; m源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 6 D; O2 }( C0 I* o& M

; Z/ ]2 `: W4 [" m1 S% J2 l! e* o0 b修改的代码早有了。到今天不会编译。
% p; H. B; R- _+ l2 b3 f/ t2 C需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    : M! c( X" Q' e, i) i1 ~' [9 U
  2. #include <malloc.h>
    7 J: D& u0 g1 E4 W& }
  3. #include <sys/types.h>
    : R3 I; A8 u  e8 S9 c7 A
  4. #include <sys/stat.h>
    " w! ]9 ?3 U) ]& T' i
  5. #include <sys/ioctl.h>: N% u6 h2 F& E% n% q. c+ F+ x
  6. #include <stdio.h>/ t4 q2 O$ P, y+ v* w! Z. x- k
  7. #include <string.h>( ~7 L, G" x7 @0 e
  8. ; G4 K# n. P5 v. t  m# i$ G
  9. typedef struct {6 q" V$ D4 B( i
  10.         unsigned int        e2prom_cmd_sub_addr;! H) w! h7 {; W4 z* \$ y
  11.         unsigned int        sub_addr_count;
    9 e- s9 f( N( r( s$ D6 r9 ?. F
  12.         unsigned char*        e2prom_cmd_data;$ j! L8 _2 v+ \2 Q
  13.         unsigned int        data_count;& P1 P2 l+ U: _4 F- N! n+ E$ p
  14. } e2prom_s_cmd;
    4 X5 S( v. O$ y* x4 c
  15. 5 k: h3 }3 ]3 T5 R8 S
  16. #define E2PROM_CMD_READ 1' U; j( f/ P1 J0 P( ~9 H" r
  17. #define E2PROM_CMD_WRITE 2* Q! Z' ^; C0 h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* k& Q" @' U8 Q" n! h

  19. & u& i6 j7 M) u
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : p- `8 A2 ?. {: m" O9 O
  21. {( w$ Y/ G4 r( b
  22.         int fd, ret;
    . A; U: `3 ^8 C% V. J
  23.         e2prom_s_cmd arg;
    & Y% o+ @9 b# J
  24.         unsigned char buf[0x18];
    ; {8 K! X. ^, D2 W0 a, U- k5 Y
  25. : C* D: U0 G: D8 y  l' g6 |
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 D% G7 |. M! E, O# |3 D( B0 X
  27.         if (fd  < 0) {
    1 z+ b/ O. [$ g* t3 T: s+ g( Y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - N6 i8 M* p2 t7 z9 `4 E4 I- r1 V
  29.                 return -1;
    + h1 u! U! r9 U8 B4 ?. k
  30.         }$ D- F% M# O7 j$ F
  31.         arg.sub_addr_count      = 2;
    # G" _2 X' i  S* s. q2 t! K
  32.         arg.data_count          = 0x18;- X0 _2 t& |0 [; _" T9 W
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 P3 }$ C- g- X3 x- {0 P  P5 C
  34.         arg.e2prom_cmd_data     = buf;
    9 x/ J) q4 h5 ]3 b
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);6 {+ o1 g3 P) k$ b
  36.         if (ret != 0) {
    , A' S1 P9 E! v' _6 a) k) K
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; F5 p, M6 x9 A1 }
  38.                 return -1;
    % S3 g# S- ?5 s8 J" Y, ~3 ^+ ~
  39.         }
    ' Z+ r# v6 h' U) b+ a2 D
  40.         memcpy(mac, buf, 6);
    7 Q9 e. e6 z) g- v
  41.         memcpy(stbid, &buf[6], 18);% T8 }# h9 ~; t" P$ B& P5 L
  42.         stbid[18] = '\0';5 t, n+ M4 U! u2 C* S9 k. l2 E

  43. 7 S0 }( }9 d# g1 {1 X) M
  44.         return 0;
    8 o, k7 a) d" Q. U# u) U7 y
  45. }
    1 Q% [, ]/ S, C% R3 b" |% P% ?

  46. ( ~9 S+ b& W0 h
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - H" g% P8 f1 A
  48. {
    % ?& g& P( G: l  c6 t9 M- S, l8 [
  49.         int fd, ret;
    9 \/ V- s  {+ V. J/ S& D/ V6 k
  50.         e2prom_s_cmd arg;
    : R0 Q( [$ Z) e! r1 l+ }5 }
  51.         unsigned char buf[0x18];
    4 c; S% n: p+ M( ~+ B% h

  52. 6 j; u! G2 L6 p& s
  53.         memcpy(buf, mac, 6);% n7 D6 k3 j4 X' x: C- O) q
  54.         memcpy(&buf[6], stbid, 18);
    4 V9 |8 Y' f% g0 t% a4 y+ D
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- T; A% ^+ d3 N' t. z! \& L- {
  56.         if (fd  < 0) {4 ^( z; I( R% z) N5 h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * f* S9 \5 R( e- x  s
  58.                 return -1;
      i* K8 i- ~$ m# F- {) P
  59.         }0 q' j/ V3 O7 i2 b6 e
  60.         arg.sub_addr_count      = 2;* ?/ i- ]" x8 U5 \* Q, t' u: |
  61.         arg.data_count          = 0x18;
    1 m1 p; @4 M1 r# ~# U
  62.         arg.e2prom_cmd_sub_addr = 0x290;" h' r3 S; m! D8 \' h1 Y8 E
  63.         arg.e2prom_cmd_data     = buf;4 z3 m: ]  x; {+ \4 S" s, `
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' t! o0 ^- T8 d
  65.         if (ret != 0) {' m1 j; x, k% I* S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! r3 L! X1 M5 `" e( O
  67.                 return -1;
    ! X4 l5 m6 h) f1 \4 k: Q2 e
  68.         }$ g9 Q( L7 p) ^3 [2 q5 v9 K$ j; x
  69. ! m: [, P! ]2 h# c1 Z( v
  70.         return 0;
    * e5 n" P- d5 W- C- V) X
  71. }6 M, |& B# k2 b6 P( ~

  72. 5 V- A+ ^2 Q  s. k; g, [* |2 K. `
  73. int main()
    % b# u; r& p9 A+ ~, c! p
  74. {
    " I# \& Q2 `& ^, U- p) K
  75.         char c;4 m# C4 f0 j- q$ F- H4 B
  76.         int i, macs[6];% f- S2 H5 F; v* n. }: K1 b
  77.         unsigned char mac[6];5 Q+ e/ V, A/ B* H. o" ]
  78.         unsigned char stbid[256];
    ' x4 w) }5 p# i3 {; O. [6 M  E
  79. & o; m4 Q. l7 x' _0 u
  80.         if (readparam(mac, stbid) < 0); _" ]3 U- P, Z: ~& y
  81.                 return 1;1 ^2 i' `0 k  S4 W
  82. ' B; |: E) y7 d! F$ n
  83.         printf("Current parameters: \n");
    ! n' p1 g& W/ I) r
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & n% L8 {2 p; t- m
  85.         printf("  STBID: %s\n", stbid);
    0 k8 R) H! z# b! I! i' L+ k- q
  86.         : B% u6 Q9 j. c+ i4 W, }6 |4 J
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 u1 S  S1 \6 ]- M8 C5 x
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; y* ~" |  o+ E7 {9 v: t
  89.                 printf("Input MAC error\n");) T" ?' U+ C; h. w, y1 {
  90.                 return 1;5 \8 r& g2 M" h) I( p
  91.         }
    $ ~* X' y9 S: W5 e; S) C
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    5 C7 p/ F- }# o  m( M- }, |
  93.         printf("\nPlease input new STBID: ");
    & V9 ?. i4 z* N
  94.         scanf("%s", stbid);
    ! w+ y2 w9 T( A* z5 H
  95.         if (strlen(stbid) != 18) {$ z$ ^& O, r3 \  I  [7 V! Z
  96.                 printf("Invalid stbid\n");
    % w& b* C$ m  M) l8 {
  97.                 return 1;
    " a( e6 t7 X+ Z  V- Q' {- H: b; H* n
  98.         }
    6 `  L3 `  @: O5 C% j2 C9 t. u7 L
  99.         printf("\nNew parameters: \n");
    $ u$ B+ p7 g% O0 ~% L: R! w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & p6 ^" Y3 ~( s
  101.         printf("  STBID: %s\n", stbid);
    . g& j% T# X! ?

  102. # ^% U9 d2 W6 H
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      |4 P0 q7 u) x" ]8 t; ^7 |% l
  104.         for (;;) {" F' D+ w( Y* `- \1 D
  105.                 c = getchar();
    / l- G# i/ v2 U! X2 l, N
  106.                 if (c == 'y' || c == 'Y')
    1 S, `. J2 m% f! R  @& h
  107.                         break;
    2 l# u, M' R3 o1 n9 r9 S/ P9 `
  108.                 if (c == 'n' || c == 'N') {
    ) d: ]. ^8 P% A& U2 m) h
  109.                         printf("\nAborted.\n");5 A6 T3 u1 D) r5 w( N7 G  n6 N2 O
  110.                         return 1;
    8 L% c3 }: x& P
  111.                 }; g5 c5 j# X" g% x2 O& l' v
  112.         }+ c4 ~7 m4 f. v" R. K& b6 v4 m$ K
  113.         if (writeparam(mac, stbid) == 0)
    * D  H  j0 [2 M# g! M6 p- R
  114.                 printf("Parameters changed.\n");
    . }% i8 M7 `0 E0 }9 r8 X

  115. ! Q$ c; {: c1 ^- N  M3 t* Y) x
  116.         return 0;& P7 f  }6 v* j, X6 k2 E% t+ B
  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 [& ]1 s& a8 o4 @
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' ?3 ?; r; o9 F# d6 n  j4 |* i, v2 p
你用的编译命令行格式是什么?
1 e8 H# H8 G" }) M+ c0 G$ c
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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