找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15114|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr$ x2 ^' A$ X3 S. W* J
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig/ N; C) g" z3 }' t. Y3 @6 B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:9 ?( A" E: Q$ \8 I$ `3 Z" a( D
usage: himr <address> <value>. sample: himr 0x80040000 0x0: T( W! e" Z# R9 I9 E# B

( U. C# T( x" p; ?% D$ Y1 n: l- y# _# j, T" F0 z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# N/ e0 _- M0 }& J
/ y& G5 c5 U% p补充内容 (2012-3-8 09:42):
6 p; N9 X# n2 @1 f, |) S2 ]8 V: {7 Xhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数+ |9 J, w' L) O
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。7 V( o/ k/ z1 {" V  f# h" s
. }) k; D0 G0 q/ w3 I8 ~" b& s
himr <address> <value>. sample: himr 0x80040000 0x06 d! z2 K! B. h3 n0 m: W3 ~

! m$ S  f5 G# q! e% t& r! ^例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
# ^& L- C/ _" _8 whimr 0x80040000 0x00
# H. n1 f' n% e# |+ e- v- A! p) _& dhimr 0x80040001 0x11
7 E. h' C" m: w1 L2 N) ~8 U3 @himr 0x80040002 0x22% k6 [5 `/ }+ w  B
himr 0x80040003 0x33# h: v8 X- T8 {
himr 0x80040004 0x44
: ?0 o' W7 E1 H5 `' L8 M) [- v3 a" Khimr 0x80040005 0x557 ~; L# w" d6 h- q. p! A1 T6 K4 X
% m; d9 k( z4 s' v6 F
SN也是类似。
" A  ~! U' L: r1 c+ G, k) ^3 m8 `$ L4 ?/ o+ q* h& X  }
现在主要是,谁告诉我们MAC和SN的地址?- V/ e, R0 Q$ g! S5 B. K
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 M$ \# x( i# S; z7 u" R- X9 m
一直想找到运程修改MAC和SN的办法,苦于无解啊

: H# Q& Q: Y2 |  V源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 2 o* ~( r( W' {, r1 q/ k: u

7 F2 @( y! x. u. C( Z% h9 A) i修改的代码早有了。到今天不会编译。1 n4 r0 z# ]! s% x' q) L
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    & @! v- c* C8 b9 D
  2. #include <malloc.h>
    3 h8 E+ h2 H3 F) i' Z4 ?
  3. #include <sys/types.h>
    5 n: V  G( V! @: g. ]& C! E& B
  4. #include <sys/stat.h>) w* n9 Y. A& Y, N
  5. #include <sys/ioctl.h>, O; G* S+ `! t( r
  6. #include <stdio.h>6 X; a7 U' e! ?5 h" W8 P$ W# Q$ r: I
  7. #include <string.h>
    . S. l, ?/ R. w; N6 ?4 ]  K

  8. 5 ~) O4 N* F$ T! `" s) D1 C
  9. typedef struct {
    & k& P3 B: @6 h" J8 p* Z2 v
  10.         unsigned int        e2prom_cmd_sub_addr;  u, `: n  `4 }
  11.         unsigned int        sub_addr_count;% R2 X  q) L9 I4 z
  12.         unsigned char*        e2prom_cmd_data;
    ) K" {3 C9 s  {) d8 }7 L
  13.         unsigned int        data_count;% n8 {- E2 M. h( i
  14. } e2prom_s_cmd;' w* n9 r9 }! Q( D, |; Q1 r# P" o5 a

  15. 1 D4 i6 ]- p6 E# o/ S- T3 L6 A: c
  16. #define E2PROM_CMD_READ 11 ^& ]! H$ w( w3 L- c8 B
  17. #define E2PROM_CMD_WRITE 2: N9 u1 ?( v' ]/ c6 z6 t0 L. I4 }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"9 R, c7 i; O3 M0 S* e  K
  19. 9 G4 z1 ^" }" X/ V7 B" _  i
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 V& H. ~, i4 N6 a: r% j
  21. {
    5 I  t* H: ?+ ]3 \' ^; f3 O
  22.         int fd, ret;
    - j" N: u  z- d7 w: G5 K# P
  23.         e2prom_s_cmd arg;! f  I! ~/ ?. [; G- U( Y! L
  24.         unsigned char buf[0x18];
    4 \1 N+ ^5 w* W( K& p. W. _: t

  25. $ y  T/ R, p0 h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 Z/ e  X7 x! O) u7 H/ M
  27.         if (fd  < 0) {
    + n' Y: H# L9 y/ s
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 Y$ b8 h8 b7 a* x) F6 b
  29.                 return -1;
    5 @) g) ~0 e2 S' u
  30.         }7 R$ X) d, D2 o9 u. i8 K
  31.         arg.sub_addr_count      = 2;
    7 q3 r3 K$ x4 S, U+ h
  32.         arg.data_count          = 0x18;! j8 E5 D* M/ _. v( F* B3 u
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 Q5 H' j2 W) U3 O
  34.         arg.e2prom_cmd_data     = buf;$ n' \) H+ I! m" t% P
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);; T/ b* u( i( O0 e
  36.         if (ret != 0) {& I+ q: y& F( w' }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ! H# j, Y: q$ A( w7 v8 {2 O
  38.                 return -1;
    5 @0 j3 r% u. \
  39.         }
    % C$ h, m. }" z1 @9 p
  40.         memcpy(mac, buf, 6);
    + N# }8 Z3 `9 G  @! I; ]7 H1 A
  41.         memcpy(stbid, &buf[6], 18);
    1 h+ S/ T. x/ l) d8 O
  42.         stbid[18] = '\0';
    4 r& R: Q% E2 q! h& [

  43.   u3 f/ X4 q: F5 \! G& I3 w
  44.         return 0;
    ) ~% A3 q  Q7 r  ]
  45. }
    % S% f) ^6 D8 z1 U6 Y: g' D: T6 Y

  46. * E  u0 E. _' x( p% q& T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # f4 m1 D$ T- H9 `, R  ^
  48. {
    ' G5 I1 g" Y; D8 S. X! E- N. R
  49.         int fd, ret;  x7 p. }6 k1 L( Z, _% c
  50.         e2prom_s_cmd arg;9 T  B; t! M" x4 R
  51.         unsigned char buf[0x18];( K7 {) I7 K- [+ Z* P0 S4 J4 L) h8 C9 l' D
  52. / t' q( Z* l* |" V4 |" ]
  53.         memcpy(buf, mac, 6);: n5 h) v0 d! O
  54.         memcpy(&buf[6], stbid, 18);5 j- C5 J  H* O* p: j, w6 T/ Y3 J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / _6 a8 d6 V& P
  56.         if (fd  < 0) {+ o3 z" [$ ]! _+ ]/ I0 P& X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 d. ^, I1 ]# O" l( i6 ]
  58.                 return -1;- I5 \1 P2 J/ n! v! B6 k
  59.         }
    - K1 k& e7 v8 y5 y. x$ v# Z7 C
  60.         arg.sub_addr_count      = 2;
    9 H( J: ]% g* K4 v0 ^0 Y
  61.         arg.data_count          = 0x18;% ?" W9 y: s3 l7 @
  62.         arg.e2prom_cmd_sub_addr = 0x290;* K3 i: x7 K& z) e( H6 l
  63.         arg.e2prom_cmd_data     = buf;" |, L' l1 ?+ m. K% v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 j9 Z/ {2 _/ B! O1 v0 a$ b
  65.         if (ret != 0) {
    # F! y* ?# Z. c+ b3 c2 C
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 a4 i1 l+ I, q# s; r
  67.                 return -1;) S4 Q1 H# y2 d( \4 h
  68.         }
    7 H# p0 g4 S2 f

  69. ) B. u; O( M3 u8 a3 U  C/ P
  70.         return 0;2 p. Z( K' o) \9 I
  71. }
    , X8 q) e0 z" M
  72. 9 u& I5 ]% k1 L3 }& L* S
  73. int main()$ M: y% s8 q5 p. j
  74. {
    ) u. X0 i; r$ T, _3 N4 p5 z
  75.         char c;1 u% h8 ?/ }- `$ F6 ]
  76.         int i, macs[6];
    5 {2 G' A0 r% n2 A0 e* y  n2 H+ e7 ?
  77.         unsigned char mac[6];/ c9 j/ }  n, o* Q+ o* r2 z- d3 M
  78.         unsigned char stbid[256];# [, ^3 e' i$ x

  79. - B" L/ I( ]( K. r& Z. X
  80.         if (readparam(mac, stbid) < 0)2 B  ?5 b2 l. G  M" K
  81.                 return 1;/ w5 Y; n6 c' _
  82. + j: Q" ]0 C" k/ K! D7 |
  83.         printf("Current parameters: \n");
    $ |; t, e* B) |1 U8 b9 H
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, p# L) G( r" [$ X1 r& X
  85.         printf("  STBID: %s\n", stbid);, q3 b" f' f1 q& o' S
  86.         & Z# B: m5 t# w3 ?# `4 q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - f: x$ [- v& i# Y# Q% U! L3 A
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 Z, _( F6 P2 l7 K* E. T
  89.                 printf("Input MAC error\n");7 N7 {: X$ Z7 B+ N& B- u' C1 _
  90.                 return 1;! R+ g* y/ Z9 ]; }2 a2 i- R1 I
  91.         }
    ! M# z# \! y! o) m
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 E; x6 N7 J3 I9 z: S
  93.         printf("\nPlease input new STBID: ");, h# `7 u/ F2 t  r
  94.         scanf("%s", stbid);% r' g$ ?7 V7 V  v5 A6 E  n
  95.         if (strlen(stbid) != 18) {
    2 X& {" E5 _: [& v0 E" L
  96.                 printf("Invalid stbid\n");
    * J& J% S4 r8 y
  97.                 return 1;' Q. E7 P7 x, t
  98.         }
    7 w, o- M1 `! `. W, x% b8 j% @! b' F
  99.         printf("\nNew parameters: \n");0 w0 r6 H, ]# _! m1 W. Z8 }! p
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ {1 a8 t: N2 G, A/ X; H
  101.         printf("  STBID: %s\n", stbid);
    9 P9 e- _/ {  [+ o/ o

  102. ! s6 `; v6 _) e: y6 r% _
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    9 ?3 F7 n# ^6 n  D/ h" z
  104.         for (;;) {) R# U5 n! [+ O) p9 G  ^
  105.                 c = getchar();
    ! R& n; L4 X  I
  106.                 if (c == 'y' || c == 'Y')! Y4 m& b" x+ I* z& N; i
  107.                         break;
    0 [* d3 g) P: M
  108.                 if (c == 'n' || c == 'N') {
    ) G& z: D3 k) k& I
  109.                         printf("\nAborted.\n");- e& p2 l2 R* ?4 }; j1 a
  110.                         return 1;& [7 p4 x7 c/ d8 n4 a
  111.                 }
    + B0 A3 N7 I5 Z0 b0 ~
  112.         }
    1 T% y2 y$ @0 b2 [0 i: v! H
  113.         if (writeparam(mac, stbid) == 0)   i# A+ E* l4 V: }, W
  114.                 printf("Parameters changed.\n");
    7 L" h/ ~/ V* ?0 X
  115. 6 o2 y! U4 G3 Q7 W! C6 ?. T
  116.         return 0;
    - f1 F5 s$ P9 r1 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 + N0 h. Z) e" g( x: Z9 g7 k7 o
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

9 u) X4 t6 s/ E" q2 a% k4 y你用的编译命令行格式是什么?
, O& k# z  n6 P7 f1 O2 _0 M( D; X6 q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-12-23 10:25 , Processed in 0.029159 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表