查看: 17156|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 _5 `' J! T; w! p" _
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 U" H8 d, w  g' O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
/ T( [& o& y4 ]/ s, rusage: himr <address> <value>. sample: himr 0x80040000 0x0) P' K$ J% d' @  ~% t# V

* Y7 u5 l6 P( Y/ G! y8 w. \
& s3 d$ w: h; U- _$ Q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?* J* J4 [' a1 h
; p* o; r' P  g3 |* O
补充内容 (2012-3-8 09:42):7 `* ]' T- Q' `2 Q7 ^
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
# S# G4 S0 h& T% a* O5 K这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。+ ]2 P3 f+ h+ z1 {9 m
, m9 b+ Z! H" r1 j
himr <address> <value>. sample: himr 0x80040000 0x0
( Z; O3 T- }7 A$ K( ^, Y, j' x' C# |5 \- C" v( _5 V7 ~9 P
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
' Q3 b+ V, C  ?0 ^1 ]himr 0x80040000 0x00# A- q# |& [  k. c" }8 q  c6 W# l
himr 0x80040001 0x11* s; |! a% m6 f
himr 0x80040002 0x22
" [# \9 }+ I$ g0 f. x. t  n  d; jhimr 0x80040003 0x33# b1 G$ G6 v7 [" [! T  ^
himr 0x80040004 0x44
3 u! k4 q  l! P8 @3 N  fhimr 0x80040005 0x55
+ {+ X- F4 e5 q) I3 N  x6 r% e/ l7 e3 M+ x0 K
SN也是类似。
8 L* O" A9 ^$ o$ y. A3 b! d; |5 r. i. @+ x" M% D3 ~! `% Z2 J
现在主要是,谁告诉我们MAC和SN的地址?
" b: ]2 K: R2 f0 N
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 , i2 t1 c  X2 i% e" s" u9 n
一直想找到运程修改MAC和SN的办法,苦于无解啊
9 k6 r8 l5 j7 U; F/ F, U& S
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 J' o! p3 i6 O: q0 X/ J' w
0 v6 j. l+ A' `- d2 q, w
修改的代码早有了。到今天不会编译。
7 c) j, ~) g2 S! \4 l6 l需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h># w& y) l! i( c3 Z
  2. #include <malloc.h>4 Z1 q0 X. S6 n
  3. #include <sys/types.h>5 f. v; p' |# S) s( j, p
  4. #include <sys/stat.h>+ v1 \+ X) r) D: h+ V3 L9 R; D/ C
  5. #include <sys/ioctl.h>
    : D* J; }  I$ s. H2 W
  6. #include <stdio.h>
    4 `; S' v3 P/ R: ]3 U7 t
  7. #include <string.h># ~. l9 O' R/ j+ L; K$ J: ^
  8. 1 D6 c0 h  }! H
  9. typedef struct {
    - s9 X! ?. \) K3 z" y  C2 Z
  10.         unsigned int        e2prom_cmd_sub_addr;, v1 E; D1 H2 ^* `9 j
  11.         unsigned int        sub_addr_count;
    ! d( v" o( U, P1 t6 Q" ~
  12.         unsigned char*        e2prom_cmd_data;+ s# |: `. Y5 b4 V7 c. |+ @
  13.         unsigned int        data_count;
    ) N2 n. O" B9 H  t
  14. } e2prom_s_cmd;. b! f2 t( v8 R

  15. 1 I8 \7 U0 H4 h: g. x# j
  16. #define E2PROM_CMD_READ 10 U# X0 X& M6 }
  17. #define E2PROM_CMD_WRITE 22 n! y+ r9 x9 e  \2 y, c3 `
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; o6 L( v" h; j" P" e4 _
  19. : n3 J" X% ^1 e) O0 q7 z: g
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 v8 P. g. E% G
  21. {
    , Y  C2 ]- J' O; Q. F+ A) P- Q
  22.         int fd, ret;, S% r- f6 u& d
  23.         e2prom_s_cmd arg;) g6 c% o) e: ~+ h  c& m
  24.         unsigned char buf[0x18];6 P2 X- r( g7 v8 a# [# U, w

  25. & S$ a" c5 T/ X/ p0 W8 J
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" x- Y4 W0 W1 }# y
  27.         if (fd  < 0) {3 X, U  M) {! f& M! c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ q. ?) D, h' u5 d9 E! k$ ~
  29.                 return -1;
    3 [/ B8 ?. w3 ?6 p; `
  30.         }
    ) E# P8 g9 A' A0 z& k$ Z7 `
  31.         arg.sub_addr_count      = 2;' i+ M; F2 D; q, [8 C! I& M
  32.         arg.data_count          = 0x18;6 W$ |, f/ T4 j5 E
  33.         arg.e2prom_cmd_sub_addr = 0x290;1 F" E/ ?5 o" \: q& K3 Z. X: z: a
  34.         arg.e2prom_cmd_data     = buf;
    0 H+ \. U: q8 r( s" l7 B4 r% L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);- q& N* A9 X/ G2 R$ C8 ?
  36.         if (ret != 0) {! o% I) ^" c# C0 g
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; O" ~' D  J  }4 W! f
  38.                 return -1;& u" d, `; a5 e* X
  39.         }5 d  k7 E% U) H
  40.         memcpy(mac, buf, 6);
    % z/ `4 l6 `4 F  a% m7 k# ~
  41.         memcpy(stbid, &buf[6], 18);; D6 E2 {+ G6 F! r3 @& }2 K
  42.         stbid[18] = '\0';1 A% j/ c# _- O3 i  _  O9 m
  43. # K, H4 P: M" P' v. x
  44.         return 0;# o$ g% u0 B0 i' g; _% k3 j
  45. }8 J6 l0 ?/ \. x

  46. % ^6 `; F3 Q: W% l0 U% A. O! |- ?
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 q# {( e8 }: i! \4 w# F0 \2 @. O
  48. {
    1 p' N8 n# D( a" P( g# y
  49.         int fd, ret;
    . W7 _$ j( I- H+ a
  50.         e2prom_s_cmd arg;0 P: [9 c. Y7 J+ D( G5 q- M$ Z
  51.         unsigned char buf[0x18];
    ) m4 `$ c5 U# g" a( h

  52. , k" M, g4 K& \: y
  53.         memcpy(buf, mac, 6);( x4 C- O6 n5 ?
  54.         memcpy(&buf[6], stbid, 18);* u$ o- l8 p" g# x* S+ ~! N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, A7 I4 ^; F1 _0 |1 X$ U# N. `
  56.         if (fd  < 0) {1 T9 ?# g* f( j9 z2 G
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# }/ J; a- f- N' m* }9 W- ^& R
  58.                 return -1;
    ! |, L' P: W: p
  59.         }
    5 g: s1 L* p1 E9 B
  60.         arg.sub_addr_count      = 2;1 p- Z- S. q4 q, x3 s0 b
  61.         arg.data_count          = 0x18;
    ( m% `$ ~7 t8 }* h
  62.         arg.e2prom_cmd_sub_addr = 0x290;* ?; o# e  _- O! V+ o
  63.         arg.e2prom_cmd_data     = buf;
    9 E* P  p1 ?' l7 L: W: b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 p6 M+ Y7 p. N
  65.         if (ret != 0) {
    1 o$ C$ S: j- Q# B& c/ s
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);" {8 G# x1 O) A; j- ?$ p
  67.                 return -1;
    / l+ y/ M7 B8 h% T- _0 h* c
  68.         }8 d8 H6 @! n# t( O; c% d$ ~
  69. $ J# a- Y# r: \- I7 G' x# [
  70.         return 0;- H( P& V5 L6 V& x2 L( I+ q
  71. }4 ?" R" T6 W8 r7 _, I: f; ]
  72. ' M  A3 n* z7 C- ^
  73. int main()
    5 z6 _+ V& }& }8 \' Q3 w6 t# e
  74. {
    9 r- h) M* H8 t4 Z, ^/ G; b7 g
  75.         char c;
    0 R+ `8 l( m8 j1 V" Q( g, v6 K
  76.         int i, macs[6];2 g" c- F  w& s5 @$ P
  77.         unsigned char mac[6];; S: K; {  a# {1 I
  78.         unsigned char stbid[256];) B6 X. }+ l6 D4 X" ]" S. ^

  79. . r; b* a2 q5 t% P1 C7 v
  80.         if (readparam(mac, stbid) < 0): k& N% P4 G2 p# D3 m. y
  81.                 return 1;
    . m3 ?0 f: j6 e, B9 L, s
  82. ; I1 H$ }4 O# l1 t* D
  83.         printf("Current parameters: \n");
    7 `8 o1 X( h, i, E! M  b- g
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 m' w/ [& t9 S" [
  85.         printf("  STBID: %s\n", stbid);
    $ U/ ?" r5 ?0 j8 |9 _& o+ s/ I* V
  86.         ! [2 a- a6 g+ k, P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");) O7 d% r2 ]5 @! Z0 \) l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 d6 @1 R7 H- L7 A- l5 J: u; Z
  89.                 printf("Input MAC error\n");5 }9 C. O& I! T/ Y( f3 x
  90.                 return 1;
    6 w- F% ]' K1 g) s) ]5 s- ?
  91.         }
    8 i3 r; Z0 |: `9 y! P1 C/ \+ G
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    % f/ b$ k9 ^0 L3 R( ]) N
  93.         printf("\nPlease input new STBID: ");
    ; h( ]+ @5 a4 N; V) R* M7 m
  94.         scanf("%s", stbid);
      l* |2 t* \( W" g$ k( N# t
  95.         if (strlen(stbid) != 18) {# l% {6 Y0 ^8 B, v. F* a- g0 i
  96.                 printf("Invalid stbid\n");0 N# x# u9 i+ c
  97.                 return 1;
    2 }' Q% p, D; [6 V
  98.         }0 p' m: A5 H; }/ }' ~) t& }
  99.         printf("\nNew parameters: \n");) L% i  D9 _5 K+ e' J0 X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( p, o; j- U7 f: o) [
  101.         printf("  STBID: %s\n", stbid);$ Y: U9 t- E. i/ J( C7 k1 z

  102. : k( X5 A' h3 F' C$ ?
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ! R5 U& H$ \* ^' H: u/ G
  104.         for (;;) {/ c6 F, [3 m- Y( G, S
  105.                 c = getchar();
    ! C3 V1 e) b) P) @! [  l+ H+ H
  106.                 if (c == 'y' || c == 'Y')* M4 K9 I$ V$ r
  107.                         break;% P# ^% V0 M5 W
  108.                 if (c == 'n' || c == 'N') {
    0 U" @* a7 i$ ^* M$ w! ?4 Z* N- c, e
  109.                         printf("\nAborted.\n");
    + v3 l- W, x3 s+ d& j
  110.                         return 1;
    7 f2 w4 Y# D- y8 w4 G0 }
  111.                 }
    / p7 k3 y  z7 F' i  R9 F
  112.         }
    4 N9 g5 c6 e- k" B1 x) E& ^
  113.         if (writeparam(mac, stbid) == 0) & \- X  H/ D% t1 A# ^, u
  114.                 printf("Parameters changed.\n");
    3 |5 ]" L: b3 f# Q
  115. * l' L( n6 _4 g& f$ H
  116.         return 0;7 p/ B- N6 d# O+ _& w' 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 , d/ j# Y" M0 q  x% v( o9 s$ E
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' n: F6 N5 F$ D, w! V7 Q- X
你用的编译命令行格式是什么?
' R# p, K/ U# T- b: t
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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