查看: 16365|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    0 ~% P! q( ?$ k( p
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig0 W$ D( s% F. B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 w5 c7 ~  `- C9 \4 c" k
usage: himr <address> <value>. sample: himr 0x80040000 0x0
9 M" ~/ N. _+ [8 _1 r
! I8 `" d" j* M
* [1 N( A" A# f" O1 J不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" W# z9 j5 _) u! k& m/ P
0 ?6 z: `0 |$ }
补充内容 (2012-3-8 09:42):" O% }7 k/ h+ `5 {# z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" [) Q% W; e) |7 F* }4 k% L这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
+ B! U( p4 Z! p
7 }: t6 A% m( dhimr <address> <value>. sample: himr 0x80040000 0x05 i3 [, a% s8 v' ^0 W

6 {8 a- o( e* E7 _/ V例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, u2 d* v% e" z
himr 0x80040000 0x00
+ A8 t* `/ X6 p7 v% hhimr 0x80040001 0x11
# j- n! a+ f8 U% h9 C8 v. e0 k4 phimr 0x80040002 0x22
: W" }) s0 s8 [2 @4 Q! [: {himr 0x80040003 0x33
* F, u' h1 z  t% Mhimr 0x80040004 0x44
. `: l% R* B& R2 O8 r: B$ fhimr 0x80040005 0x553 T* x5 v3 j' b
& e) \' @3 ]! m/ E5 a
SN也是类似。. I  ~; w( L$ y  V( o+ w

: T0 r$ t3 @/ W. w0 Y现在主要是,谁告诉我们MAC和SN的地址?' C% v/ l( l- B+ a$ E
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 Y) M* S4 V# Q% q( I" u一直想找到运程修改MAC和SN的办法,苦于无解啊
4 W4 r3 z' s+ h
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 " B: ]. d& v# Z; W
. A  i% p  Z; F, J6 G
修改的代码早有了。到今天不会编译。5 z/ e1 D$ w# w
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>6 w& ?$ L9 y7 W8 e4 A6 p/ A
  2. #include <malloc.h>+ {3 G  l* K! v& T* O% }: d
  3. #include <sys/types.h>
    ( H. L) Y* c' P# }. t
  4. #include <sys/stat.h>
    : @7 @! b: U0 F$ m8 @$ b% l
  5. #include <sys/ioctl.h>0 n: ?! M. r: r) M+ S* `
  6. #include <stdio.h>, x8 [2 r3 x+ S
  7. #include <string.h>: J7 ]' V' X& S6 j) S! t

  8. 7 V7 F/ M& n' u; J+ Y
  9. typedef struct {
    $ d  \. R  Y, G7 C! o
  10.         unsigned int        e2prom_cmd_sub_addr;
    . m+ ?5 M4 q2 D3 s. l- q
  11.         unsigned int        sub_addr_count;
    ! L0 H' A5 P3 B& O
  12.         unsigned char*        e2prom_cmd_data;7 s, Y) g9 H1 P! S
  13.         unsigned int        data_count;( T; Y0 g5 D7 R5 L) j) L  Z
  14. } e2prom_s_cmd;, h' m& @- F- b8 j
  15.   D% _2 }7 i8 [4 M6 a% R
  16. #define E2PROM_CMD_READ 1, \# O2 P& l7 _$ T! g4 w3 V% l
  17. #define E2PROM_CMD_WRITE 2
    $ L4 ?0 k( d5 G% M9 E" d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      P6 W/ y. J9 ^- N1 B
  19. , ?7 |8 c1 T9 F0 [) D/ d+ g0 N
  20. static int readparam(unsigned char *mac, unsigned char *stbid)  Q7 g: h+ t& I  K) k
  21. {
    : \$ m9 t2 ?5 ]4 V0 ~: t! k/ b
  22.         int fd, ret;6 q# {. J4 T$ i% @, }+ @) l/ Q
  23.         e2prom_s_cmd arg;
    & l- e; \4 z0 ]/ m, e
  24.         unsigned char buf[0x18];
    ; G  i6 f9 l5 l( y: ?
  25. $ c$ N- s! y  Z' Q7 F& y4 W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! V* i* W9 i/ b- r4 l
  27.         if (fd  < 0) {' I/ N9 T# E9 u0 t1 P# c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. |9 b/ H( s2 W8 S% G
  29.                 return -1;. H- J- g; g; `
  30.         }- z7 Z5 H4 k0 [4 O
  31.         arg.sub_addr_count      = 2;6 K5 a2 }0 }* ]% i# ~5 X+ _
  32.         arg.data_count          = 0x18;" J2 {9 U3 d' I5 q4 a
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 Y6 s. b  ?) S
  34.         arg.e2prom_cmd_data     = buf;
    ) j- D4 Y! d/ ^' E; j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ g  G2 t' i2 I/ f! M8 C( ?, _5 `; U
  36.         if (ret != 0) {
    * b2 ~+ h/ X3 }* q6 e
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    2 C; Q. X( ?8 p+ E
  38.                 return -1;
    ! }. j5 Y* c8 I6 t
  39.         }
    7 Z7 }% f  x( s7 w) M* Z; `+ ~" O
  40.         memcpy(mac, buf, 6);
    + `( q0 F* f( E2 O! X8 u0 K% C6 d
  41.         memcpy(stbid, &buf[6], 18);" V- |- n3 i$ h" S$ i. j& @
  42.         stbid[18] = '\0';
    : o. W6 Q3 Y) n& o7 D! N: w7 O
  43. ) P9 `  h% f& _1 l( d
  44.         return 0;
    1 j/ M1 d" Q% C3 x0 c0 |
  45. }
    0 k$ L1 ?& q& v: j# P3 l5 W5 v
  46. $ h7 Y/ X% j# _! X0 D0 P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' b7 p9 |. a( H( N5 m9 ?; H2 A
  48. {* \5 u* w, C) ~7 l4 ~2 G
  49.         int fd, ret;$ \6 z$ |2 I: e0 l
  50.         e2prom_s_cmd arg;
      S" G7 {, a8 V; z/ z, C
  51.         unsigned char buf[0x18];
    ; @/ s  j% z3 I
  52. 4 i" u, Q6 \- T% J% P: B
  53.         memcpy(buf, mac, 6);
    6 J8 j6 @7 B* A7 b0 H
  54.         memcpy(&buf[6], stbid, 18);$ S/ m: r2 W$ t
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    + U$ j' U* F7 b. X# L. q" a5 E9 X' q
  56.         if (fd  < 0) {
      I! B8 v; P8 V1 B; O$ w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);- t: _, V( g6 W" A1 y2 a* w; w
  58.                 return -1;
    2 i, c- _' h4 h2 g& y/ b
  59.         }
    % O& ^  J: Y2 S7 Q! K  B) Z* x0 T1 {
  60.         arg.sub_addr_count      = 2;. w0 J& L- \  K  @( W9 d. M
  61.         arg.data_count          = 0x18;
    ! v, T" c/ e; v& w) e! e
  62.         arg.e2prom_cmd_sub_addr = 0x290;9 B% R6 r5 h" W4 |
  63.         arg.e2prom_cmd_data     = buf;
    / Y! |9 f) }1 H7 H
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 e2 ]* Y( k5 D' ~; w" z3 D- P  j
  65.         if (ret != 0) {; V" O/ _+ \" g1 {* R. n  [
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: }( a7 w5 }7 g2 t2 R. t5 H
  67.                 return -1;
    ! m9 O5 P. n; E5 J
  68.         }
    % o  j+ |( X! O6 `; f' P+ e

  69. + _" U% p- A& R# Q
  70.         return 0;$ |/ k! ?$ Y/ B( t* k6 c" Y5 J
  71. }
    ) s9 N) D( o; E6 j+ u
  72. " R) m5 ~- _2 H4 W% o8 c
  73. int main()2 B8 V9 o3 C6 \+ V1 Q* w
  74. {( G5 R  N' K- C0 i
  75.         char c;
    % Q$ P: m  L5 U
  76.         int i, macs[6];2 ~. b8 {, U6 `
  77.         unsigned char mac[6];) k) K1 Q) B# x
  78.         unsigned char stbid[256];
    $ a) ]+ O/ F  _7 ^$ }

  79. $ f/ D" @9 v5 ?$ c& [% P
  80.         if (readparam(mac, stbid) < 0)
    # D& n: V. F2 ?5 v
  81.                 return 1;* v+ N( @1 |8 H# i0 p

  82. 1 `. ^% a8 x. E
  83.         printf("Current parameters: \n");: m7 [% N% K0 L5 Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 \( E6 ~$ ~0 s! g5 Z: `$ V" C4 \. A1 Z
  85.         printf("  STBID: %s\n", stbid);
    ) I, I2 M0 t9 k" a
  86.        
      {2 M1 S* d5 x! e
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");, N" V1 E5 t/ \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! \( B4 J0 |# x, y* E6 C
  89.                 printf("Input MAC error\n");
      J5 R7 f3 h1 t( I+ d, T
  90.                 return 1;# Q, I1 F6 m& I
  91.         }
    # t- u* B* G" U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! @6 V3 C7 e, U, P: E1 ~# _
  93.         printf("\nPlease input new STBID: ");
    # `! @2 r5 ]5 }6 O
  94.         scanf("%s", stbid);7 L* W  B) R2 P" X
  95.         if (strlen(stbid) != 18) {
    6 T# s8 X/ s" Z
  96.                 printf("Invalid stbid\n");, {8 m5 N7 q: O2 f' t1 |
  97.                 return 1;
    8 ^5 h4 `% {: k( k
  98.         }
    / ?7 k* e6 e0 `+ k! O( Z
  99.         printf("\nNew parameters: \n");
    9 C# m+ d$ h, I. b1 w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 m5 D: t& ]0 Z5 V# z" p+ x
  101.         printf("  STBID: %s\n", stbid);
    6 a2 |% u* f8 R5 Z) n
  102. ( @  f8 A) i4 e" t
  103.         printf("\nDo you want to change paramemters? (y/N) ");5 Y- b" r* T( E8 A, K
  104.         for (;;) {+ R, X' z  u4 L4 Z1 V) l/ b9 t
  105.                 c = getchar();
    ; O3 h8 a3 _, p/ P
  106.                 if (c == 'y' || c == 'Y')
    / h# h$ q! k' D
  107.                         break;
    - ^0 Z7 o+ y3 C5 ]6 B
  108.                 if (c == 'n' || c == 'N') {
    ! h- l3 q, C( O
  109.                         printf("\nAborted.\n");0 [; g; J* y* x, n& t. s
  110.                         return 1;
    " |9 w3 x4 P4 T# g
  111.                 }
    " M9 H" o: `9 A! D2 C8 }
  112.         }$ @/ ?6 T6 R" F6 G
  113.         if (writeparam(mac, stbid) == 0) + L1 `& }: P1 I4 \' r' {' u
  114.                 printf("Parameters changed.\n");) v* G$ r+ j: S7 w" I( i: H8 I

  115. # p) u6 O* V1 E6 A2 K: p
  116.         return 0;
    5 g* c, F9 X% Z# d3 Y5 X
  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 ; O: w, P% V# X3 _! W  r/ q
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& s3 x8 q# g. j5 V! E你用的编译命令行格式是什么?
) a) N: v6 t1 `
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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