找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15744|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr7 E6 s/ c" T8 p$ b& ]9 m. i
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 I- C: W8 Q; j6 p# L8 m  ]% N  N6 p
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- S: m! f1 t% `9 _
usage: himr <address> <value>. sample: himr 0x80040000 0x0
$ p, p# q; ^7 X% i1 q0 y; V
1 V( c1 y, ^9 ?  n% j- |* j* I9 ~
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 d7 q) ~3 _+ @3 O) p' Q, `2 O& K+ h5 A4 b. O$ B0 ^
补充内容 (2012-3-8 09:42):! l" y1 J& f8 T8 @  C
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 C  y4 |5 t# U# g
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
. N! E$ \3 N9 F) c% _! w' D# n, r6 [  r3 J: @" y
himr <address> <value>. sample: himr 0x80040000 0x0
' {" \3 X7 }6 f9 O
- T2 K/ L2 J& T+ J& g% X- D例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
0 O2 r) L# A  k  Vhimr 0x80040000 0x00  |0 e4 B& `, o/ S4 ^
himr 0x80040001 0x11' d: a2 ]9 s- L  ?' v: X7 C. Z5 g
himr 0x80040002 0x223 V8 c& Q  a% M" V
himr 0x80040003 0x33# I. C" E6 K2 T
himr 0x80040004 0x44
( O/ v$ a+ O0 ehimr 0x80040005 0x55
1 s( ^$ D; E8 h+ A3 s9 N- F# t: S/ R4 j. o+ E3 p- k) R
SN也是类似。
- g+ B6 m) `( X3 Y
% t7 X& J2 U8 C" P0 v( B现在主要是,谁告诉我们MAC和SN的地址?
* ^/ z0 b* t+ z- l
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . {4 J( o5 [; @% I/ H- u' B
一直想找到运程修改MAC和SN的办法,苦于无解啊
0 K* \  g9 l! G3 l/ F) F, F
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 0 O: Q1 Q7 b6 D* ]9 R& P9 x
, l8 ^  f% e3 c& l( W. R. b
修改的代码早有了。到今天不会编译。
* k! O8 [6 ?+ j. c/ j/ F需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    4 K, v$ F. M" c' e* G2 ]) q2 t1 Y* u  F
  2. #include <malloc.h>
    / N) ?: o. \  L! n( }% {' Z( Y( b" n) H
  3. #include <sys/types.h>
    2 H2 K1 f' u7 i5 m
  4. #include <sys/stat.h>
    , D$ s7 I* c1 z
  5. #include <sys/ioctl.h># ~4 a2 f7 L% u- M  a9 T
  6. #include <stdio.h>) u) c4 ^5 n4 k' t' Q
  7. #include <string.h>
    6 ?( p% @* {+ |2 l! e1 h* u0 z
  8. " D5 u: S) k# v( L3 I
  9. typedef struct {4 f! h9 Q$ G9 N7 X4 C6 \
  10.         unsigned int        e2prom_cmd_sub_addr;7 p6 y/ u6 r+ ~( q3 J/ M/ a# `1 P
  11.         unsigned int        sub_addr_count;
    % F0 L2 k( w3 H' N$ ]
  12.         unsigned char*        e2prom_cmd_data;
    + m5 j" ?) u; c# T+ K6 a1 o& x
  13.         unsigned int        data_count;
    ! N) H# W7 w9 e; I+ o
  14. } e2prom_s_cmd;" G( |* Q% w! a+ e

  15. $ ~9 g: {, p% }( n+ @
  16. #define E2PROM_CMD_READ 1! i% C: r* m7 y
  17. #define E2PROM_CMD_WRITE 29 e2 g. A/ H1 u* E# J3 b9 U
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% ^8 C8 s% ?$ }
  19. 6 T9 O- E3 ]3 \) l
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! C+ _9 b3 g  \
  21. {
    ! N2 o2 R% O- K
  22.         int fd, ret;8 ^4 w) f5 V: R8 \6 J/ y
  23.         e2prom_s_cmd arg;
    3 \" j# f" V4 ^( @) L/ q; D; `  W+ N; i
  24.         unsigned char buf[0x18];
    , e- u' v8 N8 ?# y2 O$ l* V
  25. $ b! T. v0 v! d7 [
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  d: g. e$ K& N9 Y3 n
  27.         if (fd  < 0) {. l- h5 _* L+ J, E3 n
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 _  x5 x9 \7 l6 |8 R
  29.                 return -1;
    0 Q7 b  \" K) ]$ A
  30.         }
    0 k/ D9 r% p: p1 j  P/ H, R
  31.         arg.sub_addr_count      = 2;
    ( e2 Z# W) n9 M8 ~  h$ ^
  32.         arg.data_count          = 0x18;
    9 }! d& ]$ ?) `1 B* C/ j$ i! ]3 D
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & [8 Q- Y6 o$ K. V4 @% q
  34.         arg.e2prom_cmd_data     = buf;
    " d7 m& q0 {; m; P# y4 I; o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* N/ {- [. h, w% H  L/ K! L
  36.         if (ret != 0) {/ |/ |8 G6 y% q' Z" H6 Z+ {* c% E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    2 T; d4 e/ z0 @! N# `# }' e
  38.                 return -1;
    / G1 e: z+ ^/ p$ Q( F* ?0 b
  39.         }: f& P5 N! g5 I* Y& E+ U5 U
  40.         memcpy(mac, buf, 6);
    ' }5 B4 J+ j9 m: I& Q
  41.         memcpy(stbid, &buf[6], 18);7 v: {7 M! o) I( [
  42.         stbid[18] = '\0';
    + J7 D* c( Z* T' t7 H8 k0 [

  43. 2 `& I  c9 ~6 `/ A0 s5 S
  44.         return 0;
    ) V1 k" Y2 @3 `( `8 g6 U+ ?" S
  45. }
    7 j! q1 S- m0 c8 c4 _- d8 c4 X
  46. ( Z3 h8 g; w8 o  X4 h# F
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 h7 n4 w4 E+ S* p% E  \! k$ Q
  48. {# Y# b0 d# C; u# t2 L( e+ y! l* Y
  49.         int fd, ret;
    ' S8 v* b( ~$ `' b' t4 d7 G
  50.         e2prom_s_cmd arg;
    0 Y1 E; T3 ~1 T: H/ v6 o
  51.         unsigned char buf[0x18];
    - Z) N8 f" R) X7 V- k
  52. 3 t# ?7 U* B! Z- K4 J
  53.         memcpy(buf, mac, 6);) u+ P, g* X. Y+ K: g: T
  54.         memcpy(&buf[6], stbid, 18);7 R. G8 y' ?# v) N0 F& U  u
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! Z7 _9 X( k6 Q" o  c
  56.         if (fd  < 0) {3 n7 \$ p+ _  f
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 b5 w& r  X: e7 k8 q
  58.                 return -1;8 R6 b, X$ D! x. o3 s/ |) D7 c$ G/ H
  59.         }; G' V' R2 z0 a$ g/ I& Q/ `* h
  60.         arg.sub_addr_count      = 2;/ @; S* X+ n; w" q# [: X3 [- O
  61.         arg.data_count          = 0x18;* s* [2 l5 M( h; k
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 a, r" w$ \& s6 R
  63.         arg.e2prom_cmd_data     = buf;
    * C4 F+ S) G1 p, b8 m
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);3 B- B7 A: d+ D& P5 J3 h
  65.         if (ret != 0) {- i5 e7 ~0 S$ z& E+ {2 }+ N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 K; J. N8 n0 X" A1 ?: X) G- D4 V
  67.                 return -1;- q1 ~9 e* v" B1 {9 C
  68.         }% ?' ]# ~- L. i0 ?" I' Q9 V7 l
  69. 2 `  I  L: ?' F! e4 {5 F
  70.         return 0;/ X7 K3 c0 K1 W2 T; Z4 J' Q$ A7 |4 C
  71. }
    3 F- A% X! K- j; I# W
  72. 1 I( V8 y6 Z6 z* k7 F# q- s. O
  73. int main()2 H# K* V# l3 }2 s: q2 v
  74. {
    / I$ t8 n8 U/ ?- e) G' Q
  75.         char c;. N! {) I! W' {! `' A  B6 Q
  76.         int i, macs[6];, I0 f) m5 {( p. h7 G1 ]# s
  77.         unsigned char mac[6];
    - U1 D' P2 n3 ~2 a) Y5 _' |  r! z
  78.         unsigned char stbid[256];
    # n; t; x: Y: @( k; j4 C4 p6 \
  79. 4 H8 j& _! j2 m0 z8 Y
  80.         if (readparam(mac, stbid) < 0)
    2 ]) p3 X9 G" M" \- S
  81.                 return 1;
    ) v: }0 e/ ~+ X0 y& D. u, D( Y

  82.   n3 V# |; o9 N* |& m9 v( Z( o5 g
  83.         printf("Current parameters: \n");
    : ~. T4 v( J2 g0 d# l/ C2 U. x
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; y, g( x9 s7 ~6 v4 t
  85.         printf("  STBID: %s\n", stbid);
    ; ~& d) M, y! f
  86.        
    % t2 c$ x  F- e* c5 y) @* d8 _9 |7 m
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    1 A3 [& e  f! j* B" S% |& r+ M
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    % |" c- r& ^% [$ ?) v" e0 s: A
  89.                 printf("Input MAC error\n");4 |# ]4 u/ m( f  I- T' U5 x
  90.                 return 1;
    / ~6 a* G$ m' N0 ^4 B7 p
  91.         }
    - o1 o$ I# U2 u
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' E: `) e- S  ~* R5 P
  93.         printf("\nPlease input new STBID: ");' K2 J/ j1 m1 t
  94.         scanf("%s", stbid);
    8 i: a: |7 S7 m
  95.         if (strlen(stbid) != 18) {- i  \3 F( C. I: b' [
  96.                 printf("Invalid stbid\n");& n% ]0 y3 a: |/ k
  97.                 return 1;# p) U  L+ T8 i# v4 ~
  98.         }
    2 a4 ?  U( a1 s
  99.         printf("\nNew parameters: \n");6 }4 c! E! O, G  J5 w. F
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; v+ }" `) _  X
  101.         printf("  STBID: %s\n", stbid);1 i2 ]# B/ e5 N( U9 g2 S  b
  102. 7 ]# x$ R% q" ]+ t; O# Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( K7 s) X; \' Q( i* C2 B* V7 }4 G9 P
  104.         for (;;) {/ O  g% f/ u" L- y3 `
  105.                 c = getchar();2 U- u6 ?: T7 }; K2 H" b
  106.                 if (c == 'y' || c == 'Y')
    & `) T) Z2 F$ J  C* T' ?) l+ H; x
  107.                         break;
    4 }2 ?" h; l% e5 O
  108.                 if (c == 'n' || c == 'N') {
    0 p" t7 I& U& W7 A; u. J
  109.                         printf("\nAborted.\n");% I% l  |# k9 }& p- m) o( e! A
  110.                         return 1;  v' p. [+ F# X
  111.                 }
    ( V3 g9 t4 ~9 ], O: @# e
  112.         }
    8 ~! D$ f- @" f# [/ L
  113.         if (writeparam(mac, stbid) == 0) ) U3 |% T7 F0 T& p
  114.                 printf("Parameters changed.\n");! X' U9 Q$ S7 n
  115. 3 H. `0 p+ e0 A5 c, k$ D6 S) Q( z
  116.         return 0;
    3 X# {) T$ H) J: _5 t
  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
: L8 Z5 R5 Z) N) m在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

  P, j4 F0 a# L2 Y你用的编译命令行格式是什么?; u2 n* O& X' M6 M) ?" Y
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-8 06:43 , Processed in 0.023506 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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