查看: 16823|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    / u* |, u$ V  S
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    " `+ J) j& Y+ v6 ?7 }/ W! b; m- d8 {
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
3 Y/ {0 v) E, j- e+ s; O. Ousage: himr <address> <value>. sample: himr 0x80040000 0x06 f2 g( E1 h5 t5 {

- [9 x7 D" E1 Y6 E5 _# A) }
8 h1 ^9 o* B. a, I- ~$ k( n不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' `5 ^0 m6 z' w5 M

% u% K, O. z4 s; s7 t% `补充内容 (2012-3-8 09:42):+ p: {: t, j) d1 _( o* c
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 u, f" [) [6 J/ F( K  ~0 H这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。9 X9 D. o4 Y# s9 h2 f0 v

8 F$ u+ @  C1 }' c3 Ihimr <address> <value>. sample: himr 0x80040000 0x0" \! Z; l) \, @. x' L

" m. n& L4 f. F7 N# M3 D; C例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。' S& Y$ q9 j. p, l9 M7 e' E" @/ q
himr 0x80040000 0x00
4 j3 E# Y4 b: X- E8 C+ _1 mhimr 0x80040001 0x11, I9 h  d7 O: ~. I
himr 0x80040002 0x22
! K8 s# h$ K: D; G" n" E7 E, rhimr 0x80040003 0x33
5 T) s' y2 ]: ~+ a: P3 z( Bhimr 0x80040004 0x44$ E8 G# \" h- E6 U, e3 n
himr 0x80040005 0x55
, x2 C) O/ V- H. k* @+ h
- S( r! s2 i4 e* N2 k- PSN也是类似。
5 t" G6 q* v1 O# o7 S4 O5 s
; ?3 A. V, h' ^* b6 `! t现在主要是,谁告诉我们MAC和SN的地址?
4 T8 @  j9 {. V/ L$ t
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
2 u; a( y4 O3 q/ N& L7 E一直想找到运程修改MAC和SN的办法,苦于无解啊

8 U/ X3 c! M3 Q0 ?0 m) [源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
" d/ k1 M3 n% n: T( @: O; p, s
/ Y  F8 P: E- a6 f, \修改的代码早有了。到今天不会编译。, g( G- M. J. D0 T8 w
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>& ^- u% H- I( a# A, Z4 _* Z
  2. #include <malloc.h>
    / D  Q5 A, i; r% `! p2 `6 Y
  3. #include <sys/types.h>
    " u9 [7 u3 k- w' ~
  4. #include <sys/stat.h>
    " N; J( f1 e( P  [" C7 K
  5. #include <sys/ioctl.h>
    ( ~- B9 V8 N( V0 o1 _, k
  6. #include <stdio.h>
    , z: Z7 G. S  _1 Q3 S8 H$ i+ J
  7. #include <string.h>
    5 z' N3 f) \) \; ?+ a5 p
  8. 8 z+ e7 _# {* G. h2 p
  9. typedef struct {
    3 V1 e; U3 a# y4 ~8 k0 I7 w
  10.         unsigned int        e2prom_cmd_sub_addr;
    7 m( C. a! Z  z+ Q4 u+ J
  11.         unsigned int        sub_addr_count;! w3 W1 |: a( D; z. B- V
  12.         unsigned char*        e2prom_cmd_data;
    , }; P$ L( Y/ P) r2 ]
  13.         unsigned int        data_count;
    0 X2 w8 b/ {2 T' k! `% p
  14. } e2prom_s_cmd;
    $ t+ O9 _, m/ V$ h
  15. ( y( V* S% F% x5 [' K
  16. #define E2PROM_CMD_READ 16 N' h2 ]8 |6 n% I& @; G
  17. #define E2PROM_CMD_WRITE 2
    ) M- L9 S2 r: u1 N! k
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"5 g* x6 F# \6 l7 C+ J" C' K0 [
  19. 2 I( y( K  T* v9 v. a; _( P2 m
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    % g" z$ O' M5 d
  21. {6 U. K  S5 l4 q7 G( C
  22.         int fd, ret;1 g- K7 P& \3 H- R3 u; k
  23.         e2prom_s_cmd arg;+ v' f' @0 {3 v$ ]2 H0 X
  24.         unsigned char buf[0x18];) `$ R( }; [! z) Y
  25. ) E) N' k0 O  K* ]: u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - E) Z3 g4 u$ N+ U" `
  27.         if (fd  < 0) {
    ' K3 b: r3 Y7 h6 N4 Q, Q, i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 g% h5 q4 g+ H, n" b2 [" Y4 c3 f7 I
  29.                 return -1;
    # A( y4 x- m+ n+ l: A
  30.         }& a) i9 \$ X8 `$ R
  31.         arg.sub_addr_count      = 2;
    # w( e$ w5 C8 _: j
  32.         arg.data_count          = 0x18;( L4 i3 Y8 @1 A0 Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 B0 c  ~; K0 a; m
  34.         arg.e2prom_cmd_data     = buf;
    ( S/ B# L. q3 q1 i. }/ L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ e' z4 [! b! @3 k, ]- {/ L1 i0 ?
  36.         if (ret != 0) {
    ; r5 g( A6 c6 l' W
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);9 z* w# S1 i: k
  38.                 return -1;
    . W/ q7 z* ~' W, F7 R+ @
  39.         }
    9 T: U* Z6 l9 U' G% ]5 k0 |
  40.         memcpy(mac, buf, 6);! Y: B4 w6 c' L( v+ k1 I4 ~. D
  41.         memcpy(stbid, &buf[6], 18);
    9 O1 Z. \% ^3 V
  42.         stbid[18] = '\0';
    ( y, x5 Z2 S( ~! U4 X% X; s
  43. 8 N; a* ~; A- R8 ?1 b
  44.         return 0;
    + D0 K4 }5 `2 N$ K3 {" K
  45. }( h' X5 z# P( b- s" W/ L# d
  46. 5 {' x2 e- u7 D+ S$ V- x. t- @
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 M5 m0 X. c" p& }
  48. {5 h, s, a& q* w$ E" j9 y
  49.         int fd, ret;
    6 o) v. g/ m0 i7 Y* d) U. j& b
  50.         e2prom_s_cmd arg;
    ) l# u% H  O2 M- ~' \; ~- R
  51.         unsigned char buf[0x18];, @! p0 w& O; {2 i% U+ q8 V( }/ \: K7 a
  52. ( |6 Q5 `' \  k2 S
  53.         memcpy(buf, mac, 6);
      m# x. N, h  ?9 D* o! J" @+ b, \. v
  54.         memcpy(&buf[6], stbid, 18);
    & _1 O0 y% t  q# E0 ^  F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! O/ ^; O3 [9 E7 H
  56.         if (fd  < 0) {' p# b- c7 s1 T, E" O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * D3 y2 \4 n! N: e. ~+ z+ w. a; G
  58.                 return -1;
    0 j% H" F+ a1 a0 X3 z
  59.         }
    ) N/ q9 S; Q- q
  60.         arg.sub_addr_count      = 2;% A. F% o9 B. t, T
  61.         arg.data_count          = 0x18;* Z/ z' L+ i4 a+ A7 C, x7 q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    / P" y2 h6 j  O+ y) ^3 K
  63.         arg.e2prom_cmd_data     = buf;: s5 i) p& {) z3 V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);; k* [& [9 h% B7 ]3 c/ {  W4 i
  65.         if (ret != 0) {6 F( }; L8 E1 b+ w( u& ^
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
      }0 t7 [! P+ ]0 i# j0 g1 A
  67.                 return -1;
    . e. u' `9 v/ _1 [1 A$ `
  68.         }0 ~) Y+ P7 I4 J
  69. / [) Z3 t% t; ^2 X2 k
  70.         return 0;4 w2 r. k! T$ G& h
  71. }
    4 K4 w* ~$ d$ ~: u$ A1 S2 c! `1 m

  72. ) l0 o7 b& g: X$ [: t! x
  73. int main()
    % F4 q  h9 A1 F5 Z
  74. {
    $ d8 |+ I. h* U& Q
  75.         char c;
    / x0 V" {. |# s" S
  76.         int i, macs[6];
    & V( L$ P% C/ q
  77.         unsigned char mac[6];
    ' R6 e0 T3 l7 |  {3 D
  78.         unsigned char stbid[256];5 e4 G7 F9 M" G( O; M" E- S/ s( \+ t
  79. 5 d  ?( B6 m$ }2 S7 l* D& w' r
  80.         if (readparam(mac, stbid) < 0)
    ) `$ b6 b. t$ O: e* T% D
  81.                 return 1;
    : z7 @4 N, h% A1 V' W% {

  82. : S; M  _- q  M' |1 Y
  83.         printf("Current parameters: \n");
    ' @6 y+ y8 O& h3 h# u8 k
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ R, l: l0 r4 B: c
  85.         printf("  STBID: %s\n", stbid);
    " ~  X* N" O/ Q/ }: G
  86.        
    - q% f" p. y9 Z. R* l
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    5 M* n. S% S0 I8 L* C4 }
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" B5 \  b1 c" E( X
  89.                 printf("Input MAC error\n");
    + l1 C& i# N- _# R( k# d
  90.                 return 1;
    4 Z) g  _" G: ?0 k( S% D9 U  R% @
  91.         }
    $ D% Y& b0 e# x2 O. z6 h
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% v6 Z2 }  `( y! z5 D$ M7 x: y
  93.         printf("\nPlease input new STBID: ");1 k. O: T- H: L  _& k  m
  94.         scanf("%s", stbid);0 i3 U: v& T. Q) Q
  95.         if (strlen(stbid) != 18) {1 R! ?/ _& t' D% ^1 ]9 h3 M
  96.                 printf("Invalid stbid\n");
    # n2 ~: w" p. u" Y7 _& a/ B/ X
  97.                 return 1;
    ; u$ @& H& ^3 P6 B( x5 D- r+ {+ e
  98.         }9 Q6 `! o  X! v0 ~- N/ \- W3 i
  99.         printf("\nNew parameters: \n");6 D( z- }! \6 B5 J; g  {2 H8 b+ i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' ?5 g( u7 J6 k, Y/ r& v* R
  101.         printf("  STBID: %s\n", stbid);- R6 b: ?0 f; i0 K# x, u

  102. ( v! V2 F9 N0 {! o% r
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % q$ h2 `7 Z# {6 ~% ?+ ?
  104.         for (;;) {
    & p& [) G# T: s1 ]5 u5 p" B
  105.                 c = getchar();" v) S' i0 I2 `2 U7 P" T
  106.                 if (c == 'y' || c == 'Y')$ E0 ~- }$ A) O* I) @
  107.                         break;/ S1 O& b2 g1 A, U$ D( \$ c# a
  108.                 if (c == 'n' || c == 'N') {3 S& c/ V; _9 \6 L
  109.                         printf("\nAborted.\n");
    $ G- p, ~8 q/ C# x0 e1 @$ P
  110.                         return 1;% h# O' n* G1 e; m, J
  111.                 }" P& ^2 M6 J$ G( l' f
  112.         }: y% n5 c* w3 D+ |5 m# ]
  113.         if (writeparam(mac, stbid) == 0) 9 @" D2 k! D" S- d
  114.                 printf("Parameters changed.\n");
    3 H& Z2 @0 T% p1 Z- t6 G" J* i$ p
  115. 7 g2 W- d. x. [' Q8 h' b
  116.         return 0;
    . k4 T9 ^  s5 w7 y- V2 |2 {. Z
  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
( r& I/ X0 k4 E在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 Q: A4 c1 q4 _! ~* N你用的编译命令行格式是什么?7 l* P9 C6 Y. o' K
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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