查看: 15894|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr+ E, g3 j) ~+ K5 }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    8 n' H7 {/ B" r" |6 |
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 y! e, Y! m% T4 C# @* A# v
usage: himr <address> <value>. sample: himr 0x80040000 0x0* A0 i) _( M8 U4 q+ b- n$ E! O( k
7 U3 i2 R) ~% T

; f: X; u( H6 [/ g不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?/ j5 H: X+ o/ ^7 @
) @7 u1 q& m5 c; h+ H
补充内容 (2012-3-8 09:42):4 s9 e. _, e8 i! \7 H+ k5 m3 D8 z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
& J# G$ ^( T( l3 h这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。8 Z6 \7 `8 T' k4 h$ K" k. T& D

* [  i  C4 }8 M9 V5 V+ V+ }  z) Z' \himr <address> <value>. sample: himr 0x80040000 0x0# m% E) B2 }$ o# y- x6 O
1 C) R" m! }" p6 a
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* z! P! \% w- U5 |
himr 0x80040000 0x00, ?) f0 U8 z0 Y' z. j0 T9 u
himr 0x80040001 0x11
( C# l& y: x0 O) R  C" zhimr 0x80040002 0x22
9 m2 I& q& x* x2 Qhimr 0x80040003 0x33
& g+ T7 N' m# f3 ghimr 0x80040004 0x44
4 G7 ^3 j+ n- f8 b4 I" @himr 0x80040005 0x552 s% J5 A" j: ?6 |
1 |% n$ [3 f5 N+ o
SN也是类似。
  T2 p* k7 b* P* u& J! M
( K+ N, O! r  P现在主要是,谁告诉我们MAC和SN的地址?
0 k8 O, ?) |' ]. ~5 r* p3 `
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
) f7 f" I3 X9 m" }+ y3 Y% ^+ A一直想找到运程修改MAC和SN的办法,苦于无解啊
' i! A3 n# t! e6 c
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
+ ?  B' V8 l" q# s6 X7 f; \( Y1 R+ B$ ~: Z: R4 p; A8 `5 K
修改的代码早有了。到今天不会编译。
3 P/ X8 r1 N2 B5 D+ J! ?) I% U6 U需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" b" F0 h7 \& r
  2. #include <malloc.h>
    ' K# H0 ^1 Z6 g$ h
  3. #include <sys/types.h>5 t2 z3 X) C1 [3 y) L+ e
  4. #include <sys/stat.h>/ v2 w; W9 _5 U& D6 P: O9 Z' V# c6 Z' S6 G
  5. #include <sys/ioctl.h>
    5 I* D$ c2 N2 X0 X0 R
  6. #include <stdio.h>- i4 o* R; V' H' o
  7. #include <string.h>, q$ `- _8 N1 [9 ^
  8. $ F/ v/ e! ~# G7 d
  9. typedef struct {
    , `+ V$ I8 K, h1 \9 n5 Z5 q
  10.         unsigned int        e2prom_cmd_sub_addr;
    3 i2 ]7 A% P: j& ~  [7 o
  11.         unsigned int        sub_addr_count;/ i6 o# f4 a0 `; L/ H3 T
  12.         unsigned char*        e2prom_cmd_data;7 M6 t6 |4 u0 E6 P
  13.         unsigned int        data_count;$ ^* F' l2 @; h, D. K
  14. } e2prom_s_cmd;/ {' y( O: K) j0 C9 {% T. v
  15. , M! z& p* W7 g
  16. #define E2PROM_CMD_READ 1) E$ w) C1 J' o# u9 X
  17. #define E2PROM_CMD_WRITE 2* w0 @+ M1 h( z* y/ A1 q) i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ! k+ f/ F* T% c5 H% N4 x7 ]
  19. + Y* `+ N0 E3 G) @# ^: X; B
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 p2 v: }, |# O; k
  21. {
    ( b. Z$ @! A) l" q5 g% n7 m
  22.         int fd, ret;
    ) v4 p, K# `/ z% ?* V4 x: f3 I
  23.         e2prom_s_cmd arg;
    & E. V2 i9 r, I3 o6 i- A& }
  24.         unsigned char buf[0x18];
    6 n& a# m% F9 W+ l  \( Y

  25. : S; M+ {* A/ J# g# p0 T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % h+ J5 ?, u( D+ P- ]. Y. P5 }/ |
  27.         if (fd  < 0) {/ M7 E8 U, M5 s$ S
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 A6 }9 G3 G1 G0 ~) P% \
  29.                 return -1;
    % o- u3 Y3 V( g9 E* w# p0 M: w
  30.         }" p1 ~' J0 _9 e  T) A
  31.         arg.sub_addr_count      = 2;
    ' k' T# C) M: t: S8 H
  32.         arg.data_count          = 0x18;
    . y3 Z/ K+ K( d$ U' ~1 f/ \; c
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 x7 R- [$ l$ @1 a8 [
  34.         arg.e2prom_cmd_data     = buf;
    , g, X7 f/ y* U! w. \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);- N0 r6 @7 z9 H
  36.         if (ret != 0) {
    , G0 u9 S% w* K4 e
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - J! I" P  b8 s# f# @
  38.                 return -1;
    & `0 {/ w0 e0 c; I7 W/ u1 L$ Z
  39.         }* T9 Z2 }& ^: R+ G* v$ A5 `
  40.         memcpy(mac, buf, 6);
    ' e5 ?. Q8 S! L8 g0 Y
  41.         memcpy(stbid, &buf[6], 18);
    / _! ?4 H" g/ Z: ], T+ D
  42.         stbid[18] = '\0';) H( Y# j3 [$ N3 c1 ?$ w

  43. & B: A- F# x* V3 y( l
  44.         return 0;6 y8 g* i& U. Z9 @
  45. }# ?# D; R! U2 \2 W) Z8 o) k- f
  46. 0 Q/ F. {6 S3 w' U
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 E  Q# u4 {1 e; |( [3 i0 f
  48. {
    0 M8 e7 N5 w9 r, f: E
  49.         int fd, ret;  s6 s' O5 R8 f* ?+ o8 V9 ?% `2 C
  50.         e2prom_s_cmd arg;+ j* D6 J7 E# D. F" A* n
  51.         unsigned char buf[0x18];
    $ H" E8 C7 V0 V$ p
  52. , Q( P  U8 }1 h* v# {
  53.         memcpy(buf, mac, 6);5 X/ [( \) b, v5 e8 H. w
  54.         memcpy(&buf[6], stbid, 18);
    : D! `' J  ]; `4 s+ u
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 Y0 P" F) x6 L* H& N, V6 Z
  56.         if (fd  < 0) {
    - k/ @! }  d' [* [3 F
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ u. Y& ~/ m3 h& i9 P! k4 s
  58.                 return -1;
    8 c) M# n1 h6 T
  59.         }
    ; }) N& j( y% C: K8 Y8 d) o; U
  60.         arg.sub_addr_count      = 2;
    ( S$ I' o. w( i7 F
  61.         arg.data_count          = 0x18;$ C: _1 X9 ]( c- d
  62.         arg.e2prom_cmd_sub_addr = 0x290;; O7 K1 P( \! Q# _2 Z& g
  63.         arg.e2prom_cmd_data     = buf;
    & o) n6 X6 @5 V- q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . v$ o" a# l) P) S5 @) C
  65.         if (ret != 0) {
      O2 k( u" f6 c* u6 f
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    & D7 \  u) R- w4 r' Z& V, m! \
  67.                 return -1;
      Y# w, E0 H* W
  68.         }
      @5 U; F" K; R* S! o/ X
  69. , Z7 |& x" J* J9 x- Z6 l# M- T
  70.         return 0;  S2 ]1 ~2 A8 H
  71. }$ S+ A/ U( g/ H4 c% v) ^2 M5 m
  72. 5 ^" E0 T$ U7 i
  73. int main()% U( F2 ^8 `4 \8 ]! n% z6 i
  74. {: c6 t9 p* b( S5 @
  75.         char c;6 o' j2 P  j# r2 p
  76.         int i, macs[6];
    7 {+ c% c- ^: S
  77.         unsigned char mac[6];
    3 q( ]  D9 S0 ?- O5 q5 R+ q9 Z
  78.         unsigned char stbid[256];
      J8 S2 D5 c" b6 M
  79. ) m* G) J. N: v$ N5 m9 N2 U
  80.         if (readparam(mac, stbid) < 0)% }$ x( [0 T1 t3 ]
  81.                 return 1;
    * j2 }" j* L9 j/ w& T
  82. & P3 x" m9 M& g7 q/ D& m: b
  83.         printf("Current parameters: \n");
    9 i" c/ Y! F" p/ \% ]3 q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      T* L1 K7 n' z+ U! ?: c7 h$ `
  85.         printf("  STBID: %s\n", stbid);
    ' N3 @! @9 d0 Y: y* x8 p
  86.         # s0 v* |3 o; l7 p
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");* p: ]( j- r( @# `. x/ {0 Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 `/ Q, p2 x( w' |# \1 @
  89.                 printf("Input MAC error\n");
    2 E" R8 A5 `" o/ u) `
  90.                 return 1;
    7 d" a2 u8 k% U! @) Z. X' a
  91.         }
    - {5 a0 k5 p! L) A! j2 M0 N
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' N. L2 N6 N9 k( d* i  }: o2 j
  93.         printf("\nPlease input new STBID: ");
    $ A( j; Q2 C, M" S5 h/ o3 L
  94.         scanf("%s", stbid);, {' m7 H( x/ W/ A7 w" I& c: v
  95.         if (strlen(stbid) != 18) {
    # f. V. a4 c) Y
  96.                 printf("Invalid stbid\n");9 c; N, f, C4 T5 A9 P' N0 N
  97.                 return 1;, w# I& @6 T6 a0 M: B9 k
  98.         }
    8 R+ m. K' N/ Q# }- Z& O+ }# U* f" |
  99.         printf("\nNew parameters: \n");/ G, |5 f* s4 m
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# A" D+ p* h- }# Q  M' D7 a
  101.         printf("  STBID: %s\n", stbid);% H$ t( r0 \0 ?* d' h# N/ Y- L2 K
  102. . S+ L  ]  v/ ~2 M
  103.         printf("\nDo you want to change paramemters? (y/N) ");! W/ Y9 V. V+ Z7 }' Z: {9 v, x' r" C
  104.         for (;;) {
    6 I8 j! W- A# k, m2 U
  105.                 c = getchar();
    5 N1 B, p2 A: T, K: L) U9 o2 a- w
  106.                 if (c == 'y' || c == 'Y')& x( r) b" `5 `' ?! q( m. ]6 K
  107.                         break;
    1 Z& [- Y7 w) T! A. H9 O5 A* p
  108.                 if (c == 'n' || c == 'N') {7 K! P7 j5 x) v" c( z! u
  109.                         printf("\nAborted.\n");
    & Y- Y+ d0 _! F0 q
  110.                         return 1;! f5 ]) b7 J0 m1 W, l, v6 ?
  111.                 }
    ' L! L. W/ r% B$ Z6 c6 o$ ]
  112.         }
    8 H" |- e+ A6 f9 K  K
  113.         if (writeparam(mac, stbid) == 0)
    5 f" f5 ^1 y* |
  114.                 printf("Parameters changed.\n");
    # H& \0 n2 N( q" T6 h6 |4 X. G
  115. ) |" l9 h% g9 @( Z9 N
  116.         return 0;
    / W) r2 a$ P& v  m. f% B8 s7 a
  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
" F" t0 u/ O" v9 ~3 y在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 x: K# `2 A. ]4 e
你用的编译命令行格式是什么?8 |- p% v  D. ^8 g
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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