查看: 17483|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 Y& v) ^$ f0 L( ~( F$ z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 l  U4 ^9 ~( l  z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
. D8 K5 A# ^2 b' t9 j6 M; cusage: himr <address> <value>. sample: himr 0x80040000 0x0
! R0 H6 n  R# ^$ F# _: Y* u. b1 I) ^' d; N7 O8 x5 ^

1 @- ]2 @6 {+ x+ `1 a不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  D( e  Q5 o, ?/ r! W. c3 f/ @( I. x# i  d% F  B. o. H
补充内容 (2012-3-8 09:42):) E& W4 k2 |( m
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 z5 }5 o* Y0 Y2 ?- r7 k
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
% p- `! u# S) F! _1 d% l# B2 O9 _' U4 ~
himr <address> <value>. sample: himr 0x80040000 0x0& s% }1 N+ h6 ]- c# _3 H9 O" Y) c/ o

& Y3 y( V. H$ W0 X, k3 b* H例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。3 y& p2 p% }9 v* `
himr 0x80040000 0x00
" D- V" I, S$ v# @4 _himr 0x80040001 0x11$ n+ Y- c$ h; a; s& n1 n
himr 0x80040002 0x22
7 {$ N- I2 Y2 ~4 {  @% P( B/ |0 S3 l* ihimr 0x80040003 0x336 ]' D$ u  Z' p) I" c3 {
himr 0x80040004 0x44
6 ]8 R3 x& P+ n% E- x2 }8 zhimr 0x80040005 0x55
' ?- D( N- ~* C6 s' g  K$ Y
9 J1 }% m7 v/ K/ N. KSN也是类似。3 _% S# {$ z; m! G

( {: y1 f' v: l" }, q4 a现在主要是,谁告诉我们MAC和SN的地址?9 n; t/ Z3 c5 I
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 N  q+ v1 ^) K/ s  s$ A一直想找到运程修改MAC和SN的办法,苦于无解啊
; ]1 V: R9 z0 O: |/ z3 S
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + {6 W* i+ S+ s/ `" ]; ]) N
1 r* }! i* P. j7 \' W
修改的代码早有了。到今天不会编译。  Q% e+ ~' ?! m
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / b9 s2 f& _$ n( w" O' G( H
  2. #include <malloc.h>
    , l/ h3 `: I2 [0 o% F7 o# \
  3. #include <sys/types.h>; g; Q, n% Q0 j
  4. #include <sys/stat.h>/ _! a  x3 u5 A0 {6 B2 \
  5. #include <sys/ioctl.h>0 v+ J, Q% v" f7 P  k
  6. #include <stdio.h>/ L& }" X- o9 e4 H+ f9 F
  7. #include <string.h># \4 R' n* g* I( [$ B* S  V# u

  8. # @8 ^* c. w; ~4 }) A0 x
  9. typedef struct {
    8 H9 b0 y, O5 ~- T& }1 e$ e1 G
  10.         unsigned int        e2prom_cmd_sub_addr;8 ^; g* M" V' d0 |2 H( K4 I
  11.         unsigned int        sub_addr_count;
    $ ]& ~* p- C# J5 _$ `
  12.         unsigned char*        e2prom_cmd_data;( o  Z2 G, [: Y( \9 Q( y4 }! o; x
  13.         unsigned int        data_count;
    - h4 Y; U; {$ ?' F0 d' w
  14. } e2prom_s_cmd;
    0 b6 Y( R. n" s  h; [

  15. ' O- `& S# a; t# V5 G* s2 A
  16. #define E2PROM_CMD_READ 1& p) w- \7 ?. T* b! |* @1 p2 I# ^9 l
  17. #define E2PROM_CMD_WRITE 2
    " L2 U6 K9 t$ W5 k
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"$ o: r7 g/ O0 `( R( w

  19. % @" P. z- N8 v/ \- B0 W1 Y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# ^4 ~. k, C  s. s! p# f( y4 g
  21. {' ^4 D& t  r9 M1 [& _+ a
  22.         int fd, ret;
    + p/ s# D: [) L
  23.         e2prom_s_cmd arg;9 T0 x5 b7 L: m: C, \  j
  24.         unsigned char buf[0x18];9 ?9 _6 M4 Z/ F/ i
  25. : N: s' H: X# I: z* C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 I2 s  W1 B/ P; ?
  27.         if (fd  < 0) {
    , I! |1 C- f" f# O( S$ g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 u: c9 ~3 ]6 r# G- Q4 i
  29.                 return -1;
    - P/ x9 D/ Q, U  B
  30.         }! m, n. W9 e% d( K- c; K1 V" u
  31.         arg.sub_addr_count      = 2;
    ! [$ e% x# [* |1 x! `
  32.         arg.data_count          = 0x18;
    2 Y3 r, F% ^- B, x6 \0 |( [7 @
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / s+ d$ |% G* w7 k
  34.         arg.e2prom_cmd_data     = buf;. b; k2 x) k( S) M$ _: M1 O
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 s5 }, H: X; H9 s9 G
  36.         if (ret != 0) {" U1 L6 y9 {0 N5 k' X
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - t3 i" N: w6 o" m
  38.                 return -1;; z/ A7 G4 _/ U$ x2 [
  39.         }
    " v- B' c0 y! p9 p" R, z0 k
  40.         memcpy(mac, buf, 6);
    5 K2 `, q9 E5 v7 Z
  41.         memcpy(stbid, &buf[6], 18);& z0 E  |7 ^; {" M2 f5 \  X8 b
  42.         stbid[18] = '\0';
    / G- u3 b) q- |2 S  s) b1 E9 P
  43. 4 a8 ^! t- |7 B2 C. \3 F6 R
  44.         return 0;
    4 z0 e& Y* d  r  _% a
  45. }( p* K6 ]- X4 R9 z7 U; A, O; m5 [2 l
  46. ' O6 ~, V) J* v3 T/ Z# c
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  q, {3 Q- `" T1 G; W
  48. {% d2 p0 N; V& ~* b0 Q5 {
  49.         int fd, ret;) ?/ Y- w# n: c: L, w
  50.         e2prom_s_cmd arg;" @" f( a. H/ y
  51.         unsigned char buf[0x18];
    . V" c$ i, d5 Z. B; Y' V9 S

  52. 4 }0 [5 F2 f7 c0 U9 [' P& `" A
  53.         memcpy(buf, mac, 6);
    1 w  R+ P' [0 e5 K& a) G4 i* I
  54.         memcpy(&buf[6], stbid, 18);
    ) R" t9 j5 k  `, U0 n+ Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) j9 I+ R3 p& I; a3 i
  56.         if (fd  < 0) {6 f) [: U1 M4 X( o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 V" _9 g' e* d# H. P
  58.                 return -1;
    . F2 m! D3 ?$ R
  59.         }$ Y8 \' b* \# N- {5 `0 W' O" P+ C
  60.         arg.sub_addr_count      = 2;1 X8 E: I' B/ i, C5 J9 Q: Z
  61.         arg.data_count          = 0x18;# _' J6 c! \$ {) J2 m8 _0 w- U
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 S& {& u6 A# Q+ H
  63.         arg.e2prom_cmd_data     = buf;
    , H6 h4 N5 n3 q: L
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    & S! U' O6 W: W. O6 A* [) r9 q# `
  65.         if (ret != 0) {1 c3 N: x+ K1 a& t$ D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
      U) S0 T4 g% n7 p5 W; F
  67.                 return -1;; i, ]8 ~/ R3 H9 d; z( A- x' M5 r
  68.         }
    ' W" y- m" ~" g! C4 i
  69. 2 w( `+ u0 ]$ N7 i1 w$ g$ o* J8 v2 U
  70.         return 0;7 U. [" q" o5 |7 j: B
  71. }
    7 J3 {  v' N! ~, Z' @
  72. , s: L" t: y! E; U# o/ |5 F- M3 }0 M! r
  73. int main()' ?  w: `( S$ N- a3 o1 Y& B# g
  74. {
      z  V0 y, q- N% Z( Y) A( C
  75.         char c;0 ^, ^6 I5 [: }' @. F* K; l3 D( ?
  76.         int i, macs[6];) Q7 C1 z8 S9 o7 r+ y) f
  77.         unsigned char mac[6];
    % ]) c% d# U7 _8 e
  78.         unsigned char stbid[256];
    5 p2 X% H& d; A' U) ^- R1 K

  79. ! f4 ^1 A' a1 I9 e1 ~; X) N
  80.         if (readparam(mac, stbid) < 0)
    * y5 d5 w  p" n5 l1 C  S- _5 Z0 T
  81.                 return 1;
    8 |  q% F5 q, U2 v7 ~

  82. + H: A5 g6 f! e* t
  83.         printf("Current parameters: \n");- J1 B4 M7 k$ s3 m
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- w! U+ e" ~* ^' m( F. F% g9 t) F
  85.         printf("  STBID: %s\n", stbid);
    / x6 p3 S" {& M$ b
  86.         + p; z) F7 v( {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ) o- ]/ R# b% p" _8 \: s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  S8 F5 e4 k8 w& p8 j
  89.                 printf("Input MAC error\n");& R% I0 c, Z% X8 t0 F% K9 P
  90.                 return 1;
    ! a, R/ ]  W% a
  91.         }
    # w0 P8 R- H. ?" D5 P- V. I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 X- j- Q8 t, M4 |
  93.         printf("\nPlease input new STBID: ");' h' I/ e& G3 n: a
  94.         scanf("%s", stbid);" v5 f0 w; Q% e& l5 b/ B
  95.         if (strlen(stbid) != 18) {
    + h# a2 U* x# ~; u5 G% z2 h0 p
  96.                 printf("Invalid stbid\n");- |( }& I) a1 f- a6 y+ H
  97.                 return 1;! H- Q  b) K, w  w. U# b
  98.         }
    6 C( K) ~5 a1 ~9 M
  99.         printf("\nNew parameters: \n");
    ; Z) D0 P. i# D- P5 `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 K( i7 e- O! [% y  V0 o% f
  101.         printf("  STBID: %s\n", stbid);
    6 \# A% Y6 ^1 A/ c! \
  102. * y# e& V8 n9 U
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      r/ I4 A! o8 K( K7 i' F; i- F: w# y
  104.         for (;;) {! w0 W7 E) M+ U# ], B* N* h
  105.                 c = getchar();
    , A2 r$ ]* S  P; L5 h! p
  106.                 if (c == 'y' || c == 'Y')- o4 |6 G0 a9 ~. m' k
  107.                         break;
    * }; y: m1 l; x- R' {' ~% b
  108.                 if (c == 'n' || c == 'N') {; r6 t. O/ B# A9 |& k: I
  109.                         printf("\nAborted.\n");
    6 Z( r2 v0 l. {( }
  110.                         return 1;9 \! o, G; n: x0 \+ E
  111.                 }
    $ G: H8 Z5 U" ]5 Y
  112.         }
    ! x, o8 Y& }& a5 c+ x+ i
  113.         if (writeparam(mac, stbid) == 0)
    - \8 d8 Z. q- D8 D' L( e/ @# U
  114.                 printf("Parameters changed.\n");
      ^! V8 S8 J; m. f
  115. 2 T% x& ?. R9 `. R9 S! l
  116.         return 0;
    5 n6 j+ n3 l9 a1 a3 l
  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 % R. c- e6 R) u  q9 H4 E
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 _4 b8 B/ W* y  Z1 o5 N你用的编译命令行格式是什么?
6 }; }! n' A, u- F1 S/ c
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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