查看: 16211|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 u, J4 w! s! I, J$ w
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 ]" m! T9 d  Q, l) J; z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' f- `. \9 m& |9 I2 ]& Y- A( A9 b
usage: himr <address> <value>. sample: himr 0x80040000 0x0
* s$ s, u+ g) ~5 C* O( q9 `6 m% Y
$ c$ G; l; w0 A  A( P8 _: @( a3 _! A* T# [
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' g3 Q* f- j% y0 x' P

; M1 {& H: a5 K7 _% ~1 B补充内容 (2012-3-8 09:42):9 P+ M0 G- C1 ?# Q* l5 K9 T
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 r# }$ O. y3 C4 q8 p
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
9 D$ G! g$ S& j: U; L: t2 i( F+ Q  M) {/ f! a6 X& g
himr <address> <value>. sample: himr 0x80040000 0x0
: @/ H" u6 A7 z& n" W
( j( n! w# ~" E8 Q6 K* Q( |例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- t8 @0 o7 j& U4 c1 _9 @9 ghimr 0x80040000 0x00
  w' W2 I& H$ z1 h6 V4 Ihimr 0x80040001 0x115 z9 B! S( y3 S- s2 O% d3 N
himr 0x80040002 0x22
% W( {6 t2 ~) ohimr 0x80040003 0x33
# z7 Z; W8 T; U9 P2 o$ Yhimr 0x80040004 0x44) v* Q) {4 X/ p& [5 j, C3 S* k/ ^
himr 0x80040005 0x55
* L1 m. t' W- Q4 J: x2 b) A1 x
1 P2 I6 _/ P. I  G  p8 A- wSN也是类似。3 @7 b" W4 W! G0 @) r; O- a

. K. G  @4 \1 s1 l& ?+ p; V1 A现在主要是,谁告诉我们MAC和SN的地址?
* y' }. j5 {8 l+ @: M
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 3 J+ B: `& Q8 t9 l( }
一直想找到运程修改MAC和SN的办法,苦于无解啊

5 P, \  X4 A/ N$ `/ w源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% t! U. j% K' @+ ~2 I" t0 c& m7 o; e
修改的代码早有了。到今天不会编译。
$ p4 W. a- y8 b- @( {/ w7 m( b2 J6 Y需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* b9 }  h& I# x6 V! \
  2. #include <malloc.h>' e. ]! L' g( H4 P# r
  3. #include <sys/types.h>; Q( o) x1 H8 B* o# h& ~# S) e) R& c
  4. #include <sys/stat.h>
    ; p+ i! V1 G- \: E4 }1 Q$ _
  5. #include <sys/ioctl.h>7 ^! ~8 Q& u0 v. J% g# \1 U
  6. #include <stdio.h>
    ) S! u8 i- l1 Z" d7 D* U0 _& x
  7. #include <string.h>5 l, Q' H& c/ v1 L5 m
  8. & N7 C, @! a$ o6 X# c
  9. typedef struct {
    0 T" t$ z/ H6 p( E) f: z" m1 C  O
  10.         unsigned int        e2prom_cmd_sub_addr;
    ( w4 H. p, K! l
  11.         unsigned int        sub_addr_count;
    ' ^+ h- m6 O$ h! ]$ {& k1 m
  12.         unsigned char*        e2prom_cmd_data;
    ' n; b" M1 z$ j$ k) M& o  c8 u
  13.         unsigned int        data_count;( c, X2 ^% X# ]
  14. } e2prom_s_cmd;9 {$ X4 A; ~' Q& G& b( k6 [
  15. ' t" M- p/ `6 C+ d* x
  16. #define E2PROM_CMD_READ 1
    % x- w  g' j4 v, K# P3 [: O
  17. #define E2PROM_CMD_WRITE 2
    0 v: J8 k4 j; ?5 }/ l; ^. y, e
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", ^0 k6 R# d1 h4 l$ ?; `

  19. & N3 J% p" `" j0 i  H& F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ; ?8 G! y% z" J8 J; z9 o) F
  21. {
    # D! Z! {  U% s: O% B
  22.         int fd, ret;
    ( [, K: p3 S  A  Y. v! D
  23.         e2prom_s_cmd arg;# U3 a1 |* f& p5 n/ d* g$ K5 y
  24.         unsigned char buf[0x18];
    " Z  b' z7 a4 \- L9 Z9 }
  25. , h% J1 D# p: N$ Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " ]& F4 W' x2 f& B/ P) T
  27.         if (fd  < 0) {! y" W2 ?- [, f$ v/ V  \( B( Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);, ^+ {0 \0 |9 i! o/ \
  29.                 return -1;, q: q' `. u3 v$ b
  30.         }+ C0 I/ j: ?0 n& P' F- r& v
  31.         arg.sub_addr_count      = 2;- G/ f( t- H# F, X/ y) I- y( ^' o
  32.         arg.data_count          = 0x18;0 V" o" I4 [" ^( ]9 ]5 R, t
  33.         arg.e2prom_cmd_sub_addr = 0x290;) s( c( z& ]# T7 m4 Y
  34.         arg.e2prom_cmd_data     = buf;
    2 w9 r; d" f2 v4 S9 }. f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. y& U2 ^- b0 Z2 l) x0 ?
  36.         if (ret != 0) {& p+ \' P# Z& m  O# L/ c1 Q  z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    6 N3 Y* s3 A& n$ U9 t7 l
  38.                 return -1;
    2 V' n, X6 W  y  d$ P
  39.         }( R, W0 i. t+ R1 U' D: h
  40.         memcpy(mac, buf, 6);
    & j! G$ \1 d0 @6 r# A
  41.         memcpy(stbid, &buf[6], 18);/ p1 h( z- Z! A1 E
  42.         stbid[18] = '\0';
    + O, W6 H# n. p: [( E0 E

  43. ! q/ ?+ M1 E) Z+ r! G/ \
  44.         return 0;1 A1 l% p$ {' |' Q1 x+ }; Y
  45. }: T' f& x7 F& [

  46. ; |2 U6 m* ^' j  j9 y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% b. F* E+ o2 b4 B$ e: u/ C
  48. {3 t' }' P0 i4 h! \+ X/ M! ?
  49.         int fd, ret;' v1 ?4 N- q+ t
  50.         e2prom_s_cmd arg;
    + [, P4 Q/ Y# z6 {6 S7 |
  51.         unsigned char buf[0x18];2 U# i$ s0 `3 w8 p

  52. # b+ X0 r3 ~6 \& r" F# m/ D
  53.         memcpy(buf, mac, 6);; N, r, A, I: v# V! L8 B0 }
  54.         memcpy(&buf[6], stbid, 18);
    + {3 Y* {7 {/ \' l4 ~5 O" @
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# E: I# ?% n1 P- ]; k, w# n
  56.         if (fd  < 0) {3 l$ k( ^3 H  k8 Z0 {# I" [
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - H" W- L( \% ?6 Y6 M, V
  58.                 return -1;# s2 f  F0 r0 |' z- l7 C. Z2 Y3 @3 i3 K
  59.         }
    * O" u: w+ Z" G! O8 k' r/ }  F
  60.         arg.sub_addr_count      = 2;5 S* }2 F2 W' A6 q4 l9 j5 E
  61.         arg.data_count          = 0x18;
    6 w6 s$ a. A. M2 u3 O
  62.         arg.e2prom_cmd_sub_addr = 0x290;, t9 V  V0 O4 b& J2 }5 D* v" Q
  63.         arg.e2prom_cmd_data     = buf;
    / F8 U9 g  c7 I
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);! C  ?! I* d9 |7 k4 o
  65.         if (ret != 0) {1 D7 I0 Y8 a! y6 x6 u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 F) i% z8 `: ~5 e& @$ O
  67.                 return -1;( q5 Q, G* d/ b6 b
  68.         }8 M  `: p) ?8 r- p7 f8 `* ]; i/ `

  69. . F9 T8 J  K. R8 j  Y8 Q
  70.         return 0;
    7 \8 ]" j0 J- y: Z3 _0 K
  71. }% X1 U' I' s& M2 d. k) M
  72. 8 h2 b6 ]" p4 {. ]; D$ K  i
  73. int main()  u, ^5 j/ E3 d
  74. {6 M4 e6 ~3 ?1 D, ?! t
  75.         char c;
    ( q: K8 |  e9 ~5 v
  76.         int i, macs[6];
    9 P: t) Q5 k( t
  77.         unsigned char mac[6];
    ) q0 w  R, H( s3 h/ E
  78.         unsigned char stbid[256];
    ; w4 f; @/ |, e) i6 c$ g5 t

  79. 2 U/ ^7 ?/ t6 d$ F$ C
  80.         if (readparam(mac, stbid) < 0)/ h' j% {: ~9 G( Y$ q2 F
  81.                 return 1;! w: g0 o; C$ n7 F# N: C2 y7 i& o
  82. 4 b, A7 l& b! d! \' W, i- A/ ?
  83.         printf("Current parameters: \n");+ f; Y6 Q( C4 H3 n. ^- J
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / N1 A; u: G4 T6 l! a. Q9 k& b
  85.         printf("  STBID: %s\n", stbid);; M! x  s" t* S+ u8 D" G
  86.        
    ( O  F# P7 |/ ]# {1 _9 F6 [0 G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      y. k1 E1 b. a1 S+ \( f" k* w: }
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 Y6 E1 A- W( v/ N4 V" _, T6 o1 c
  89.                 printf("Input MAC error\n");: m: F6 C9 _5 ?2 W7 ?7 O7 p" w
  90.                 return 1;9 M) x; N4 L5 L
  91.         }
    3 R/ v# i; f/ @1 ?' U0 \+ v
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 M( |+ Z0 h3 b2 |
  93.         printf("\nPlease input new STBID: ");
    , w, A7 C4 B8 {6 {3 t. K) H1 v
  94.         scanf("%s", stbid);
    $ C! K8 W0 P7 T9 E* @
  95.         if (strlen(stbid) != 18) {
    ; o" v: j: `  {; ~% r2 k5 u
  96.                 printf("Invalid stbid\n");
    ) g3 O5 ^- i1 A$ h/ k, |
  97.                 return 1;! _4 R) w5 o3 s! N
  98.         }! r2 V- s" y! p2 q
  99.         printf("\nNew parameters: \n");0 i; y* y- A- B) d  b& A: i' L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 M, B/ H8 k* a
  101.         printf("  STBID: %s\n", stbid);
    8 G0 q. w3 O/ Y* x
  102.   G$ b1 |; A  l- }6 g7 M: i/ ?
  103.         printf("\nDo you want to change paramemters? (y/N) ");' z4 R/ X* w2 r& V7 c8 y
  104.         for (;;) {
    6 D- V. D: J; s% U: a, ?1 K
  105.                 c = getchar();
    ' g8 J7 [  C: q6 W# f4 H
  106.                 if (c == 'y' || c == 'Y')9 }1 q" ]5 G, q# v* R
  107.                         break;- }# B) F' r8 J8 w7 W
  108.                 if (c == 'n' || c == 'N') {
    4 X' {, o9 _" b$ p: o6 v
  109.                         printf("\nAborted.\n");4 |9 V% c; ^  Z6 X$ `$ |
  110.                         return 1;
    ; Q/ T' g9 u% t/ H
  111.                 }
    3 b3 @8 n- A9 w' n! J6 D5 z
  112.         }
    7 E. r% M% c$ h2 ]9 @/ j
  113.         if (writeparam(mac, stbid) == 0) " B6 j( |3 f/ N+ ^% s) e. f
  114.                 printf("Parameters changed.\n");$ [# _! c/ o( X' F
  115. . E5 \$ P1 H: }( o9 G5 i% j
  116.         return 0;
    " @0 V; D5 s" W) s  t8 r8 u" `/ g
  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 p6 _+ S# J* w在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( A0 M' Q6 ?: l( V/ J2 `你用的编译命令行格式是什么?
8 _% @) w4 c0 `
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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