查看: 16198|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr+ r% }- w$ E, p
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    7 z% ?4 `* i5 d
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ S6 T( ?. e( I; B
usage: himr <address> <value>. sample: himr 0x80040000 0x0+ Y& d( v1 `6 s% R

9 _1 k, G7 a, o  t) o+ C; C* N$ o  r
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- h0 T" \/ _" X/ S1 A  `
. o1 V/ R" b3 t3 k% d5 |7 f1 M
补充内容 (2012-3-8 09:42):
, U' y0 f' u* E+ _# g+ f5 ]# J3 ^http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 X6 b+ |7 u* H9 ^这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。: ^. b. q/ \) s& L: M

' T3 E$ M& Z( l* H3 |# A4 lhimr <address> <value>. sample: himr 0x80040000 0x0
( v3 f- `; [3 y& z4 o$ K* q! G& D" u* q! `' A% j: x6 [
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& ~* \- s, h+ Q" l  D. Dhimr 0x80040000 0x00
( D# w9 |5 w- p0 \% ehimr 0x80040001 0x11
# o! E5 O) t! d  n$ H% O1 T: j# lhimr 0x80040002 0x22
# r6 x; e, D0 y7 j$ z8 u' F- y* Shimr 0x80040003 0x33/ F9 H. H$ z" u: n( s! |% w0 R& e6 |
himr 0x80040004 0x441 a$ O9 s3 X+ ]" {7 R+ [
himr 0x80040005 0x55; j, O) m6 t, l5 I. n3 }- l9 D# h
; [) y0 b( V. f% s: p
SN也是类似。
* A9 a5 q; V0 X; [( Y8 x; r) j3 h5 j* a% u; B$ v7 i* P8 p( e6 e5 d
现在主要是,谁告诉我们MAC和SN的地址?
3 V: j+ c+ I- f9 O% {
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * @! z- P1 P0 D, {
一直想找到运程修改MAC和SN的办法,苦于无解啊

8 U  ~# C& [2 H源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! b3 X! [0 P5 q' ?* ]

) W5 o3 y, m: H. z$ j5 o3 }0 p修改的代码早有了。到今天不会编译。; m8 [3 h5 i1 Q
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* ?; Q2 R, f3 D
  2. #include <malloc.h>
    0 P2 K! X# t! O
  3. #include <sys/types.h>
    4 `0 H  J/ a; N2 I3 w' D( M2 U2 G2 B
  4. #include <sys/stat.h>" {) O; D: z. i/ J- b
  5. #include <sys/ioctl.h>& F4 {" [* `  {( k" S8 A6 a  P
  6. #include <stdio.h>  c# [1 B# `1 W. K3 |5 H
  7. #include <string.h>; D) x, j; S' A5 Y8 u$ j

  8. 4 [5 Y- F9 f6 k0 C2 n
  9. typedef struct {
    0 \5 ?; |. E9 r
  10.         unsigned int        e2prom_cmd_sub_addr;2 s" B  r# w* f" r7 u# g1 e6 d5 N
  11.         unsigned int        sub_addr_count;
    7 y7 z2 y2 w# Q3 S- t( `4 k% ]
  12.         unsigned char*        e2prom_cmd_data;$ Z  h  `. G8 s$ ^  r; H# S8 Q. U* v1 e
  13.         unsigned int        data_count;
      K0 b/ J7 k7 |3 ?9 O
  14. } e2prom_s_cmd;7 |5 A) ^% z9 h; {2 [* z+ x

  15. 5 ?( O1 Y9 h: `2 V4 X6 [! @) [
  16. #define E2PROM_CMD_READ 10 X! Q- l! M+ t$ X% ]) w
  17. #define E2PROM_CMD_WRITE 2
    / L# g1 ~" f* g! }2 h  F5 Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    & A- b; n* g5 n) D

  19. . a$ K# d8 P% m* H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 ]% Q' i: ?: J# t, r& ~
  21. {
    ' V3 P4 R4 ~8 Q8 s
  22.         int fd, ret;2 j% P; F& d0 Y8 n" U/ l. Z& b0 g( ~: @
  23.         e2prom_s_cmd arg;
    : A( d, E6 a4 V+ O' y
  24.         unsigned char buf[0x18];, f6 v% R7 \+ t; Q9 X6 N: d6 F
  25. 2 B1 }5 F1 ^. `* k" B/ T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 d6 a$ {- u- h0 j- d4 q3 m
  27.         if (fd  < 0) {; }" Q/ C1 j# u1 h, h5 |! i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 G8 N7 z8 E% M( t8 N! J
  29.                 return -1;. Q# ^- M  Z! D6 i" b3 X
  30.         }3 U5 ]; s% s# T7 W$ ?% Q9 N
  31.         arg.sub_addr_count      = 2;
    . S( t5 c! d! p+ O7 f$ E
  32.         arg.data_count          = 0x18;
    ; {/ W0 G5 `' {, Y. y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    3 {. @1 y: G5 B' Z5 |0 g
  34.         arg.e2prom_cmd_data     = buf;" L- G9 j3 T( e* e2 q( H! D# B! W
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      R; b+ p6 F& d, ^% g  c
  36.         if (ret != 0) {
    ' {6 c2 y& D. w& \' Y# y$ _3 y6 s
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);9 N% S8 p- G) ]+ b+ z% b2 ^7 |% u
  38.                 return -1;
    ; U) m/ R7 j$ y1 X
  39.         }. O* ]/ X+ V, u! c, K- ^( p
  40.         memcpy(mac, buf, 6);
    : M- E; {% x5 c( `& [
  41.         memcpy(stbid, &buf[6], 18);
    4 a1 M5 p5 ?) v/ g
  42.         stbid[18] = '\0';& H2 v' l' d" y6 a
  43. * q/ N( w3 j+ _& v& o
  44.         return 0;
    & y& O' M  q( h6 q0 G
  45. }( l2 v- G& L' A& k3 G: |
  46. 2 U1 \* F" }1 O3 W, Y8 ?1 k0 J7 G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 e/ I) x8 L8 e0 x" T& v
  48. {! G1 }) l+ E4 E1 C
  49.         int fd, ret;( _3 k) q/ @2 u8 }% S) J+ g
  50.         e2prom_s_cmd arg;8 y) d( W  O" E8 P" D4 W
  51.         unsigned char buf[0x18];
    * M! ?' p# I5 t& H1 m

  52. 8 u4 V4 e" X5 Q# X
  53.         memcpy(buf, mac, 6);8 F3 B* Z) f; H( H8 h
  54.         memcpy(&buf[6], stbid, 18);
    5 f1 w' |6 p) \; J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : \* O# z8 ~0 _: E' e7 E& G, W% Z& |
  56.         if (fd  < 0) {' W6 ~7 |3 V4 W3 O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 r& `+ B, \% b0 P! d+ d9 Z' e# ^
  58.                 return -1;
    / j9 ]$ W2 W( ]1 M8 |
  59.         }. W  @. v. O3 C
  60.         arg.sub_addr_count      = 2;
    " o. M4 J9 h( C1 {) T5 U5 m
  61.         arg.data_count          = 0x18;: S# C! c( b3 F- M7 b
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      Z: r$ a$ G8 m- ~; E* y+ R$ G8 ]
  63.         arg.e2prom_cmd_data     = buf;
    " i% X) C2 o1 X
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 h& @- I0 j8 D" z
  65.         if (ret != 0) {- y- g/ u6 W( x2 S( B' [" l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* S, P/ S; {5 I& {% w- [. v
  67.                 return -1;5 K5 i( N7 z$ b6 _+ v) k+ w) ^
  68.         }
    + Y. F+ r: \6 H! D  X

  69. ( w+ E1 t3 w) c' k. n
  70.         return 0;" B* O7 `2 ]1 h, e
  71. }
    - c, [0 l5 Y2 b4 e/ F

  72. 3 v/ P; @4 `7 W9 w( n4 K
  73. int main()
    / M; z2 ~( u2 O( |2 J
  74. {, r; y7 T! Q' l- f3 o: t  m
  75.         char c;. X9 Y4 t0 p/ `4 ?- q7 N8 W
  76.         int i, macs[6];
    # V% M! t/ j; `& \
  77.         unsigned char mac[6];
    # v# Y* G3 K- F% Z1 @. Y/ A; b
  78.         unsigned char stbid[256];$ z  m5 K$ U/ \, B; b& U
  79. 5 O( b5 H: d+ r: r" W
  80.         if (readparam(mac, stbid) < 0)
    $ Y( z& V& b- }8 r3 T& o+ V+ e
  81.                 return 1;
    ( [5 C: u+ ]" M

  82. / v. q, @* U! q% m: I9 N  ?
  83.         printf("Current parameters: \n");
    + _$ A! \/ \/ D. M# `! @0 o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 r* {1 ~  P' a) p$ ^% E
  85.         printf("  STBID: %s\n", stbid);/ t2 K! E) I9 ]
  86.        
    $ M8 I" T; B8 E5 c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    # U' r; y) V8 |! h6 Z1 V" ^: j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 j, ?/ j1 R1 g9 {! t& V
  89.                 printf("Input MAC error\n");
    + }% D9 I% W, t+ a4 s9 f
  90.                 return 1;
    ! c4 `6 Q/ H) d! W- U! D
  91.         }
    6 u/ @; c4 q; ~
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    5 c7 p! Y2 h) }# j1 q8 ]5 o
  93.         printf("\nPlease input new STBID: ");3 Q7 q( T: L5 p4 q$ [
  94.         scanf("%s", stbid);
    # Z' X3 k5 ]  S4 ]
  95.         if (strlen(stbid) != 18) {1 |" V' j* X6 O/ {; G
  96.                 printf("Invalid stbid\n");+ f. t/ Y. H/ G0 h3 T
  97.                 return 1;
    : L" e: S: @1 I7 a5 I& R
  98.         }
    6 K0 I6 _% g) |: v
  99.         printf("\nNew parameters: \n");3 k$ o3 e' P* o/ J9 A
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& ~6 q6 A: I  k
  101.         printf("  STBID: %s\n", stbid);5 I/ V: ?$ X& |0 ^6 r: h

  102. " [& p; r: X, X) J2 s' r1 Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( o# S9 ^1 Q# x, p
  104.         for (;;) {3 e( D8 q; Z! T  i) ^  T- G8 _( D
  105.                 c = getchar();
    5 k( L4 ]1 a6 X1 l* E% F  Z! X
  106.                 if (c == 'y' || c == 'Y')
    + z' T( P, C- v7 @9 ]% l
  107.                         break;
      B+ P+ @/ ?% u9 K( I0 z
  108.                 if (c == 'n' || c == 'N') {
    # k& W) u" J" l, T) u
  109.                         printf("\nAborted.\n");
    4 d8 p* B$ B" h7 L% a; A) L, v
  110.                         return 1;
    1 R$ b& g% G6 V. O4 ]/ e, I
  111.                 }% @. r2 k; U" q1 O
  112.         }" r$ \1 j/ j! G8 d. n1 J1 q
  113.         if (writeparam(mac, stbid) == 0) + N) p8 `1 u/ R
  114.                 printf("Parameters changed.\n");) ~" ]4 j: g; |: A7 |# ~% I0 E
  115. % j. u0 h2 S. |  r$ e* Z
  116.         return 0;4 E* o. b& y" @: d2 N9 e7 @1 @
  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
1 }4 `' Q8 w/ `; ^' I1 l& ~在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( H4 a4 X9 m: T* k! `你用的编译命令行格式是什么?
/ Z; Q$ ]0 W& N9 o* i; c( T
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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