找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15728|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ' D8 K7 Y6 F! w8 M7 L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
      p- T& x5 ?6 m. C; z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
& [! ~- k" y! J8 G- D9 L% ousage: himr <address> <value>. sample: himr 0x80040000 0x0
+ t% t8 C1 o" y# f4 t) D# }8 o; b% W) z& p( z$ W

. X! _/ f, F3 g. r不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, b/ Q& [7 h( S* _& _9 A( P
' `+ c- m0 K. q  B6 Z补充内容 (2012-3-8 09:42):
* E! [' c6 G0 s  @4 fhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, b: ^6 v/ b6 L
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。+ O+ C# }3 q  [+ d- U8 f/ M

8 L9 M& h$ P( Dhimr <address> <value>. sample: himr 0x80040000 0x01 Y. X/ {; d6 T/ Y. a8 c3 r

9 X7 F7 ~! X  I3 H) E, l例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
! F, T$ W- D6 ^himr 0x80040000 0x00
& k/ T( W* a1 X# g0 F* Bhimr 0x80040001 0x110 Z, D( d' m" [* u
himr 0x80040002 0x22. V% S$ b" P) b& x; X" a
himr 0x80040003 0x33: m( F6 _+ d8 r# U: m, {
himr 0x80040004 0x44
/ t+ g- ~8 g7 B) `- Q" r+ S7 ]0 B' Vhimr 0x80040005 0x558 }( k3 Y3 f: L3 V' q
, b7 f* r1 A* a* U% ?
SN也是类似。
6 w, M. p9 x+ d* V) L3 ]% A7 C( ^; @3 k+ E6 Q( R# P/ \; \
现在主要是,谁告诉我们MAC和SN的地址?- m( d7 u/ \8 i% }' p' J: g! w
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 n9 \' N+ z# m, ^! ]' v) B
一直想找到运程修改MAC和SN的办法,苦于无解啊
2 ^( @0 n, [! D( J3 `0 K
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 k5 r. w$ I) R3 Y" f- O& ]! h
4 e1 {" d8 n/ T' K( u( M3 b
修改的代码早有了。到今天不会编译。
' R/ m6 N+ Z7 M# Z  g& S3 U1 z/ ]: a需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 K! T! Y2 {5 \% h6 K; B
  2. #include <malloc.h>
    0 A4 d2 q* \  P% m1 G
  3. #include <sys/types.h>- F" e9 Y# U" l
  4. #include <sys/stat.h>
    , ~; Z3 [5 Y1 a
  5. #include <sys/ioctl.h>
    - w9 U8 c0 ]; `
  6. #include <stdio.h>4 x( Q, @" D+ }7 H, F' A3 R  v
  7. #include <string.h>
    " y+ u, c# o/ ]6 h3 W

  8. & X* h3 d9 {1 v7 H  v; I
  9. typedef struct {# j" u+ d" I1 ]4 Q4 |8 J6 ^0 l
  10.         unsigned int        e2prom_cmd_sub_addr;  B7 ^" [& {( l3 V8 {9 k; u9 J. `& [
  11.         unsigned int        sub_addr_count;
    $ X! W- N3 c: P) N- i
  12.         unsigned char*        e2prom_cmd_data;" E  c( e2 q+ n8 f
  13.         unsigned int        data_count;
    ) z: q: \6 \* b. ^0 l0 O
  14. } e2prom_s_cmd;
    . A: @5 t: X; P( R5 p# Q3 }, D

  15. 7 u, p1 x6 ~' C' m
  16. #define E2PROM_CMD_READ 1
    / B$ D' @4 u3 f* d: ]5 r+ f6 r- q1 i
  17. #define E2PROM_CMD_WRITE 2" g" P1 h/ ^! ?2 d8 _
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    0 F9 i. l" m- r% s3 Q9 S# K, u

  19. & p$ Y# R& L0 z; i3 p; f: p: X
  20. static int readparam(unsigned char *mac, unsigned char *stbid)' B& k1 h5 G4 L# z9 U# P/ x
  21. {! \! ~- c- S# ?/ E. \- s2 L9 c
  22.         int fd, ret;
    , I$ M! N8 a1 Q
  23.         e2prom_s_cmd arg;0 P: {( r5 K2 }
  24.         unsigned char buf[0x18];+ e* l' a# j5 j& i
  25. 9 H/ X" v. ?8 B* W" E5 |% ]7 d
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 d6 n& J: V) J9 |
  27.         if (fd  < 0) {+ b( e# \/ X+ s1 X
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 w& ?  t7 G- Q: k) ~
  29.                 return -1;
    / }, E4 b0 t3 Z6 t* J  n$ Z
  30.         }
    + J# V% u  a! H1 ?  l; ?
  31.         arg.sub_addr_count      = 2;' {3 y2 P- o. O8 G6 B
  32.         arg.data_count          = 0x18;
    % I0 L$ u9 L1 Q# {& O
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 Y3 p2 {0 i8 ?  c! b! B
  34.         arg.e2prom_cmd_data     = buf;+ i; `8 v/ W/ J& e" l
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);- I* N- Z" A: ?
  36.         if (ret != 0) {+ Z2 z) f( L/ O, [- H
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ O5 e) c! b% M4 g
  38.                 return -1;5 `( K5 q9 E# r9 {/ m) G" v0 p
  39.         }9 b& c# A6 K5 S: K" X
  40.         memcpy(mac, buf, 6);# H% N/ c: B+ ?5 v- S6 K
  41.         memcpy(stbid, &buf[6], 18);( a2 k2 L: A9 f; s
  42.         stbid[18] = '\0';
    ) I+ f: G7 B/ q* U" R2 h

  43. + d& f% {: y/ X2 T: E9 E, ?
  44.         return 0;
    : |& w2 m4 B0 R3 g$ i  A' e! e4 K
  45. }2 O( ~/ n- S- J7 \! `
  46. + s, [* F5 m+ o' A" k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)+ J9 T  T; M- v
  48. {
    1 K: D; J6 L+ q# g
  49.         int fd, ret;
    ; ?# R; w2 C: K- K# I) F1 N
  50.         e2prom_s_cmd arg;
    5 j& w: a; B2 u7 o
  51.         unsigned char buf[0x18];
    % Q+ O' ~$ ~$ r8 n6 H

  52. # a5 O' [9 ~% A7 j6 X$ |8 B; e
  53.         memcpy(buf, mac, 6);' ?, I6 S; w6 ]0 z/ E1 z  N
  54.         memcpy(&buf[6], stbid, 18);( W" x7 Y2 y0 G$ B# {% x- ^1 p4 Z: j
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 R( Q5 x+ q, g: h3 f' {' V; O5 |
  56.         if (fd  < 0) {) ^* B* g. o+ @1 n8 @8 T
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, Y7 Q% [3 b. a
  58.                 return -1;5 a+ _) h- g- y/ g6 m
  59.         }
    0 A+ G6 k6 M: D% n# E: O$ _( T* d
  60.         arg.sub_addr_count      = 2;( T# {- b( C1 j* p! k9 x; n! R
  61.         arg.data_count          = 0x18;6 J9 R8 N/ ?8 U0 O5 m
  62.         arg.e2prom_cmd_sub_addr = 0x290;7 E' R: z& ^& B4 ^
  63.         arg.e2prom_cmd_data     = buf;
    ) {" [% Z# D( Y# q1 L+ G
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 {! ~( l% [0 S/ Q
  65.         if (ret != 0) {
    " x% V3 _$ f6 E8 u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);' l+ k9 Z/ L' x( `0 K* W
  67.                 return -1;9 n3 M1 r7 c* s+ T
  68.         }
    6 H: D0 k1 T" T. U# {: C  D
  69. : O! I# V; t# [- f+ A; {
  70.         return 0;' e' x$ q' V  {7 m9 I
  71. }
    # O" h; Q/ A3 M

  72. : h9 p. ~1 F' g3 j# A7 o  g
  73. int main()# Z4 L( T  \& @. a: }- y; v% i
  74. {
    0 P0 t1 y% m6 ]) l! n0 C
  75.         char c;
    # h$ s( |4 X1 N/ Y
  76.         int i, macs[6];, v4 d3 y& @3 e1 g( x8 ?6 V7 J  i" U
  77.         unsigned char mac[6];
    & @* e+ c; Q8 z/ u4 P' E7 A
  78.         unsigned char stbid[256];
    - S: N' ~2 J+ u4 f8 `. e" F3 Q
  79. # h4 k. m# \, L) M2 I8 P
  80.         if (readparam(mac, stbid) < 0)
    + C( }5 P3 ^; s2 _4 X( f6 d& h
  81.                 return 1;3 q. n  e7 [% T. c

  82. ) V& F9 E: n: G
  83.         printf("Current parameters: \n");: b/ u! a5 e" A4 ]; i
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% r1 ?4 {$ ~3 h! j
  85.         printf("  STBID: %s\n", stbid);  i7 a5 v8 c. T/ c0 l
  86.         & a7 {! h/ J2 U0 F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");6 |4 ^: s8 ^" r8 i* l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ O" O1 w* x5 D/ b; X* m+ `% U7 ?
  89.                 printf("Input MAC error\n");
    5 y7 c% b/ Z% v3 H: ?8 f
  90.                 return 1;
    : \% o9 c8 G3 g- Q
  91.         }  ^5 Z; e4 {' j4 t3 u
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 e4 \: w* u7 c" u% @
  93.         printf("\nPlease input new STBID: ");) M" Y4 ^2 M3 R$ D( j# p7 L- L
  94.         scanf("%s", stbid);
    ' X; E+ v6 r7 f; i" E
  95.         if (strlen(stbid) != 18) {1 \( p8 p$ s: L/ G
  96.                 printf("Invalid stbid\n");( H4 d$ H* W9 h4 x
  97.                 return 1;
    ! v7 R8 S% O& Q; T: P
  98.         }
    - ~2 S, L0 F* r' ?5 R; j5 V
  99.         printf("\nNew parameters: \n");' q, n. c$ q5 N& H. I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; a8 B; L0 h9 G7 H
  101.         printf("  STBID: %s\n", stbid);
    $ R) _5 m- x& c3 g" o6 o: N
  102. - M" ~1 w! x1 |) r4 T
  103.         printf("\nDo you want to change paramemters? (y/N) ");, m2 w4 H9 g" o
  104.         for (;;) {
    , W5 ?( C/ h' t( M+ F
  105.                 c = getchar();
    " c- k& ?8 }( \8 B" m5 J$ _/ Y
  106.                 if (c == 'y' || c == 'Y')
    % C1 U( N1 x% w7 _3 C5 c
  107.                         break;6 p  r8 x/ x8 T3 \
  108.                 if (c == 'n' || c == 'N') {4 g8 X+ N" `% U$ `: C- |
  109.                         printf("\nAborted.\n");
    + `; z4 f- L1 Z) J1 J, _, k% D
  110.                         return 1;8 q% h4 x( u: e2 j9 m
  111.                 }
    3 w* q1 }2 Z% N( H; s
  112.         }
    / j; l( u  Y! d; {) L) p7 e, J1 W
  113.         if (writeparam(mac, stbid) == 0)
    " }! x+ ~! c- j' |0 G) P) q' z
  114.                 printf("Parameters changed.\n");% A. s, l1 h/ g  w! K* b- \
  115. ; p. {' H5 w3 i; r' V
  116.         return 0;( r+ E+ Y" E, q# ]# X! j+ ^) b
  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
9 Q  e% r% |9 ]在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

9 d  F' \4 a8 i! {. ~. Y你用的编译命令行格式是什么?
$ F- S5 u, f& e% N" i2 p
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-6 01:49 , Processed in 0.025363 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表