查看: 16727|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; @0 U5 N% T6 {. n0 R% p" N5 I5 N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 k- R( n! N; [9 q3 k+ V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
/ i0 t% ^5 n0 d1 c' \usage: himr <address> <value>. sample: himr 0x80040000 0x0
) q1 t9 Z( J) \+ n. M8 _! f7 X1 X' [* u4 v+ W, F! H
: q! q7 Y  P0 O% X
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?1 F1 f  K. {7 M+ Z1 X7 J" v

  u! j; l! S$ J! j% w" U5 j补充内容 (2012-3-8 09:42):3 D/ f5 M3 v$ p4 i. G
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数) Y6 P; _3 Z8 K7 {: }  [/ F2 @
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
# M; g  b5 ?: J  h" g
$ S7 H5 T) g: L5 x2 g( j5 ~himr <address> <value>. sample: himr 0x80040000 0x0. D9 t( l. }2 S% u
' \2 _7 P; L6 c! C
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  x2 }2 I4 d" S* [* Q! }! h1 g
himr 0x80040000 0x00
: g9 r/ t0 ?% O! P1 ^1 ~# bhimr 0x80040001 0x11
: H. o+ G' X, w8 J) mhimr 0x80040002 0x22
" ^4 m: |. P; Mhimr 0x80040003 0x33
  {# A! _* J; J# [, M; Y% p: uhimr 0x80040004 0x44# k; L$ p+ H0 v
himr 0x80040005 0x55$ l" V& {2 q1 ~6 j

# m' _5 T2 J. P) _: D. U* }SN也是类似。1 [! n& l8 M; e

& @% Z3 C, ^6 k1 g7 P( q现在主要是,谁告诉我们MAC和SN的地址?$ I  Y7 f+ U/ P; t% N
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
6 P9 b) v  J2 b9 q. U9 i一直想找到运程修改MAC和SN的办法,苦于无解啊
" }6 l; p% s- X
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& p  ?2 a* ]& m. [# q* A7 i" l/ c: |- \
修改的代码早有了。到今天不会编译。. a" m. f: L  Y' ^
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: ^5 y) P5 C8 Q. |9 ^( g8 C2 C6 U
  2. #include <malloc.h>
    # b2 e9 o" b- f/ R" B
  3. #include <sys/types.h>
    ( F- o. s, o- O1 D8 R. s# i. @6 z
  4. #include <sys/stat.h>  s5 |8 o8 ~. ^$ c
  5. #include <sys/ioctl.h>
    : [* x4 d5 q8 \6 m9 k4 F
  6. #include <stdio.h>
    : @2 s& N1 l8 u9 ^4 z, J2 V& t7 k
  7. #include <string.h>
    # z8 X( x# z5 f
  8. 3 Y5 {9 d4 N! q1 T0 j3 q
  9. typedef struct {
    1 u: d! j0 G2 W& T2 e
  10.         unsigned int        e2prom_cmd_sub_addr;+ I5 l* w8 w& e3 A' r% o
  11.         unsigned int        sub_addr_count;" @% y2 Y$ G8 g# Q+ F2 |
  12.         unsigned char*        e2prom_cmd_data;
    - L' S$ n9 `1 _& R0 e' ?
  13.         unsigned int        data_count;
    7 i& Z1 c: s0 U
  14. } e2prom_s_cmd;$ m; n" L# T0 g# W& m

  15. 6 q4 }  J9 E* h! ]" X. C0 b+ c5 @
  16. #define E2PROM_CMD_READ 1+ ~: m6 S7 R$ l3 Z) H' m" F& Z! j( e
  17. #define E2PROM_CMD_WRITE 2) @/ x; ~5 x' R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* c( v# x$ n1 D9 M

  19. ; B; w' W% h; I+ N) \) M
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 F4 C: z/ `+ `
  21. {
    , d$ x3 A9 K8 O4 l
  22.         int fd, ret;
    & x8 {" `: z9 ~
  23.         e2prom_s_cmd arg;
    4 ~* r7 `3 \' ^
  24.         unsigned char buf[0x18];
    ! M  d7 v) d4 T- Y% t
  25. , m9 C! E0 a6 n# Z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);* i+ b0 N/ L' ]3 z: J, h) i! K
  27.         if (fd  < 0) {
    + p* f) g0 [; h( v: I  r
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 y- d/ Z% F5 E, m0 `' d
  29.                 return -1;0 d0 `; \& P; H! J
  30.         }
    1 W; C; P7 o% b9 v9 D
  31.         arg.sub_addr_count      = 2;
    " o$ q4 v# D$ L
  32.         arg.data_count          = 0x18;: d4 J" b. e: D' X
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 Q8 }- J  d# T
  34.         arg.e2prom_cmd_data     = buf;
    5 b# a0 M1 G+ S0 A, i4 }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - L8 Z4 ?* c$ b0 n& f* c% J4 v9 c
  36.         if (ret != 0) {) ?9 U0 G; d. E5 z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * V1 @; D% K; B- T+ }9 E6 l
  38.                 return -1;2 G' {$ K- j/ e
  39.         }6 x' v& C( K1 x7 D- l. S& h
  40.         memcpy(mac, buf, 6);. t/ E! N4 W) G3 b- M) e' U! V( ~' @& W
  41.         memcpy(stbid, &buf[6], 18);+ n7 f! e2 |& _: i3 _
  42.         stbid[18] = '\0';
    . v6 c# b/ V! u! R5 O

  43. 8 y7 s1 t: W7 w
  44.         return 0;
    6 k0 }/ p% v7 r
  45. }
    / C3 K+ P4 I6 Z: U3 K7 u

  46. . r5 t; u* Z# `) r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    " F+ X- }. h1 e1 ?
  48. {
    6 ^/ G8 w4 r* X9 i1 x
  49.         int fd, ret;
    ! Q: H" c" I: I) n* [
  50.         e2prom_s_cmd arg;
    6 U. R1 i) r5 B. X" q
  51.         unsigned char buf[0x18];# f6 T) o" E7 l" i) `

  52. / `5 \# r. u: D4 j
  53.         memcpy(buf, mac, 6);
    ( l4 t5 ?* n2 {" H
  54.         memcpy(&buf[6], stbid, 18);8 Y' ?0 T# E" a. m" N' T$ @6 h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- H! Q5 N8 S5 |$ N
  56.         if (fd  < 0) {# ?) C# E6 a. {. O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: H0 d  B7 W) x# y
  58.                 return -1;
    3 N  w3 h9 H' P
  59.         }' z" Q# w, G0 ?- |8 E1 p. [1 X
  60.         arg.sub_addr_count      = 2;% ^( b* _/ J" ], Y2 v& c+ O+ \6 l
  61.         arg.data_count          = 0x18;0 i+ b9 w! y9 ]* n2 r
  62.         arg.e2prom_cmd_sub_addr = 0x290;) G- Q6 X# ?; M# t: B
  63.         arg.e2prom_cmd_data     = buf;
    , |- y4 M  |! ]/ K; h8 E
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 I9 w; i* u4 w8 k9 h4 x
  65.         if (ret != 0) {5 G. y- e8 T. S5 g. [+ U
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    , i( ~- N# N- @1 V% @
  67.                 return -1;. f* i& ^. h; P/ G$ F2 p
  68.         }. h: ?+ x+ P3 [+ Q
  69. ' F+ u; l1 f- L  G2 C
  70.         return 0;
    ' [3 {* l+ D8 O& U( O5 o
  71. }
    ( L8 f/ G% u; z. g6 O

  72. ( S, z- o# G# k( u8 |
  73. int main()( P9 T( Q) H+ p% p" {: @6 u! u* h
  74. {
    - \) P8 i; O  k% F2 L6 B0 x
  75.         char c;+ e( ~) V: t% }. ~. B: L) G' ~! [7 N
  76.         int i, macs[6];/ @+ a8 ~  ^! U8 A7 g
  77.         unsigned char mac[6];
    9 A" }1 }; ]& g+ O& S. v  c
  78.         unsigned char stbid[256];3 C% e" H8 O9 I" H

  79.   @# a& {1 q8 h) `: K8 [
  80.         if (readparam(mac, stbid) < 0)
    : ?& V  N  ^9 H/ @+ C
  81.                 return 1;! U4 P6 w& R! N0 }  c

  82. $ l0 O9 U1 F, v
  83.         printf("Current parameters: \n");9 d; Y# d1 Q4 _+ R# _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 J8 T1 V0 h& a+ P
  85.         printf("  STBID: %s\n", stbid);9 M5 g8 ~* m& ]
  86.         , ^, E7 q# r5 d. X. ^9 }$ g" z" p
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ! E+ @% n  [6 _3 O9 b. \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" f/ r/ q* {+ |1 K# A/ _2 C. F
  89.                 printf("Input MAC error\n");9 F! I% }2 a$ h
  90.                 return 1;
    7 ]+ G* _( S; u9 R0 D' Z
  91.         }
    + Z: f, r5 |  ]1 r/ J, N6 c$ M
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 ]4 N/ D$ i# P
  93.         printf("\nPlease input new STBID: ");
    ' O! p8 S* j# u  r  ^) p- b
  94.         scanf("%s", stbid);% T, T$ S, N+ e2 _3 u- s+ E4 e( U5 m
  95.         if (strlen(stbid) != 18) {5 H* V% m+ p9 A% C& @0 j$ L( e
  96.                 printf("Invalid stbid\n");, m; Z0 x7 d" ?2 {" d
  97.                 return 1;! L4 {: T& R' P! Q6 R
  98.         }0 y! I* z$ f7 O$ S6 a% g
  99.         printf("\nNew parameters: \n");
    ' G% ~- G" t4 o$ C" P/ i4 S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / F' G4 w% _6 s' U2 l, ~/ y, L0 j
  101.         printf("  STBID: %s\n", stbid);+ L! z9 m, f1 s7 X, ?" }

  102. 4 r- h5 a/ D$ q2 b' }
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    7 d9 r5 c# d6 F5 e
  104.         for (;;) {% h7 M6 x7 N8 C
  105.                 c = getchar();8 c( m& o# h- Z; n* `
  106.                 if (c == 'y' || c == 'Y')3 K8 t. R/ Q( ~; r' N' A
  107.                         break;
    2 R  J% ^; h: q
  108.                 if (c == 'n' || c == 'N') {+ }" K8 l6 Q* t( V  F# r! c/ ^
  109.                         printf("\nAborted.\n");
    / h2 ^9 i/ t) |* \. p
  110.                         return 1;
    1 q8 {" J  c. d7 J
  111.                 }
    - x0 S/ |5 B. v& E* {6 X
  112.         }
    - @& j9 W0 p" k+ l* G: Z+ N
  113.         if (writeparam(mac, stbid) == 0)
    / m3 @: u$ }6 C( @7 t
  114.                 printf("Parameters changed.\n");
    # e% b# L" z7 Z$ b; p

  115. 2 m* A( ]! W, G7 G
  116.         return 0;
    % S- P5 f  A2 i, F
  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 ' ]4 l; n, V: {* [$ ~. m
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 _0 d( C  ]6 K6 ?5 k你用的编译命令行格式是什么?" A8 ]2 t, c6 }" e# W
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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