查看: 16670|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 s* f) y. O$ u3 N" ]
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ R# T0 d+ Q+ h  H4 T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 k& |& [( a1 V$ a3 uusage: himr <address> <value>. sample: himr 0x80040000 0x04 s/ }* G, h6 ~' [2 _6 l$ }
7 E; c9 B- A- v( `9 q. Y9 K5 m% }
! o) A6 A6 r2 \$ Z; ~8 Q$ B) `5 Y
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?0 o' `! \/ K4 T* i, \
. P' N( ^1 j1 }  _) s9 U
补充内容 (2012-3-8 09:42):
# x  h: A3 ]- Zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, B! N) a9 w$ M+ T& ]9 S0 G
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
& i$ u2 m: C" }: i2 ]( F. o
  p& h2 v; L; w9 C7 Z& U8 y% Ahimr <address> <value>. sample: himr 0x80040000 0x0! K( D5 E* J: n; t

) }# s6 R, H$ X- X# A例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ _; d; i  K) L6 A& H& Y' L/ b* mhimr 0x80040000 0x00' F7 c1 X( L7 N4 p* o6 ?' T5 X
himr 0x80040001 0x11) z4 y+ j; H) M
himr 0x80040002 0x22
7 m1 _9 W* o: o" {himr 0x80040003 0x33
  ?6 Z# e4 R6 I6 Vhimr 0x80040004 0x44
% a, \4 ^6 G  `8 L  h- fhimr 0x80040005 0x55
) l* E6 N" M. R- C. ^$ c3 D
0 P; _$ y  q7 F/ I. C- L" \1 ESN也是类似。+ G$ m: x" l8 P3 C/ d

( u# j+ l3 F0 X. |/ K( c" L现在主要是,谁告诉我们MAC和SN的地址?
+ t2 B8 P. @! L5 \6 O. }4 s  Y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 W& t8 i, A% g7 }7 r一直想找到运程修改MAC和SN的办法,苦于无解啊
! U0 O( C* p2 d8 g  p( ?  M( Z2 b) P
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ' K# Y& f, }6 Y/ T* w

; x$ N& x/ X8 K8 Q8 ]修改的代码早有了。到今天不会编译。
1 [/ z. g; w& n( c. ^0 m1 i需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    4 ?6 I0 u  L( O3 G9 I  q5 F$ Z
  2. #include <malloc.h>
    ) }  G& O9 s, u
  3. #include <sys/types.h>
    , H4 h) [/ p3 l
  4. #include <sys/stat.h>4 \$ q! ?/ ^7 e: w/ V4 ?
  5. #include <sys/ioctl.h>9 X  D; m1 b7 N7 y/ o. @2 i; i. K
  6. #include <stdio.h>1 Y6 X) @/ [6 c6 H& P3 u( {% x: p
  7. #include <string.h>
    % W- o; I, Q8 J. D2 H

  8. 5 |5 x  }* A! j' L
  9. typedef struct {
    ; X- P2 b* _; t( s
  10.         unsigned int        e2prom_cmd_sub_addr;
    , Z; s: C7 S$ C9 \1 h* N
  11.         unsigned int        sub_addr_count;
    " K% D. L/ l( a4 D; s
  12.         unsigned char*        e2prom_cmd_data;9 Y- k+ \5 F- Q$ ]4 L+ E
  13.         unsigned int        data_count;% E0 `1 j, i" x2 h* e( G
  14. } e2prom_s_cmd;
    : ]" F! v3 t3 A5 _. S7 t# b& r

  15. 8 `# D: q2 T% C& o7 T: t( ~7 x5 Q
  16. #define E2PROM_CMD_READ 1# p9 S9 V/ a  Y. O$ F
  17. #define E2PROM_CMD_WRITE 2
    : y: e% G' y6 g3 q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    0 o" N( X( Y0 Q# z, R5 k
  19. ' B- u1 i$ q6 n, t- R7 Q& T
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 J9 w! j9 a  E0 j
  21. {
    5 r3 w: d0 C" C4 x
  22.         int fd, ret;
    2 _! L$ s. t% L$ B9 A- H& K$ d
  23.         e2prom_s_cmd arg;
    ! G, T/ F* y5 M: `$ P1 j
  24.         unsigned char buf[0x18];
    1 y" t! \; Z! a! @8 V/ c" N( ]' I
  25. & v2 A: I* x. |' G
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 @' z8 n. Y& M" E; H* e+ v8 b# N
  27.         if (fd  < 0) {
    / F- t8 r/ Q+ t8 u. I# ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. V" i8 D0 {  ~) ?
  29.                 return -1;' W3 a2 c3 {' P, B% _
  30.         }& O1 j7 L9 b; y) K) E
  31.         arg.sub_addr_count      = 2;
    + |1 {" [: j4 Z: H5 z: v2 v
  32.         arg.data_count          = 0x18;, s2 k2 j" K' M
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 u& l+ b' x  U8 M) F2 g0 e
  34.         arg.e2prom_cmd_data     = buf;  K1 f/ a  U# Q8 H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( k6 P4 W' Q7 r; g0 E; |
  36.         if (ret != 0) {; I9 u/ X) u; y- S8 L/ Y  q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ _2 G1 L& `2 c" I( p& F5 f
  38.                 return -1;; `( A) t7 B' \- I1 @
  39.         }
    4 i5 J2 m( X) }; _8 d
  40.         memcpy(mac, buf, 6);3 l7 }* ]/ r, ?1 p3 }3 j
  41.         memcpy(stbid, &buf[6], 18);
    $ X4 R: R& J* e! y
  42.         stbid[18] = '\0';* Y+ u: g' {+ J$ G# S. p- b! h

  43. ; N/ V& J- K. I
  44.         return 0;* d: H. p. s$ ~3 b2 I6 s
  45. }
    ; B6 `0 q1 J. i8 f
  46. $ [) l9 O: Z7 Y: @
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    * h6 {0 ]' Z9 c$ _- h5 w
  48. {7 c/ v; }6 @) Q8 G
  49.         int fd, ret;
    ' K& ^! Y+ }# |& V
  50.         e2prom_s_cmd arg;3 d0 d- l# Z0 d; [0 G
  51.         unsigned char buf[0x18];
    * [. H2 D+ S4 G  H7 w: s2 v

  52. + X5 b- }1 I. r. |7 y* p+ v
  53.         memcpy(buf, mac, 6);
      \: @1 u' S# w
  54.         memcpy(&buf[6], stbid, 18);8 e4 r- R) Y$ V1 \. Z. S4 w
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& x; b. l; s, z* f0 b
  56.         if (fd  < 0) {& h1 E. H/ h- L1 Z  H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' g( Q$ A1 P, Q* B2 P1 U
  58.                 return -1;
    5 J7 z  G/ ~- E& I7 K0 e( Y; n
  59.         }# ~8 P; v9 B. d' A2 Q2 l: @
  60.         arg.sub_addr_count      = 2;
    3 P( U1 Y8 q: W2 L% v4 E5 @) w7 I- v
  61.         arg.data_count          = 0x18;
      d, h. h0 j' x; m4 `( `
  62.         arg.e2prom_cmd_sub_addr = 0x290;* W" k: t7 v" u; I* D, s
  63.         arg.e2prom_cmd_data     = buf;9 ^, Q/ t- s, b4 [$ C: p, N' H
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);7 Y8 ], ?1 ?" I
  65.         if (ret != 0) {1 t: A, F1 |, k1 v3 Y3 }3 ?
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);8 i% T/ A: K$ T+ K; j
  67.                 return -1;
    % f. x  k4 U0 [7 w* h( y
  68.         }- d: y7 G2 m) p

  69. , E' F' h: P9 {0 R/ m
  70.         return 0;- j, j/ o1 ~7 N; b0 @5 }' B2 p
  71. }5 s/ U9 x, @- x8 [+ ?' v
  72. 3 G6 e/ n; o6 i" v) T2 v
  73. int main()* W7 e/ s, M  b2 H% V7 t
  74. {
    1 c* Q1 D$ N, U5 R* r/ d0 N
  75.         char c;9 q  b* m1 Z# O% k
  76.         int i, macs[6];
    4 y0 G$ v2 c. [- G4 \
  77.         unsigned char mac[6];
    " _- z# i- @' J9 M; i% Z1 L
  78.         unsigned char stbid[256];
      L0 }5 j5 Q6 W! t3 D7 d4 K

  79.   z1 p4 Z+ s1 F4 Z3 a: T
  80.         if (readparam(mac, stbid) < 0)
    : ]" {, b, W$ @6 A  Y
  81.                 return 1;# Q/ n$ b) X+ M

  82. 5 P  N) l/ G: J% ]/ D- x
  83.         printf("Current parameters: \n");' c2 n- _$ w8 W- ~/ M
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, m  w, v0 b. x) n% F
  85.         printf("  STBID: %s\n", stbid);+ `- J1 G$ P; Y( l
  86.        
    / T8 Z  k! N' m: e: z: f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    1 e9 r# ^1 q5 r! T7 x  ~
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {2 Q& d3 k3 I( n. o7 M+ j
  89.                 printf("Input MAC error\n");
    : p7 |9 K3 V- _7 O% `/ t
  90.                 return 1;
    9 H$ u. v  c( C+ O: f
  91.         }, D2 }/ N4 t+ w# K! s  q$ a8 V/ S1 z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    % Y) X" S0 ^) M5 S3 m
  93.         printf("\nPlease input new STBID: ");
    9 {5 a. ?( R4 r, p( S' X1 e
  94.         scanf("%s", stbid);
    - e8 h1 r, e& M5 A; \
  95.         if (strlen(stbid) != 18) {1 }  h' G% r, y
  96.                 printf("Invalid stbid\n");
    . g7 i, w4 j$ c0 k
  97.                 return 1;
    ! q" J. S( B3 u/ U3 g
  98.         }# K  z5 ^( L" U/ g! y
  99.         printf("\nNew parameters: \n");
    * \% D3 f7 Z( {' [, P# e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 I/ Q/ p7 P0 r! L$ E! ~
  101.         printf("  STBID: %s\n", stbid);( c. u. \" B; c  ?

  102. 1 z3 ^( u' b0 Y4 S4 j. v# W
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    5 ~1 w- E& i* K. N% R: J: v4 }0 C1 h
  104.         for (;;) {$ x8 J- h0 G. c( ^( q3 k8 t
  105.                 c = getchar();3 n4 z" y6 c! o" A, }- c6 c
  106.                 if (c == 'y' || c == 'Y')
    6 P% m" k0 b; ^
  107.                         break;
    2 S5 o" k4 K5 S! [! `
  108.                 if (c == 'n' || c == 'N') {1 J) S# C) L' F
  109.                         printf("\nAborted.\n");: y% ^# `$ R. |# b
  110.                         return 1;
    . ]1 a3 M; l% g/ n
  111.                 }
    * J' m) f& t5 ]' u$ ^
  112.         }9 @+ R9 ?3 g" E3 _7 L. t; h
  113.         if (writeparam(mac, stbid) == 0) / k4 M2 T7 f  _7 A
  114.                 printf("Parameters changed.\n");' o5 Q" a' ~1 X
  115. / p3 r8 ?4 l. P) l8 d
  116.         return 0;& E) G1 s9 D- L
  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 ) b9 S, J* Z  i: F
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 l3 a( q0 ?' T( {, z' l, O
你用的编译命令行格式是什么?
( T' u% j9 l2 H/ u: 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客服返回顶部