查看: 17400|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% s3 H& g- [) O5 M- m
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    , C2 h; [# P& j  S) D8 |
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:# B; Q2 Q4 u4 x2 j7 k0 S
usage: himr <address> <value>. sample: himr 0x80040000 0x0( e3 Z0 Z: v4 g4 l3 _9 V; V
2 Z; x# n  ]8 z& }

, {2 f! L: G1 @; B$ n8 C5 v不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- c! _0 }7 i% k% R6 H
% ?- z; j! q. b: e补充内容 (2012-3-8 09:42):! A, Y4 H8 F; h: m
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数" A, p9 W; Z8 i/ H& I
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。) e( ], v3 V7 x) C$ o
8 p! f' ?3 b4 W
himr <address> <value>. sample: himr 0x80040000 0x0" D' @% ?) ]* F# U

; M" v- X5 T+ }7 L# y' |/ n例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ C3 P* g: @2 ]himr 0x80040000 0x000 T0 w3 g7 Y- F. o" u. X" F
himr 0x80040001 0x11
& L: s% x  v! ~: f' {himr 0x80040002 0x22! ]9 @/ U0 |, C# }0 G- K4 ^1 ~" L0 n
himr 0x80040003 0x33
/ |9 W3 A; i4 `  _7 n& ^1 L5 i: Phimr 0x80040004 0x441 s; g/ Q8 B. L
himr 0x80040005 0x55
1 C  y% I- v* c# O3 A/ J7 q- f3 I6 }( s
SN也是类似。
: ~3 m" T$ I$ w
2 [- n5 `1 F8 A; [' z- Q现在主要是,谁告诉我们MAC和SN的地址?
( c- Y: C8 l& N- o2 u$ S0 s
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : p& A: U% P3 j5 p) a. o# o! ]
一直想找到运程修改MAC和SN的办法,苦于无解啊
% F, z: i. D0 M! V- X$ t
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
+ ~/ E, F5 s( p3 W- |) @: f& R! V9 Y5 Y' Q9 a" ~9 L9 ]
修改的代码早有了。到今天不会编译。
: o; R( q5 e$ p$ q; T1 A. z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>5 `5 K5 v2 l. v8 \) q1 f7 a
  2. #include <malloc.h>
    ' d0 ]( ~9 J) Q8 @6 a
  3. #include <sys/types.h>
    1 n2 `* M( y; \# o( ^
  4. #include <sys/stat.h>  |; O7 g0 o' q6 ~2 p
  5. #include <sys/ioctl.h>) c$ t/ b. Y) `
  6. #include <stdio.h>! ?; |* y0 Q5 j: D# }
  7. #include <string.h>
    # q3 R3 W+ ]  Z2 f( C  l
  8. 1 b. W0 Y: l3 [3 Z/ ?/ [
  9. typedef struct {
      ~; u- s( H2 a; g; W$ w
  10.         unsigned int        e2prom_cmd_sub_addr;# P' v8 ~4 f8 V: k! P
  11.         unsigned int        sub_addr_count;  I; R; a  L, t
  12.         unsigned char*        e2prom_cmd_data;
    . }7 R. b# ?, r  z0 h1 L7 Y' [
  13.         unsigned int        data_count;. m3 r% A* A" E0 H4 @
  14. } e2prom_s_cmd;
    % U0 D6 @# I  k' g7 Z6 k

  15. & U/ b" j+ V7 D% P
  16. #define E2PROM_CMD_READ 19 W6 q6 t0 a" Q" b
  17. #define E2PROM_CMD_WRITE 2; g6 R0 c( m& O4 g  z( u
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    # W+ x+ E$ R" E& A) }" S7 k4 U1 [7 Q

  19. + `0 p$ F* B- v: o0 r7 C
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " {! s9 q# H$ }3 w9 m, S5 @# _
  21. {$ [8 h$ P  ~2 G. k2 ]; C
  22.         int fd, ret;
    + N+ G; u% c) a& C' b( e2 h
  23.         e2prom_s_cmd arg;! d1 Y& Y) ]' C/ T6 G! ?( i% A
  24.         unsigned char buf[0x18];
    " j/ ^; y! ~: Z. _& ~  t8 M* [

  25.   U3 j8 c+ U/ n& Z' u2 B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % O' w! F/ V* `$ _! |
  27.         if (fd  < 0) {
    & J& o, }8 G' ?0 K! \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , j! J! }0 z# d6 x
  29.                 return -1;
    ! w- q. H2 \$ r, X9 C
  30.         }
    " q8 [3 B' M$ r9 E! A5 d% M
  31.         arg.sub_addr_count      = 2;
    , x( L2 j- _8 f% |: R
  32.         arg.data_count          = 0x18;
    9 y+ J$ F2 ?& `! ^% H8 x5 L* X- Q* M: q
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 t' D# C+ p( Q, j
  34.         arg.e2prom_cmd_data     = buf;+ L3 ~) L8 P# v# \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : Q( w* j# A) ^; k' m
  36.         if (ret != 0) {
    ) K! {3 j% w$ g) L+ K
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    6 }% ?8 {' S- a  F; L9 p
  38.                 return -1;( {# K. ]- {& M# O4 \
  39.         }
    0 P- f; S& h- l: x& S
  40.         memcpy(mac, buf, 6);0 S) c/ e+ O" R0 s* G: T
  41.         memcpy(stbid, &buf[6], 18);
    % n2 l* A9 l. m% H) |2 t
  42.         stbid[18] = '\0';7 E8 @. w- |4 n3 z# ^5 H8 P

  43. ( z9 N( c" J' X' c6 B. E& B% K
  44.         return 0;
    7 ]: P& G6 \: x
  45. }4 b$ G( W: _. h0 R/ H' S5 s
  46. ! Z# x* Z; U' [1 z1 u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 {8 B( p" |4 ^& }
  48. {+ t" s6 w$ h) L0 F5 s  I) s) U
  49.         int fd, ret;
      ]  R0 n( R; J6 g' ^% e* v
  50.         e2prom_s_cmd arg;
    ' e. t2 Z# c! ]  w% C
  51.         unsigned char buf[0x18];/ A8 T0 ]9 q* I+ O! ~4 V
  52. 5 K) H0 `: P; P4 G
  53.         memcpy(buf, mac, 6);; P8 ]% \( h4 V. j- k5 _2 u
  54.         memcpy(&buf[6], stbid, 18);7 [+ u# m. y8 y" A* i
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 I& W) R' f# {; h9 A2 F$ y- M
  56.         if (fd  < 0) {3 U# t# l1 Q% {+ b* B* S! a* u
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 ~1 B, U" W% T( M
  58.                 return -1;' f7 g) x9 V9 i* G+ @1 M& J- U; P
  59.         }
    $ t5 K: h' j; @3 ]- |
  60.         arg.sub_addr_count      = 2;$ M: e6 M8 ^0 N4 y7 z7 e1 {
  61.         arg.data_count          = 0x18;
    ; g5 F' ^8 x" b% R- s# R
  62.         arg.e2prom_cmd_sub_addr = 0x290;# n2 o: d, t' m1 m
  63.         arg.e2prom_cmd_data     = buf;
    2 [) a6 e% U) z1 w& w2 m8 u, B: _
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    7 E% d( o3 j( x& N
  65.         if (ret != 0) {
    ) N9 Z8 U+ Z1 d! O8 ]
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- T' k$ h: Y! _, E) ^8 W
  67.                 return -1;
    3 V! c2 j0 c- G8 @% x, H
  68.         }/ W, F, v  \( N" m( M: l# h! j

  69. * }$ ~1 Z* ?6 q$ L& D
  70.         return 0;
    - l: Z; E7 Y, ^" T0 [, n
  71. }' {6 w, ?1 F7 x; M
  72.   f& Y5 w8 X6 f: l+ Y5 e" Z
  73. int main(), S* S% x5 U* O8 I, O5 n: d  J
  74. {
    3 Q8 D- U, t/ D1 {; Y$ G: e
  75.         char c;  U& Y' [+ Z  A. A3 ?
  76.         int i, macs[6];- P! m: r' G( g5 T
  77.         unsigned char mac[6];" C& e3 s; g0 J. g0 j/ b  x3 u
  78.         unsigned char stbid[256];3 x# b* [) `: ~; o

  79. - Y( r( V! E  ~
  80.         if (readparam(mac, stbid) < 0)
    3 d5 L8 n. Q6 y; E$ ?
  81.                 return 1;
    9 P5 |! P: b! h$ ]" M& b

  82. : q) E( U- ^5 P) b
  83.         printf("Current parameters: \n");
    - g$ i! i( B+ L6 u- f. t
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 B8 _8 e8 l  P6 \7 O! o$ U% Z/ e
  85.         printf("  STBID: %s\n", stbid);
    & E# O4 C0 y7 Y- d( p" j/ |
  86.        
    5 C# S  ~$ n% A
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 y' e* O6 ]) G. i) e( ~3 ?- o2 p
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {7 Q0 }% B2 j% w2 G* c* g
  89.                 printf("Input MAC error\n");
    ! P9 B) M1 J4 g  U2 E, A
  90.                 return 1;( e9 O8 H3 K( g7 [. C
  91.         }4 t6 G3 [# ]6 o# t% w4 E( J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' v  S, V/ K' W+ B6 _/ g
  93.         printf("\nPlease input new STBID: ");
    * z( T  X0 f: I! J& U7 O
  94.         scanf("%s", stbid);. U& e/ n- `5 q4 a2 ~# e$ f( b
  95.         if (strlen(stbid) != 18) {1 b6 I" \2 R; c( e  E& S! A- q
  96.                 printf("Invalid stbid\n");# `  J6 n: y. `" k, d/ Z! E) \* l) f0 v
  97.                 return 1;9 r+ o; E5 K/ Z5 z) y
  98.         }, I/ j/ Q; s  _, t" T+ g
  99.         printf("\nNew parameters: \n");
    $ t4 Y. z7 _, E- C( l3 N3 `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # l* }4 P5 n: M
  101.         printf("  STBID: %s\n", stbid);
    5 I. e6 j9 d( P0 Y) m7 o& @. p

  102. : K+ ]# P. o* |$ Y6 _4 L% |
  103.         printf("\nDo you want to change paramemters? (y/N) ");5 [) Z. q. a; E/ B5 E
  104.         for (;;) {5 |6 V' R' p: O$ J/ \6 R0 ?
  105.                 c = getchar();
    4 {: e$ r2 p2 ]: W  C% M6 |. Z
  106.                 if (c == 'y' || c == 'Y')
    & A' n& ~) A' d8 i
  107.                         break;( K5 d. G# `; X  B! c$ U
  108.                 if (c == 'n' || c == 'N') {- t. i, P8 o) Z9 b0 c9 ~
  109.                         printf("\nAborted.\n");0 E) g. g' p  [' ]! k8 p1 Y0 }
  110.                         return 1;
    / _$ w3 I* J. K8 x
  111.                 }0 Z/ P/ y: K% E8 E" b
  112.         }
    . q2 _" j5 I& b+ ~: b* X
  113.         if (writeparam(mac, stbid) == 0) & j1 A1 ~' y, K$ B
  114.                 printf("Parameters changed.\n");
    ) _$ ~0 K4 x& a& M4 \3 V' D- Q

  115. & K0 U( y/ H2 t* x" Z& `3 f
  116.         return 0;
    0 ]# D9 @( q! v4 z; a; c
  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 . B& n3 n6 H- E& C* o
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 F2 H5 ~0 K; n- \8 y( M. X你用的编译命令行格式是什么?3 |: }' s( N  S- y$ W
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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