查看: 15926|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 i' ]; ?' m+ ~& {. {: t! H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    + X: A6 {3 [, E/ O" N
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% R( X8 n- K9 G/ i8 O/ e- g
usage: himr <address> <value>. sample: himr 0x80040000 0x0
7 V6 V1 w& ^& i" B1 N; @2 Z/ s
. k0 N! Y$ `7 G+ p
4 E; m# X, I+ U. s: x  M9 k5 n2 G不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ S' \) K/ c) B% i! j# d
1 o( p6 M, y- R4 X4 r7 {; M补充内容 (2012-3-8 09:42):
6 I: P# ~, P" m6 ^* g; L$ C7 uhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ u! ^, [; k* u+ f7 i2 w; W这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
- x( ?4 e( v( K, Y/ P7 e
# g/ L4 F( s# H* uhimr <address> <value>. sample: himr 0x80040000 0x0
/ x" |% L* o2 Q- S: k8 E' v7 h0 m4 s5 Z3 X5 k' I2 J
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* R$ L% N0 y' D8 a% [( ~
himr 0x80040000 0x003 `& ^' {$ v- \0 E, Z. l1 }+ ?
himr 0x80040001 0x11
2 W( e& A7 C3 c, o& {! Mhimr 0x80040002 0x22
$ t/ }7 r$ |7 f; phimr 0x80040003 0x33
5 w, I: ]1 B, X  r2 g- vhimr 0x80040004 0x44
; v/ ]& b  o( D- ]  u; V* u/ E& Mhimr 0x80040005 0x55) U! n4 D8 ~  ]: `# h, e1 J

- r* P2 Q2 @) b( ^) W! E$ z5 nSN也是类似。; Z# J" C% o" o9 d( T8 j0 ^
* L: f+ Z( f5 \0 ~
现在主要是,谁告诉我们MAC和SN的地址?
: J& ^+ }. i! r$ c
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 + }0 x& a, @- [0 D/ s
一直想找到运程修改MAC和SN的办法,苦于无解啊

# u7 `+ l4 k1 @8 L9 K1 Q# C+ D源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% K6 E/ `# z! k6 s' S+ \
, j; A) b5 j6 T" D8 `6 b& v, U7 K修改的代码早有了。到今天不会编译。
2 I1 v6 }' R' E- ]- A9 `需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 J, |) ?) \! y% Z
  2. #include <malloc.h>
    1 [( e' Z: W! k0 J
  3. #include <sys/types.h>
    : ~+ B8 m( N4 A# V. I) |. R
  4. #include <sys/stat.h>
    3 e% x; p; i( L) p! H+ V
  5. #include <sys/ioctl.h>% S! Y- {  j/ B, y7 c
  6. #include <stdio.h>
    5 i$ W" B$ Z2 l1 U: e# K% B! D
  7. #include <string.h>
    0 H, B. ?6 K% V! |4 S8 D1 A+ `, j

  8. $ ]. w: B2 {. N; R. ?8 U; f; [3 j
  9. typedef struct {; ]3 E. `$ Y9 h( J/ j2 o3 J
  10.         unsigned int        e2prom_cmd_sub_addr;: u) T# k4 ^* t* |- f% p2 q
  11.         unsigned int        sub_addr_count;
    - p7 a8 }+ @+ Q
  12.         unsigned char*        e2prom_cmd_data;
    % S( e, `- b# z! `5 }, ?+ c3 ]7 z
  13.         unsigned int        data_count;
    8 `+ x8 i  y3 H$ j  k# K- {! c
  14. } e2prom_s_cmd;
    5 X% [0 F; p& {* w

  15. 5 l7 l1 z: v( Q. S; l: d
  16. #define E2PROM_CMD_READ 1
    # O1 o4 O! I9 a+ L6 @* H6 {9 Y* h# N
  17. #define E2PROM_CMD_WRITE 2
    , w# B6 D* W' K  J6 q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"7 r- h/ ?6 }1 }% n

  19. ! M  H3 h" N% W: \
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! M) q% _: h6 V' Q
  21. {7 l4 q+ b3 r# M0 F# U7 Z( C
  22.         int fd, ret;
    ; S9 B6 s: X6 ~( ~* [# x5 F3 P
  23.         e2prom_s_cmd arg;
    ) ]" l) F; K, `7 {- ?
  24.         unsigned char buf[0x18];
    3 p# u7 ~( Z# ]* F  K9 K
  25. / |5 C& ^& Z6 T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " ]# A, {+ M" N; J
  27.         if (fd  < 0) {2 R3 l. G7 p8 g6 I
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * J( T5 z! I5 b6 _
  29.                 return -1;
    + q. ?+ X! u- Q5 D+ p3 Y
  30.         }+ |, A3 ~8 X$ ?. M8 a7 l+ s) O) H
  31.         arg.sub_addr_count      = 2;
    6 L! \( w  T4 h$ t0 Z
  32.         arg.data_count          = 0x18;) ^' u7 ]; p" q7 _$ E
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 C. H. [5 r9 |3 n) U; }7 U* _
  34.         arg.e2prom_cmd_data     = buf;
    % i$ u  m+ Y( d" @# x/ E
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ) N  ^$ }) R: Z7 u
  36.         if (ret != 0) {+ ]' y  F: j. U$ t+ [6 s3 T6 w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    : B  T, f8 B: x/ J/ y
  38.                 return -1;
    4 \" j% r) F' `8 v: `8 Q6 a' z
  39.         }
    / [  m& A0 {6 T! P1 P/ G& F
  40.         memcpy(mac, buf, 6);
    2 T# r+ ~! Y: o
  41.         memcpy(stbid, &buf[6], 18);4 |: R9 m$ `+ t% {
  42.         stbid[18] = '\0';' ?' d: x9 T) _) f

  43. 8 l, ]! g" x0 W% M9 H4 R4 X
  44.         return 0;/ l# m" l8 S+ \$ H2 V
  45. }/ N# G5 y, b' s! l9 F
  46. 5 h4 f& f% t3 x3 v; e! q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)* g0 d& D( T+ Z
  48. {7 k. y" i) g+ M7 w- y1 N
  49.         int fd, ret;
    : M) D: k+ @0 S0 c: U9 L3 ~0 r* F+ X
  50.         e2prom_s_cmd arg;4 _! K: [9 Q- K$ b) |8 r$ J2 k
  51.         unsigned char buf[0x18];7 @- C" g9 h% H1 D5 z! \. k( F
  52. ) C) g# {  c* A; b3 E
  53.         memcpy(buf, mac, 6);
    # c  s9 E4 L& n/ f, y& L
  54.         memcpy(&buf[6], stbid, 18);
    ! \" ^3 f$ ?7 r& }! s, i7 X, l
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ b4 }% X1 a- |) F4 q- h
  56.         if (fd  < 0) {8 `! F" G' S0 T5 l: w4 B2 K( A& F
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* q+ t0 E  N5 R3 `  M
  58.                 return -1;
    7 y# n2 j) ~7 L3 L  n- @2 `
  59.         }
    3 p  u3 W' C: r1 o0 J" F. O( {
  60.         arg.sub_addr_count      = 2;
    9 H. ]4 ~5 t* }# X% D% G7 w
  61.         arg.data_count          = 0x18;
    4 H, g) S; f3 u: L5 Z! k0 G
  62.         arg.e2prom_cmd_sub_addr = 0x290;# g4 S# B5 P1 B  [
  63.         arg.e2prom_cmd_data     = buf;( P% t  M, p, Y, [' X# o* G: a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: r2 x. \+ O/ X* z8 b
  65.         if (ret != 0) {
    5 |3 `% Z( V7 [+ W& B
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    / Z: k' l% V- D' i" k
  67.                 return -1;7 v$ ]- X* |! ]/ e5 \8 j$ ~1 N
  68.         }' N2 z) }! m' Y4 a( R4 k, I2 u9 Z

  69. 6 @7 J5 T+ B: u# W0 }6 y3 I
  70.         return 0;* ^5 M/ P9 l  G0 @& J/ X( q. R
  71. }
    $ F3 p, C  a7 I) F: r
  72. / Y- [' _/ y. @+ I+ P% q
  73. int main(): L; M8 J5 ~" b$ u2 c: [
  74. {: u  W% b# I+ L- }2 V
  75.         char c;) g% F! ^4 n8 Z4 l! v- J
  76.         int i, macs[6];4 E( Z# w+ X3 W. a) |- j. L& O
  77.         unsigned char mac[6];
    7 \7 j; U) O& ^" P; k' N5 K
  78.         unsigned char stbid[256];
    6 O5 f  R: K$ z: d' z
  79. 4 P( R7 Q) ^, j: m6 C& e: ^  S0 ]7 ]
  80.         if (readparam(mac, stbid) < 0); g7 M6 Y6 X+ a6 A; f
  81.                 return 1;
    / r. U) j+ _- c  ^" [1 A

  82. 7 i: q! A4 U/ v6 S
  83.         printf("Current parameters: \n");) W( B% \8 m' }9 Y9 w! y, t. r
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      Z, ~! m. M! X7 u: N3 R+ q4 w
  85.         printf("  STBID: %s\n", stbid);$ V' P6 _: V: `2 G, G1 @
  86.         $ l: @( j/ o: h, u. {5 N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ; ^( S- `1 M# d; U8 e* B( n
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 y% q" v2 h( ~& R2 Z7 k
  89.                 printf("Input MAC error\n");) B( l4 o' P: g2 x% `6 k
  90.                 return 1;* s! R6 W* d5 `9 x  O4 I; c# w
  91.         }
    + l# H* a3 z1 p' A" p$ Q1 q: ~: I5 ^
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 z' k2 _: D7 m, I; j( b
  93.         printf("\nPlease input new STBID: ");
    ) u+ V7 A# z! K2 n( w
  94.         scanf("%s", stbid);
    ' @. }1 g. [  ]" O6 C3 R$ z
  95.         if (strlen(stbid) != 18) {: N8 v0 b& m- F8 Z" u8 I
  96.                 printf("Invalid stbid\n");' V/ j- @% ]* t6 o2 B
  97.                 return 1;
    5 c; R& p8 Q8 L
  98.         }
    + R: q1 e/ s4 `4 B* B- S( Y
  99.         printf("\nNew parameters: \n");1 q! W. D+ v9 U/ J; @- k9 R3 J
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 Q4 C. P! a0 @" G$ d5 g- L; H% u
  101.         printf("  STBID: %s\n", stbid);. C( D% U' \( r1 \5 a' F) W6 M

  102. ! V% x) a6 q0 p; `) }2 j$ s0 t
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 [+ [' N) F/ }+ ]! q1 ]$ j9 D
  104.         for (;;) {
    ; A4 A* u4 V: h$ r# k6 `3 w
  105.                 c = getchar();1 f7 q) ~( Z/ e* ?+ T1 q9 T; l
  106.                 if (c == 'y' || c == 'Y')/ ^5 H3 x0 V$ d% U+ j! C
  107.                         break;
    0 B4 Y& i9 ?* D( \7 k
  108.                 if (c == 'n' || c == 'N') {5 _1 Z6 m* R; ~* `
  109.                         printf("\nAborted.\n");0 o9 n, I" i& f( k$ ^: H* ?
  110.                         return 1;5 t( |! [6 q6 f6 f+ C+ ~  X5 K& m* k
  111.                 }
    + F" Y( o) D- F) I4 X1 Q+ I6 R' `
  112.         }
    / c0 [0 M8 j$ x2 d; H
  113.         if (writeparam(mac, stbid) == 0) 8 \% {+ |3 |5 U! y6 W7 [# `
  114.                 printf("Parameters changed.\n");
    ; ~8 c2 T/ c! [$ b* ?; Q
  115. 3 m* K8 J. S" G: ?
  116.         return 0;
    # ?' ^% {& {2 _: ]8 T6 R. e" y
  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 5 @0 i/ j& A& O  o& z8 v
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" M- o1 Z* j/ I, g( b
你用的编译命令行格式是什么?
/ P6 Q6 N7 j6 D" D2 R5 u+ C6 G3 [
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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