查看: 17838|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 ~6 Y2 F: t5 J  @; Y% R
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / i8 e+ H" w% f, |/ ^( H% p3 J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( [+ ~+ X8 d5 G! _+ s- r8 |- @usage: himr <address> <value>. sample: himr 0x80040000 0x0
1 X0 A2 h  w. D( ?$ j; M2 j5 U
8 \) G0 j. t- U2 e9 z! t  g. H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 I& r' M/ z- Z* x
& ?% T$ p: m5 F; m
补充内容 (2012-3-8 09:42):! C* E2 J8 d) V8 k+ A
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数) _! w% i. Q( u6 J- i1 @, D) R
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。9 G2 E' m! J8 Q
& L4 u0 n, M5 M" J# n- R
himr <address> <value>. sample: himr 0x80040000 0x0
$ G2 o$ h1 V/ u7 l* |3 S; q" Q8 O0 r6 Q7 v4 M' L
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% ?6 F; |+ x: x, l# O
himr 0x80040000 0x00) u0 q. Z6 ^, C9 v7 U/ ^1 V
himr 0x80040001 0x11
( C% a6 O; [; C4 }% U1 W4 ihimr 0x80040002 0x22
& |7 w1 t6 p2 Z1 Mhimr 0x80040003 0x33
. j! y* b2 W7 K. M( Jhimr 0x80040004 0x44
8 V$ {$ C7 H* }- j1 A8 khimr 0x80040005 0x55' [" ]$ i0 X/ f* a! a: J$ I- x

! b# M; E9 ^/ ~: u5 _SN也是类似。
% `5 h! }& ~4 S2 [6 w5 I# h! a
/ f& d* m: G3 z9 c- v- B现在主要是,谁告诉我们MAC和SN的地址?
, m2 N0 _3 D! q# ]: u
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . E4 d( q3 {6 }
一直想找到运程修改MAC和SN的办法,苦于无解啊

. l7 N. w- r$ J% y$ N; Q' M源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 7 q* `% D3 W) j' o; g4 K' }

- z" }) S, U; H修改的代码早有了。到今天不会编译。# r8 M3 ^7 C9 }& J/ D
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % i) H$ t& F" Q/ b1 ?
  2. #include <malloc.h>
    * }2 r+ R2 {& H: R& `6 r0 i8 V
  3. #include <sys/types.h>( u. f- H$ H# u
  4. #include <sys/stat.h>
    8 P- Y: G# C+ b  v9 A
  5. #include <sys/ioctl.h>0 o& |$ b/ T9 n  {6 z3 G3 R
  6. #include <stdio.h>
    4 O3 a( D; }& b2 r0 n/ z
  7. #include <string.h>* K( @3 H6 V  g$ T* k

  8. 9 V; u# k# p* a4 B
  9. typedef struct {
    7 h2 X2 `  t- _& D- h' D
  10.         unsigned int        e2prom_cmd_sub_addr;
    3 r( @& m3 N& ^+ W. g# w8 L
  11.         unsigned int        sub_addr_count;
    + d8 M. z! U( l9 B# k- ~
  12.         unsigned char*        e2prom_cmd_data;% H4 L' ~' o5 ?" v* T: g
  13.         unsigned int        data_count;
    & k- H  t( y, c) o/ d, H
  14. } e2prom_s_cmd;" ~3 W& _7 T( S7 g

  15. 1 W4 g' {4 {) p, W9 U% c  E! e
  16. #define E2PROM_CMD_READ 18 C0 Q4 s4 O; g' R+ ~& L% @* x
  17. #define E2PROM_CMD_WRITE 2
    / k+ Z* ]1 f/ j; }! J2 ^
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' N& k1 @$ j3 }
  19. ) t4 w% h" @8 |/ i
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( h# O) H/ d7 ^! e$ \9 ^
  21. {0 D2 s+ P' P2 p9 S2 s, l
  22.         int fd, ret;2 b: u1 E3 j& J: p5 x9 {
  23.         e2prom_s_cmd arg;4 Y+ w& z# f6 ~  h+ ]: u, b' H! j4 G+ ?
  24.         unsigned char buf[0x18];
    4 P7 g) X! o% v. N6 V

  25. # k, _  n9 L$ X& F( H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 d7 d/ y8 i( K2 j) `( F- g
  27.         if (fd  < 0) {* e  w8 C+ D! V2 A( i; l  F  H& ?! H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ }$ }+ g- B6 `  z& ?7 }6 Q
  29.                 return -1;9 s. L" [) A7 N4 k( g
  30.         }* u- ]. U' Q, N: {4 }) _
  31.         arg.sub_addr_count      = 2;
    6 D6 m/ V5 R3 _
  32.         arg.data_count          = 0x18;
    : q6 k4 L( |0 T* w
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 g0 {( k1 X2 i( G" J& A1 W, {9 V
  34.         arg.e2prom_cmd_data     = buf;
    ( K; D) k9 }. x8 `4 T/ @: \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      }# r( j  R; j/ ?; |( b3 B; r, L% U
  36.         if (ret != 0) {
    & K; i9 J; v; F* k7 H
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ F7 Z2 Q1 p2 R) ]6 l
  38.                 return -1;) \- D6 T% x' }6 v
  39.         }
    & \' Q3 p4 F4 L0 P4 }' h; f2 L! |
  40.         memcpy(mac, buf, 6);
    2 H4 z" E) j" `+ Q
  41.         memcpy(stbid, &buf[6], 18);9 m7 P6 `/ P2 z7 ~6 o8 ~
  42.         stbid[18] = '\0';/ i/ X5 i! G8 h7 w* H) S& {' b

  43. 4 p1 U5 l3 i0 x7 M9 j, V" T) ^
  44.         return 0;! N7 c6 z( l" J
  45. }$ ?0 g: {# ~+ Q8 b0 S

  46. 3 m7 I2 v% H9 L& d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # o$ w  z! r+ R4 L
  48. {
    9 {  q8 @0 B0 M2 I( r7 Q! _5 x
  49.         int fd, ret;
    5 m2 J( n( L, |' f5 ?1 {5 P3 N/ Y
  50.         e2prom_s_cmd arg;7 P; C$ V$ ?. u
  51.         unsigned char buf[0x18];* g* `4 \5 ]# a# X/ t
  52. . Q8 y" g( d1 [/ W& X
  53.         memcpy(buf, mac, 6);
    7 X2 H. `* s, o6 }) C: c
  54.         memcpy(&buf[6], stbid, 18);% `/ g: D- s, l6 o* R9 H
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- z7 S% e! V$ T! L2 m" N; ~4 u
  56.         if (fd  < 0) {: F' C  C' }7 S* d$ q0 h+ o+ c* ^% ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 `7 z( |4 s) K/ }, J& h, o/ s* Y
  58.                 return -1;0 a, w4 c9 v& c7 ?
  59.         }
    , Y: p: }; a9 O" Z2 k4 M
  60.         arg.sub_addr_count      = 2;  z3 m1 E% B7 D5 S6 r# Z; P
  61.         arg.data_count          = 0x18;1 J0 k0 ^- z4 r3 D. W) c
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & J1 z( m# \3 r1 W
  63.         arg.e2prom_cmd_data     = buf;
    8 z: ?4 L/ t6 {3 K& f8 X" r3 j1 j
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: a7 a  u! Y* n
  65.         if (ret != 0) {
    8 y6 X$ c3 Q% C: _7 F& A
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ) Y  e8 g/ U" B* u( E! S/ R
  67.                 return -1;
    " a7 _/ Y- H7 Q. K! y% k
  68.         }+ ~% h' }2 Z7 n5 ~

  69. * b* V2 N9 a* l5 L
  70.         return 0;
    ) r- p0 b$ K: O6 v8 p; k
  71. }
    / ~1 d8 [) u% G: a$ L
  72. ' z7 o* V  t- \; g, t
  73. int main()
    0 `' v1 ?" e- r0 J, u6 n8 r3 T- ~
  74. {
    " q) Q2 @3 G  Y( b1 {& E$ p# s' E
  75.         char c;+ c( q; W, r( |4 \! q+ N
  76.         int i, macs[6];) d  x# g6 s* W, s
  77.         unsigned char mac[6];
    3 g0 W4 ], L7 A5 x/ r5 p! o: H% P2 x
  78.         unsigned char stbid[256];
    1 c) U* m2 H5 r; h5 [. i- `: [

  79. ; `+ F# U9 E/ k0 }: t4 o
  80.         if (readparam(mac, stbid) < 0)& I2 n% T/ n& m
  81.                 return 1;) l: ^3 _- C5 Z* n3 @# \2 H
  82. / ^3 M% T7 r/ [. L4 N9 N
  83.         printf("Current parameters: \n");
    : @/ ]8 \) X+ x* |* Z" R8 h% w
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - I/ B% P! m5 ]/ y" q0 u( d
  85.         printf("  STBID: %s\n", stbid);/ Q5 _" C2 M# D7 Y1 T6 P
  86.         4 E! ?! V; Y5 B% }# D$ B
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 C8 u# y4 Y) \* x2 }/ c2 Q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 h, S0 E  }4 G6 `0 G
  89.                 printf("Input MAC error\n");
    - L; A2 G3 ?0 q6 h& W0 _
  90.                 return 1;
    7 a( Y$ X6 Z# g/ m2 ^: a5 M) y
  91.         }
    6 x* h5 h1 ^0 P+ f% n/ W
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - b( ^9 s8 j) P- }
  93.         printf("\nPlease input new STBID: ");$ |, q6 Y- H1 c2 ]3 u7 ]
  94.         scanf("%s", stbid);
    % Q6 l5 O! f, O2 `  O1 ~
  95.         if (strlen(stbid) != 18) {
    8 ?3 i7 Y, C) T
  96.                 printf("Invalid stbid\n");' \4 h4 B- w9 |* C
  97.                 return 1;; ~! P$ r# h1 k4 N& ?$ [) [  s
  98.         }/ g6 Q4 U0 @& X$ Y( g
  99.         printf("\nNew parameters: \n");
    * `! n1 b# ]- ^, t' R- G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 i) p+ ?( U- m  N/ X
  101.         printf("  STBID: %s\n", stbid);
    " f: Q6 e6 t3 ]- K
  102. 4 @* A# k4 _4 o6 N/ g+ L) q
  103.         printf("\nDo you want to change paramemters? (y/N) ");, [1 D4 M+ `2 g# N+ C" a
  104.         for (;;) {
    8 R2 K6 @/ A- g( }" v/ g; }; `
  105.                 c = getchar();
    2 e7 c9 ^6 z) k. d& Y/ S3 i+ c, A: R4 g
  106.                 if (c == 'y' || c == 'Y')0 r' q2 \7 Y& n  P. t0 d
  107.                         break;
    & C+ m( Q' U5 o) p
  108.                 if (c == 'n' || c == 'N') {
    5 q& S) N: w. p" H' `- L
  109.                         printf("\nAborted.\n");
    ; y! a! a) e6 `. Z5 H
  110.                         return 1;
    * n: N+ S1 A2 {. m' \% [6 Q
  111.                 }7 o* o# a3 J8 \2 y6 t
  112.         }
    / V  o' b2 [9 c3 B9 E" ~3 B0 K
  113.         if (writeparam(mac, stbid) == 0)
    , Q5 p: G3 [0 `" U- P# @
  114.                 printf("Parameters changed.\n");
    7 c/ j/ G, u: y3 Z4 P

  115. 3 Q  ?, {& N! H. `6 G# N& U1 G) r; L
  116.         return 0;! i: y  Q7 x! X- [6 d. v/ o
  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 1 N! u: B& X0 q- g9 B/ v, ]
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 U$ s- h# A6 \$ j3 W
你用的编译命令行格式是什么?
5 V, m0 f+ S, K9 i. C3 j* |1 Z2 O
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部