查看: 17961|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 t' d0 k. \5 N& @$ q1 U0 ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) D+ f1 [7 x+ d- y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:8 n5 ]7 |; d+ ?  }) G+ t0 g
usage: himr <address> <value>. sample: himr 0x80040000 0x0. S' U6 z4 R  O; b

7 @& Q$ K4 f; [" Q! }! W  x5 j; _( n( O2 R
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 m5 S. m, Z& Z# u$ g" u. J9 c

/ y& U5 J3 A9 Z补充内容 (2012-3-8 09:42):
3 K; w& d; B; H5 R+ Z3 whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数" v5 A2 E, C! z- x$ R5 B2 g
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
/ l% p% z) {4 h! u3 L9 Z
- v1 N$ z. o' Zhimr <address> <value>. sample: himr 0x80040000 0x0
; ^; |/ ]7 y# E) V7 J& F* R- {  |; o5 L6 @6 ^
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  j+ o, u$ H/ q- W
himr 0x80040000 0x006 G4 f) `  o% I1 v6 O" ~* [5 ^
himr 0x80040001 0x11
5 c- L6 F- J: j" a/ v) }( mhimr 0x80040002 0x22$ [8 h4 `: i2 w% I' j+ ~. b
himr 0x80040003 0x33" Y2 N$ m+ Y, Z- L
himr 0x80040004 0x44
1 o% f% o0 }! M8 A, G+ ghimr 0x80040005 0x55* F+ ?* E. O9 |2 z9 B
4 X1 ]0 e. @2 N1 X7 D# W, X- @* v) E
SN也是类似。
/ a1 {6 Y" `$ s; K; ?; `" U' ?* |* F& ]) u, c1 L. y* j% ]
现在主要是,谁告诉我们MAC和SN的地址?# |( B$ \' f9 I  q% f; l
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 |& n6 P5 Q' s. M( [) X一直想找到运程修改MAC和SN的办法,苦于无解啊

' v: _; \5 {0 d5 V( G源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
5 R+ j9 F$ ~% j- `/ m* t' {; e' y9 X7 \
修改的代码早有了。到今天不会编译。
0 m1 J' w) X, K( i2 l* I4 q" y需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    7 z( h8 Y/ @5 y( S% X% m
  2. #include <malloc.h>
    & d( }* h+ j: |9 f- C  H/ ~
  3. #include <sys/types.h>8 i; s1 \* ?, c7 i
  4. #include <sys/stat.h>. E" G" P8 D: l9 ~
  5. #include <sys/ioctl.h>
    # ^5 H. f, v. [
  6. #include <stdio.h>0 G, L. R% {) E
  7. #include <string.h>
    + }' }4 ]8 _- B+ j' Q' V
  8. ( ^) E2 a9 ^8 s; n& g/ U
  9. typedef struct {* [( }6 `- D1 f, o) q( ^. o% K
  10.         unsigned int        e2prom_cmd_sub_addr;5 K2 m! ~7 q% j7 [: @4 m8 N8 w+ D
  11.         unsigned int        sub_addr_count;
    5 N( Q3 Q4 u* W# n6 F
  12.         unsigned char*        e2prom_cmd_data;
    ; ~/ V0 G0 K: a; h5 m  _
  13.         unsigned int        data_count;
    - _& g, H: h& i# R& N
  14. } e2prom_s_cmd;- u, h8 F. }+ P
  15. $ L( i4 z- }0 ]% n5 Z: x8 }. C
  16. #define E2PROM_CMD_READ 1
    - X( R4 A" x- A, i+ ~
  17. #define E2PROM_CMD_WRITE 2
    7 |9 F. F" Q' e4 ?4 f3 h; p; c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' u) b" O# v9 I( X* ]' t

  19. ; Z# `3 h) V: Y; ~' D6 H" w' e" ^- H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 E+ r, Z/ h5 H7 ?2 d2 R' L
  21. {4 {. d$ v3 p- \/ K0 U" V
  22.         int fd, ret;5 y: r1 S7 C2 Y# r* R  _5 V
  23.         e2prom_s_cmd arg;
    7 {2 W( ^# ]4 ~" `9 r
  24.         unsigned char buf[0x18];
    , \3 y8 ]  o* B) f

  25. 2 R7 s6 ^* z2 c) m% ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 p3 |* J5 _1 U" p
  27.         if (fd  < 0) {
    : H/ B4 _( V, |  I, B% ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 }) N: l5 x& L' O) J
  29.                 return -1;: R* P" _( S8 L7 r
  30.         }
    / N$ [  d$ |. [- o4 {4 I
  31.         arg.sub_addr_count      = 2;
    ' O' m7 y( B0 f
  32.         arg.data_count          = 0x18;
    $ B: G0 n/ T9 R+ ?! n8 P
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % x2 L, J8 L: t/ h6 `
  34.         arg.e2prom_cmd_data     = buf;  R2 a1 C$ Q/ N% y6 y# Y. }5 W
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ! u5 h% M, U% n, t; y6 {% [3 ^
  36.         if (ret != 0) {
    2 s% U7 }$ i* X, o. H& ^- n1 N
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);. {9 w% }! D9 W& _0 q( [
  38.                 return -1;& V2 r9 G: a* p! s
  39.         }+ x2 C. p) }3 w5 }6 Q; D
  40.         memcpy(mac, buf, 6);
    ; Z; j1 I& ^. s5 l( G" e
  41.         memcpy(stbid, &buf[6], 18);
    7 B' k& e8 H3 T5 ^( u
  42.         stbid[18] = '\0';
    - I7 M  v. v& g. ]

  43.   l  W* @& _% V5 N) g: S  q/ ~2 E
  44.         return 0;
    0 }9 o. R  F# O& h
  45. }6 F( b1 n& w3 \: z" w0 n1 |

  46. 2 F) f: E: W. s
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 m4 k5 F' Q, r) U" V$ f6 T; N0 ?
  48. {. B; C6 v. o: J6 G' }# b0 K8 \
  49.         int fd, ret;
    * A: c1 p3 D3 X  z0 w
  50.         e2prom_s_cmd arg;2 l% O; g- F' H, O# a, j+ ?7 C
  51.         unsigned char buf[0x18];* d% e: W1 J; s, L  y" M
  52. 9 P* @3 I) W4 `+ i4 H
  53.         memcpy(buf, mac, 6);$ `  L+ ?) c- c6 p( X
  54.         memcpy(&buf[6], stbid, 18);( n# g) U) k" I0 P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);* V1 u; L$ ~7 d& e, |
  56.         if (fd  < 0) {
    6 m. K3 G0 b, Q8 d& Z0 O+ y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);" n6 ^7 z2 `" s/ e7 Y- w( V# p" V
  58.                 return -1;2 B/ b7 i8 J( ^2 }" N4 E% |, M
  59.         }& h$ I' t# W. u! b- F
  60.         arg.sub_addr_count      = 2;) s! o) D: g& J0 A! _
  61.         arg.data_count          = 0x18;) r4 d& w* _$ P/ b
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    6 Y  ]. H; q2 P  D- H3 x0 t
  63.         arg.e2prom_cmd_data     = buf;2 ]! n7 u+ o3 U% N/ Z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ x+ ?4 d2 P4 ^2 s/ ~' d3 x
  65.         if (ret != 0) {2 i' A" p7 j, [
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 z6 y3 q1 V( V- G" K7 d' \
  67.                 return -1;& t9 y) e1 z& J; U1 V' C
  68.         }
    " }" c! F$ R, j% U3 @/ Q( j

  69. % I1 F$ N7 ~7 ~  u5 A  v4 Y
  70.         return 0;
    0 {8 Y3 |/ x8 L# {7 \
  71. }" ~+ u; V  Z& Q% h: f- P) C

  72. 4 M( ]1 F3 k) B0 X1 l
  73. int main(); C6 x$ k# b- K2 H! w
  74. {
    ( F- `  H; K% w5 g5 g. Z2 r* O  o
  75.         char c;
    , ~# m/ E5 A1 a- ~1 E3 ]0 w
  76.         int i, macs[6];3 J# S# M8 M; i2 w0 ^; R4 ^0 F4 P" V, |
  77.         unsigned char mac[6];0 n1 r: ?: B, I6 X- c5 l
  78.         unsigned char stbid[256];) h" k. f* j+ e

  79. + h) I1 m; t" [2 d' U1 O
  80.         if (readparam(mac, stbid) < 0)& T. g6 x* ~$ V# }4 o$ @" Z
  81.                 return 1;
    & x! k* v+ g6 _. |7 B. ~
  82. 8 I& J% P% H' M) p, ~
  83.         printf("Current parameters: \n");% ?7 ?8 w  f. ^3 X6 [8 _) y# \
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 v! H0 q, ~; h8 S1 e* |
  85.         printf("  STBID: %s\n", stbid);
    3 n& t( R2 s, J4 w4 x. ~  a$ L
  86.         . ~4 d6 V& ?: L" w8 w% C% S' f" \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( e1 e6 i" Y3 x5 r% Y+ R- H7 H6 R! z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . w0 Y# t! H# q; v" ?
  89.                 printf("Input MAC error\n");
    " {3 S" d' W$ Q8 Y+ A6 t
  90.                 return 1;
    3 K0 |6 E- u" }( r8 ], _
  91.         }
      h0 m0 N" Z* d% b) P; t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];* O4 C0 k3 S5 e! q. b4 E
  93.         printf("\nPlease input new STBID: ");
    : F$ e: F: v; q# K! w5 a8 e" e
  94.         scanf("%s", stbid);8 g& z" x' z1 S+ s
  95.         if (strlen(stbid) != 18) {5 o1 B+ O% K4 G7 Q
  96.                 printf("Invalid stbid\n");! u0 `3 R" ~) w
  97.                 return 1;
    . k* f, w8 j: \/ [) i% Y! Q( T7 N4 {
  98.         }
    1 ]+ s! ~- ?  b- C
  99.         printf("\nNew parameters: \n");
    0 ], |& C3 d+ B4 [: X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; x; O! o$ ]2 f/ L- z0 k2 [8 t
  101.         printf("  STBID: %s\n", stbid);# h  \. m( y! M; h
  102. * `3 \- Y6 Z6 W0 E' ?
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / T  b0 e2 Y' Z. ]
  104.         for (;;) {+ x. ~" w- L( [( x2 ?6 M" J( h7 v
  105.                 c = getchar();
    : Y" R3 M- x0 ?6 x- O$ ?) R( k' Q
  106.                 if (c == 'y' || c == 'Y')
    ! @, Q4 s) J% P" x
  107.                         break;
    / m& o8 j% z2 q' l0 V6 L. I
  108.                 if (c == 'n' || c == 'N') {9 p" C" u1 d; c. f! a  ?$ J
  109.                         printf("\nAborted.\n");
    1 O  R- K" k$ O5 K* T1 p
  110.                         return 1;
    1 }2 G6 Y3 p2 `+ J7 i- ?7 k
  111.                 }
    ! t! u7 g7 c' O, b1 Y7 R
  112.         }; H, m. t7 G6 K  E
  113.         if (writeparam(mac, stbid) == 0)
    ! T; T0 H* }# P( Y& n; b# U9 e% n
  114.                 printf("Parameters changed.\n");: I# m9 M3 _8 W# R' {

  115. 4 M' t- ^9 {8 f$ O- R# ~1 M4 X$ f
  116.         return 0;
    $ T' z& }( Y( I: Q* 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 ; l/ b- f; H- [* m  A
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

- S6 ^1 ]3 T! l4 n. O& q" I) S你用的编译命令行格式是什么?
1 q8 t; A, P; \' w0 n
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部