查看: 17686|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 l2 w# i3 Z# C3 ?7 p/ b* x, q  C7 \
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ z# H. `0 g8 W
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( W" K+ _* k, G/ _+ s$ Husage: himr <address> <value>. sample: himr 0x80040000 0x0" F: _9 z5 M" L: l
! k3 y- V4 s8 u) R! W! o5 }
+ ^2 d4 Q5 ^0 ~+ v) `. W1 q0 u6 ]) e+ U
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& Q+ w7 a9 q  K# t( M
/ G& A) _: l0 p8 B/ j4 {
补充内容 (2012-3-8 09:42):# Z( x. G7 H* A/ A0 X; d
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 `0 Q: P2 B/ s+ B- f  Y
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
; i' ?( e) W' J  W
# g" ]1 _% D% c1 Vhimr <address> <value>. sample: himr 0x80040000 0x0* `4 d' i* y3 N1 N
- a% i, I: f  t  h
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 R% o# g# f: H' n; e
himr 0x80040000 0x00
4 J/ ^& |+ a- Zhimr 0x80040001 0x11
2 ^7 e7 d; P5 k8 khimr 0x80040002 0x22
7 ]) W  @- U' }0 O! Thimr 0x80040003 0x33
+ m/ }2 A( `% v* R/ rhimr 0x80040004 0x44
! E4 W. i' I) n5 e/ ^1 o; q8 w$ whimr 0x80040005 0x55  u4 H( F# ?3 P9 N# m5 W& ?# Z
$ H5 r2 V. z, N% Y5 Y+ E
SN也是类似。
; s8 a/ {+ T" m( d/ w
9 Z% S' w5 a# |: e现在主要是,谁告诉我们MAC和SN的地址?/ \& ~  [+ M3 g
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
2 x1 |1 V4 r% q; _! ?) N一直想找到运程修改MAC和SN的办法,苦于无解啊

6 J- D. r! y, O3 n$ i源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( m8 f4 P" h% P% _1 D/ }  |

0 w1 [3 B- q, U修改的代码早有了。到今天不会编译。
4 z9 w8 r6 T( {! ^. H0 T% @需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 h( I/ o" l# X- B. }, [3 h
  2. #include <malloc.h>
    9 F5 W# w4 }% R- F1 u  A* Q9 T1 A0 F
  3. #include <sys/types.h>- i. O( K. t5 J, s/ Y
  4. #include <sys/stat.h>( S% ]1 d6 u/ N6 O  \
  5. #include <sys/ioctl.h>
    , c/ [- d; w: W. ^; P8 o& `! \
  6. #include <stdio.h>3 Q" b, C; N  T& }# i- M
  7. #include <string.h>6 ?3 a6 p/ t5 V! q2 I( p
  8. ) Q0 |4 T5 [* d3 W2 L
  9. typedef struct {+ E/ R  G; q' B) l
  10.         unsigned int        e2prom_cmd_sub_addr;* s7 Z, ^& _; Q* N% n& B
  11.         unsigned int        sub_addr_count;3 E: |# J" k: g/ K# d0 i
  12.         unsigned char*        e2prom_cmd_data;3 `8 n! ]  z1 p$ O
  13.         unsigned int        data_count;
    3 z( Q3 s. N3 p2 L! ~( r2 N
  14. } e2prom_s_cmd;+ u) }7 ^' m: b  Q9 H
  15. 0 `7 \. J- W# X% Z
  16. #define E2PROM_CMD_READ 1
    + j; i+ O( B* ^. i. I
  17. #define E2PROM_CMD_WRITE 2
    - c* z' m1 H( `; b# ]& u: z; u& f
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 u  v( M: y$ n; H

  19. 0 l* u1 y  S5 B$ [& v% N
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    % |: g/ g7 ?# L8 N
  21. {
    6 j2 \7 E+ |+ w$ o; X. M0 U
  22.         int fd, ret;
    + R% \* z8 Y$ W9 f
  23.         e2prom_s_cmd arg;9 G3 K# u+ D( W5 H
  24.         unsigned char buf[0x18];
    3 B( \4 {: f, w$ Z/ J

  25. 6 c1 Y6 U9 c: o7 Q4 `- D
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + X, u( H9 n% r, ^
  27.         if (fd  < 0) {
    " ?! l7 s+ C# y# C2 V, _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * W. T) `6 Q6 H: x  k$ C9 h/ [) R
  29.                 return -1;
    ; M4 d/ g0 ~8 {7 S; s2 t# {
  30.         }* d$ U# r- J$ Y  U: J9 `8 k. ~6 ]
  31.         arg.sub_addr_count      = 2;$ O. n* d$ d- Q% |
  32.         arg.data_count          = 0x18;
    - w* S; h& ?6 n- P. ]% \; B" d
  33.         arg.e2prom_cmd_sub_addr = 0x290;& N2 Z, J& g. j; S, [! j
  34.         arg.e2prom_cmd_data     = buf;1 B5 y- p6 D+ @& \1 \9 Q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, p4 j3 ]2 Z* n5 g+ q- C0 A
  36.         if (ret != 0) {
    2 o) u  c  @! [0 v
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 h5 T- p+ h) G- @' }
  38.                 return -1;, B  z7 c, C6 b2 v# d% j
  39.         }! B$ Z& {; Q8 d" G
  40.         memcpy(mac, buf, 6);
    4 r3 l) N3 ~/ A& Z7 p" b* B$ O$ Q
  41.         memcpy(stbid, &buf[6], 18);3 V2 h5 r# `9 ^; w! w. p
  42.         stbid[18] = '\0';2 g% R( G; D( V

  43. % o7 [2 k8 L1 i5 i+ ~1 m  b' \3 B" _
  44.         return 0;
    9 R/ ]& `3 C( t: W. Z. n& F
  45. }
    % n8 ~, }9 k; m# |& T

  46. 8 _2 D0 ~" L/ B3 Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)( ~3 p  \1 q. e+ j7 g2 {
  48. {% C3 M/ h- m3 o2 _1 _* l( U1 i
  49.         int fd, ret;
    6 ]8 y0 _; V- T; r1 C, T# g0 C9 a
  50.         e2prom_s_cmd arg;9 {! I* ^2 j! Z( j7 J- W! f" l/ m
  51.         unsigned char buf[0x18];" j" g& w6 ~' q& `6 K
  52. ( U; `, {* t; m
  53.         memcpy(buf, mac, 6);, C; a( ^( [$ a+ d6 L
  54.         memcpy(&buf[6], stbid, 18);' j+ y$ s( |: J, ~8 ^0 e
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 q( z$ _, I) h# a0 l
  56.         if (fd  < 0) {
    2 p5 o- V( [8 Q' ^1 P: G% E
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      s' N( b: C) U( M6 t
  58.                 return -1;2 E4 ^" [( o1 m4 K: r, I. l; [- N# ]
  59.         }
    & N2 o" n6 d* C9 Z- F
  60.         arg.sub_addr_count      = 2;/ |2 F/ Z7 N2 k$ A  {( X7 w
  61.         arg.data_count          = 0x18;0 j3 ]/ o; C4 D2 |1 C3 ?  ?3 ^
  62.         arg.e2prom_cmd_sub_addr = 0x290;* N$ _# z  x( k. `1 }! B6 ?
  63.         arg.e2prom_cmd_data     = buf;+ ^. g* V" D  q+ H, z- V8 {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    * Z# z* g" I, f
  65.         if (ret != 0) {3 w9 _/ D- `& Q. ^+ y' q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);+ q5 L$ H! S, c) @7 v
  67.                 return -1;/ p& i- l& H8 R- r; |, A7 r: t3 T
  68.         }
    ; H- t7 x4 T* D

  69. 6 z, Q7 Q! r' B( E2 N1 {8 ]
  70.         return 0;
    9 U' K3 @$ D) ~: f$ \
  71. }
    ( U& s! G- l) S3 I, s4 }
  72. ; Z4 @! `( a6 o8 P
  73. int main()
    1 U* {+ e& f( Z2 c8 Y; c, v
  74. {' R  H6 N5 n) I. r7 A  v% {
  75.         char c;
    8 `/ f2 Q4 g8 R1 S" i6 L$ \& K
  76.         int i, macs[6];
    + |% w* |2 K% d: l/ A; P) Q! {
  77.         unsigned char mac[6];# _* N) ?4 a) b; _: H/ C) W
  78.         unsigned char stbid[256];
    * L: T: b+ O5 T- v; |! I( ^  _

  79. 3 I% F# p  N4 s1 z0 Y) d: ]
  80.         if (readparam(mac, stbid) < 0)- T' H9 w% Z% v" J4 ^& B2 ^
  81.                 return 1;
    . l% Q5 |+ c9 E0 D( z) w& V; w
  82. 2 ~6 u  a4 _2 s8 P1 O  O
  83.         printf("Current parameters: \n");
    ; f& l4 E6 Q. ]4 w2 u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ q& P, Z% ]8 h8 z1 l' R# o% d' }
  85.         printf("  STBID: %s\n", stbid);
    : K% B; i( U2 O: Y" i. o
  86.         : r" c2 C' D0 X8 E5 t+ q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 R" i' G0 P( E6 [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    3 Z! U+ S' m, C8 d
  89.                 printf("Input MAC error\n");  ?% u1 [/ |! ^' J* W) R
  90.                 return 1;
    0 c# H& B% ]! z' @4 I
  91.         }
    ; q% X% Q+ h/ v7 [$ m
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , z- _# O& e3 W3 W  h: i
  93.         printf("\nPlease input new STBID: ");5 r8 k2 T4 |7 {, K9 f5 t
  94.         scanf("%s", stbid);9 c* h; @- O8 `' Y8 Q. ^0 f# `8 S
  95.         if (strlen(stbid) != 18) {. u) ^3 n  Z7 @5 a
  96.                 printf("Invalid stbid\n");  D1 j2 m% m' r; Q. B' V! k
  97.                 return 1;( b; v5 y9 k/ p4 i
  98.         }+ ?& k( y4 n$ _' z; v3 M
  99.         printf("\nNew parameters: \n");' o- q5 W! y' F- o6 Q+ f' L; }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 {/ u" d* ^2 x, ^( [
  101.         printf("  STBID: %s\n", stbid);5 B! B  z; P" t* Y

  102. / k! x5 N9 D: A* [( g' ?! s
  103.         printf("\nDo you want to change paramemters? (y/N) ");( U+ m; e, d) W. ~0 H0 X
  104.         for (;;) {
    + g/ k* p4 a6 I* u
  105.                 c = getchar();
    & V6 X. y9 ]: z8 v$ z6 v! o
  106.                 if (c == 'y' || c == 'Y')
    ! m$ L- \. x& d
  107.                         break;. H/ D' W5 P4 E+ q: P1 h( v
  108.                 if (c == 'n' || c == 'N') {
    ' }$ D" w7 Y/ d. A2 n1 S
  109.                         printf("\nAborted.\n");
    8 U% o, _4 P1 u
  110.                         return 1;
    & }( ?, F; _% n5 r. Y
  111.                 }( t2 ^/ E$ j6 b+ W, X% O
  112.         }
    - B' o4 E& l+ n6 G# c, K
  113.         if (writeparam(mac, stbid) == 0)
    # @# H, G0 x  o. d% \
  114.                 printf("Parameters changed.\n");
    $ Z( d! R' o& U/ M9 L* |: H9 T

  115. 1 B1 f; C: \2 l" v, r: O* b
  116.         return 0;- M* T2 q3 Z2 C7 }% M
  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 6 h& d: u0 d7 i( X- M
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 m  D5 g3 f% _. E( B1 Y3 g  o
你用的编译命令行格式是什么?
/ }0 Y, Y' d. d' b9 p9 F
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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