查看: 17299|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    $ f5 R! ?0 X) k7 o, h9 j
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) u6 R8 u. e8 h7 D7 ^) r" [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
9 [4 g0 {0 v% A4 Gusage: himr <address> <value>. sample: himr 0x80040000 0x0
2 y' p8 M- ]; m' s2 A, \" h$ f) @9 ^: o( j+ ^% m
; N! Z4 E& p" F. V1 b
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  N% c- D# R& B6 o# M! m4 L
! y; r/ A9 ]+ g5 |! ^补充内容 (2012-3-8 09:42):
. n$ l  i; N2 \: Y3 whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% Q6 J5 u7 P8 z) Q- L9 l
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
: H6 ^4 W& `) o
% B; o8 ?6 w: M. ahimr <address> <value>. sample: himr 0x80040000 0x0
3 W7 g/ x2 s& p7 q0 n2 p, L
( d' p: v5 [) w' F例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ R6 y& d% ~0 v5 D* F& f
himr 0x80040000 0x00: I% Z- G4 z9 I7 d# N+ c8 z7 z
himr 0x80040001 0x11) b0 G) U3 C' ~1 h  g
himr 0x80040002 0x22- S, u4 _* e  @) D( J1 ^
himr 0x80040003 0x33
0 ]: N! z: n3 ]6 F, N' ahimr 0x80040004 0x44
2 i) y* f9 V0 F8 fhimr 0x80040005 0x55' W1 t: }( Y, c: s. T& v9 M; L
; m6 \( e. `$ `# s+ x! j
SN也是类似。  J7 c" U9 Y' r: i5 s+ f; s; f

" n% b7 r# ?* M- I, f# u现在主要是,谁告诉我们MAC和SN的地址?
; {! F" P, P5 u* e
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( m3 X' S) q* w; t) n一直想找到运程修改MAC和SN的办法,苦于无解啊

* l6 i  H! s% a5 i源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 6 C% g# w% {4 s8 ], f* f
8 D1 ^! [3 G& l2 D4 n. M, d
修改的代码早有了。到今天不会编译。0 _3 I% C0 q3 r& d- _+ x
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) X- V5 }& \. ?" E. \
  2. #include <malloc.h>
      v' {, k3 ~2 Y, \5 p
  3. #include <sys/types.h>- i+ }$ I& q) c. u6 ?. |
  4. #include <sys/stat.h>
    8 ^& V( ], L( {, H% |% H
  5. #include <sys/ioctl.h>
    5 @8 a0 a: Z- V
  6. #include <stdio.h>
    9 k- |, }) {/ w8 Z, v
  7. #include <string.h>
    - b' ?, F, V- `7 q  J0 _8 T2 C0 @
  8.   g+ z/ H. j3 b& b) P8 d
  9. typedef struct {
    5 R9 g  e- a7 _% [
  10.         unsigned int        e2prom_cmd_sub_addr;* y3 @+ {% A( V4 u/ h
  11.         unsigned int        sub_addr_count;0 x4 |. o8 D$ X9 }
  12.         unsigned char*        e2prom_cmd_data;
    1 t6 L9 f. ~- i
  13.         unsigned int        data_count;8 p/ Q& }, \' Z" n5 g& g4 [
  14. } e2prom_s_cmd;# k3 ?: U$ b: ?, I) l( T* N
  15. ) v. u- a- K0 ^% s
  16. #define E2PROM_CMD_READ 1
    " {& X8 J1 H6 K9 |
  17. #define E2PROM_CMD_WRITE 2
    . [, s  `! N8 T) @
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' L5 {9 O% h  ^  \
  19. ' O/ s( D6 g/ O. n! w; V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 x$ R. w- D0 p4 I& X% M" d5 N! C
  21. {
    ; v6 [) l6 I2 x
  22.         int fd, ret;4 a2 [# V  H6 X; N1 r
  23.         e2prom_s_cmd arg;
    , V# _+ e. H8 o, v5 T* L
  24.         unsigned char buf[0x18];: p0 F6 V1 {( ^3 H" N

  25. # @, T/ F3 s0 {
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 g0 I* G* ~& e7 W) r) `
  27.         if (fd  < 0) {
    : B) R2 m  Z1 `8 Y) a! s
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 C) W0 R2 X4 C! p& Y
  29.                 return -1;
    & H/ s: }' ~& J& y3 M, h# C3 c; M" Y
  30.         }9 C! _! T. E; _6 B% v1 R
  31.         arg.sub_addr_count      = 2;7 _4 }2 W0 A6 L7 M0 C8 {
  32.         arg.data_count          = 0x18;
    " y# y( S" b! l, a0 {5 _+ F3 s/ @! e
  33.         arg.e2prom_cmd_sub_addr = 0x290;7 l( [5 u, H4 z3 k
  34.         arg.e2prom_cmd_data     = buf;
    9 m  M$ }- q$ u/ R- n
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 \  k1 ]1 s6 n
  36.         if (ret != 0) {
    9 I4 x- R8 ]* U; ]" j+ b3 _: [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; K( l. v9 P/ S+ V1 S
  38.                 return -1;
    , Y& {0 T: ]6 m0 B5 Z$ E& V+ @
  39.         }
    5 o; a% a8 a* ~4 V- a: g
  40.         memcpy(mac, buf, 6);5 n& u! l% c0 W2 @7 l, R" ~7 w
  41.         memcpy(stbid, &buf[6], 18);, f, T+ d. ~: {2 J3 k3 f- u9 W
  42.         stbid[18] = '\0';- m4 ]+ _5 m0 O8 v3 Q( z
  43. , Q& Z' b/ O$ W
  44.         return 0;  W  o$ r6 b! `- g& j
  45. }
    6 ^7 g7 E4 q7 e& Z& n* c
  46. 7 M% T  ~- k5 j  e* M; I* D3 I
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : @, Z9 o- N8 R' `8 j& k; _/ [
  48. {. P9 u' Q2 ?7 U2 E" y* K- m
  49.         int fd, ret;8 c" l7 I7 i1 h3 y
  50.         e2prom_s_cmd arg;
    : ?3 o' b2 b* y# M2 Z! C
  51.         unsigned char buf[0x18];
    5 I3 [- a# r, \# ^* S1 \9 t

  52. ; R; c- ~' K$ G0 J5 {1 J: [
  53.         memcpy(buf, mac, 6);9 k! t6 R4 H- \/ {: o
  54.         memcpy(&buf[6], stbid, 18);
    / |" u7 v1 s6 r3 i/ m( x. d0 u' w
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  N: q" J& m% ?! F6 _) r0 }7 H+ f3 }. f
  56.         if (fd  < 0) {
    2 q3 |- u. A( y9 q% C  q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! E5 X0 q6 `$ }2 j1 g* ~) ^, h
  58.                 return -1;4 R- q4 E9 \& ^9 N& I, ^
  59.         }
    . ?( t/ ~5 j/ L  k
  60.         arg.sub_addr_count      = 2;$ k; ]$ F  b% E
  61.         arg.data_count          = 0x18;7 q9 E6 o" N2 x+ H& s
  62.         arg.e2prom_cmd_sub_addr = 0x290;; R0 T; t( n& ?# x* i/ _
  63.         arg.e2prom_cmd_data     = buf;
    $ B) q- F5 b: {/ S- {" u+ n, R
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    # G0 D3 B) H6 H* w& q% U2 B
  65.         if (ret != 0) {. S( a6 O- L. X" D" }7 [) ?. |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    1 K3 ~% ~2 W. f5 ~; P. C
  67.                 return -1;, c; G& O" t. f# e" I
  68.         }( h8 t5 X7 g* O% g8 t

  69. 8 S  f3 H& ?0 N0 P( e
  70.         return 0;' T( I% o7 g4 q$ u5 x
  71. }
    7 U0 Z: U2 `9 p0 e
  72. . J# F4 d- a8 a6 u2 G
  73. int main()9 |7 d; e3 @- v. y
  74. {2 B4 g: `* Y+ g( `
  75.         char c;
    , d. ?, k& ^8 Q/ x, t
  76.         int i, macs[6];
    ) m$ N. R. J3 [9 y) A- T
  77.         unsigned char mac[6];" w( a, k5 t3 r
  78.         unsigned char stbid[256];
    / T( w4 A+ `9 w4 U# ?  w5 F
  79. 4 Q" u& W1 H7 O
  80.         if (readparam(mac, stbid) < 0), b8 R* \. _2 Q5 M
  81.                 return 1;- Q# T9 ?. S$ H- y" Y1 [
  82. ' H. l2 _  @) U- F. E3 c6 y
  83.         printf("Current parameters: \n");0 ]! \0 D  w3 J5 ^7 J. I: `* K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- i2 l* N5 o& e& @& ^* a
  85.         printf("  STBID: %s\n", stbid);6 N' V8 f$ j- s& J- R
  86.        
      }9 [. N4 G* t- l0 V$ \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# q4 n$ I; l# r% \- \1 H$ |
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 |* Z& q0 x8 ~; J6 S
  89.                 printf("Input MAC error\n");" C9 T/ [" V, ?# m7 u0 }# z. b
  90.                 return 1;1 n, m! _1 q% ]: L' w+ ^2 q+ I" B
  91.         }, k% @9 ^8 Z( M( S# S9 I& [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) ?% l4 d, i5 m; {7 g" x6 @
  93.         printf("\nPlease input new STBID: ");- C& q: J1 i2 D6 a* j9 P
  94.         scanf("%s", stbid);+ Y; Z! M1 ~  Y7 ^' l" _" e
  95.         if (strlen(stbid) != 18) {
    8 M6 V& E7 {' @5 X$ M  I
  96.                 printf("Invalid stbid\n");
    # q# b- X5 L+ a3 X+ @( n% Y/ j) X
  97.                 return 1;: j. a% R/ u' U) j4 E+ Y/ [
  98.         }9 }1 P8 A! t( {- g  y1 p% E
  99.         printf("\nNew parameters: \n");
      s6 L: o. c7 L9 v4 X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 @( ], L0 l/ J4 A5 ?
  101.         printf("  STBID: %s\n", stbid);6 E2 r) s7 d8 M

  102.   {; f) D7 b, Q) @" E
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    $ a* z0 s; u; t0 \% Y
  104.         for (;;) {- \2 |7 e  Q( J; T- ?" u
  105.                 c = getchar();  k; U+ f1 z9 Y$ h3 ~" g
  106.                 if (c == 'y' || c == 'Y')) }* Y6 Z" t2 P( D6 K
  107.                         break;. F2 ], b9 q* Y* r9 n
  108.                 if (c == 'n' || c == 'N') {
    # D7 N8 R& e4 t
  109.                         printf("\nAborted.\n");. L" c3 D( [. n; E. L7 M, p) U, f9 [3 A0 e
  110.                         return 1;
    % Z7 F; m1 `6 [+ }3 x6 ?2 I1 U3 r
  111.                 }  X; b! B* R+ R: o" E" e0 E
  112.         }
    9 |- h& P" z8 N4 @
  113.         if (writeparam(mac, stbid) == 0)
    9 U7 P; q  v6 g; d
  114.                 printf("Parameters changed.\n");3 R3 @3 E% i" |3 i
  115. ! e* i/ @& Y7 a. H6 V
  116.         return 0;0 o( Q2 ]1 F4 E1 @
  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 0 ~: ]) d3 C) v; ]9 V
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

6 f; H# E. o7 \你用的编译命令行格式是什么?
8 _/ s9 |1 _+ B0 h) A, ^/ e4 e
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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