查看: 16428|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    & K* `0 u* Z- r+ Z, ^6 F
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 \) w; G% y0 m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 }( [: u) f5 ~% b8 F$ Z5 J
usage: himr <address> <value>. sample: himr 0x80040000 0x0
% w$ v) G7 V' P7 B7 p1 i; w* @9 J$ G2 U7 r+ a1 {
8 z* \) L, P$ T- A' ~9 r8 X
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( `& S: _; k- E  F2 w1 _) U% A

- X4 f' b9 V3 e% o补充内容 (2012-3-8 09:42):
  _) x9 ], ~( ?; yhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数4 P2 [9 X) x! v  B" c) e# J* N) }  X
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。# ^/ U$ X0 v& S. [4 m

) J# `! q/ r) z/ R9 D* o8 [5 Hhimr <address> <value>. sample: himr 0x80040000 0x0
' ^7 m% n2 ]6 ~' K2 k1 q
* ]# y/ L# O/ z  T- I例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 S. s' _5 C1 M2 B1 E; `. dhimr 0x80040000 0x00
& w, b2 i) M$ m8 Z' Ghimr 0x80040001 0x11' h6 e9 f. P+ @, U" D( h( E
himr 0x80040002 0x22
: \4 `, e! L  a/ {4 ~, thimr 0x80040003 0x33
) y! h; C& p; ^' i" j" bhimr 0x80040004 0x44  N- a# c, y* e: `* U
himr 0x80040005 0x55  q* d5 l' [8 ~8 o- D
: G/ z) e# h* B7 @
SN也是类似。
0 l6 `  s2 j3 ~. p- z; G  T- b  v8 @  s) P6 q1 m% _( q6 E
现在主要是,谁告诉我们MAC和SN的地址?( o% k. d! _' _- Y/ S+ x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ |' Q1 w4 S+ c5 ?# g7 I& P" J一直想找到运程修改MAC和SN的办法,苦于无解啊
. ^8 `( u- X0 X6 G: A( M4 Y1 T: Z8 V
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
9 Q3 W" a1 b6 t% {, w8 K5 @# N1 M; k; P8 e
修改的代码早有了。到今天不会编译。
; |1 O& D% A% `7 C% z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - w9 k9 r3 S0 h2 l, x
  2. #include <malloc.h>
    ( U( z* q& o0 _! I
  3. #include <sys/types.h>3 F. N3 e9 e8 l( ]2 C
  4. #include <sys/stat.h>* p1 _% ]7 g* ~$ n9 p: B4 b
  5. #include <sys/ioctl.h>
    : M# a' t* o0 S! W0 q; l
  6. #include <stdio.h>
    8 A1 M# c3 ?; ]1 I6 J3 ]
  7. #include <string.h>3 s0 Y' U, X( I8 C) ^3 u5 A* ]
  8. 0 m% C) B1 s; W* f2 g5 e7 ^
  9. typedef struct {1 f: ~( |% Z: p
  10.         unsigned int        e2prom_cmd_sub_addr;
    # m3 F0 _: q+ d* @9 P
  11.         unsigned int        sub_addr_count;
    # A6 i8 Q  ~( d% E5 v9 @% S. d
  12.         unsigned char*        e2prom_cmd_data;
    & T" Z0 E, _1 t( X. p
  13.         unsigned int        data_count;$ e' w/ Q# G3 X
  14. } e2prom_s_cmd;6 d4 F6 n6 J  [
  15. 9 V* L, x1 C2 Y& s8 ~3 a. ~& _
  16. #define E2PROM_CMD_READ 1
    1 U- }' N+ M) Q/ \) A& D
  17. #define E2PROM_CMD_WRITE 2
    ; `8 _& p9 V4 e3 ~; g1 B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"7 `0 O$ K/ m$ I4 ?, p) _. F0 j
  19. 3 [/ {! V! a- j
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- s, d9 ^  H3 \! Z0 X" Y) `. p
  21. {9 w' S; k7 V! i- ?3 Y! x4 g/ |
  22.         int fd, ret;( ], H2 j$ Z/ K) \
  23.         e2prom_s_cmd arg;
    5 D2 s, Q9 A" a5 j  m' }! [7 Z
  24.         unsigned char buf[0x18];
    & k' [2 L( w1 }  E

  25.   }) }/ K$ T7 Q! p  p0 k0 I
  26.         fd = open(E2PROM_DEVICE, O_RDWR);% x$ G3 U5 \3 r. ?
  27.         if (fd  < 0) {
    9 R* V0 C2 d& W/ p/ g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # c! |" T6 U% _1 q& t* i
  29.                 return -1;! @- I* x7 Q+ X: L# a2 q: r
  30.         }
    $ J9 {- B: b8 v9 Z% {1 U# s
  31.         arg.sub_addr_count      = 2;9 j; I1 v0 e( d! P+ t5 h5 F9 D
  32.         arg.data_count          = 0x18;
    6 {( ^9 X8 k* F% U: D: F4 B( ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ; G. C) G. w+ f# P! f
  34.         arg.e2prom_cmd_data     = buf;
      j/ ~: u! D$ r* U7 m
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 Y; V( a9 }. ]% z
  36.         if (ret != 0) {
    * K8 L8 G1 y' X4 O7 U0 u( }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 R, q; `: }' {- s
  38.                 return -1;
    % W% D8 Y; Y* N+ i9 B  P' D+ ~
  39.         }
    6 @' J9 S- k  P* I
  40.         memcpy(mac, buf, 6);* l: `+ X6 b* p5 K, [5 V
  41.         memcpy(stbid, &buf[6], 18);
    7 p2 u9 {5 ^9 h/ u) A% `
  42.         stbid[18] = '\0';$ N5 G  f% s( f* t% K
  43. + ?$ ~9 T: |- A. k0 p2 X. D3 N
  44.         return 0;$ u' x1 \1 @& L% p
  45. }
    ) l! F; k: e  k& j/ h& l

  46. ! ]& u+ O4 h- i6 m+ `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid); ~4 m1 ^: C. l2 D
  48. {
    $ i' R  h. U% a. T
  49.         int fd, ret;
    , B/ i* f0 U5 Z- p/ p
  50.         e2prom_s_cmd arg;, M1 k1 q" U% b7 t( A" J
  51.         unsigned char buf[0x18];
    . r# g% i+ C  F! ~( U2 u& l$ Z
  52. 1 r/ ^% B" _- \' U, ^
  53.         memcpy(buf, mac, 6);4 ?7 j( U: v7 Q. h
  54.         memcpy(&buf[6], stbid, 18);
    + C2 ?! r4 W9 q- w  u: K; N5 K6 {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / w8 _+ q" h( U3 B- U7 [. f- D
  56.         if (fd  < 0) {
    5 `. ~' L, U3 |+ N6 v; t
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# X% p7 r6 E6 J: P& T& T& C
  58.                 return -1;' T* a2 H. M1 ]3 d! T. q
  59.         }# R7 a6 g/ M* }  \0 H
  60.         arg.sub_addr_count      = 2;( R/ C6 H% B6 y: [; q) N* D
  61.         arg.data_count          = 0x18;$ v0 m4 [# J& U# v4 ~! g7 l
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 K  N$ C( D. g4 F
  63.         arg.e2prom_cmd_data     = buf;* @* a4 h9 j; s9 D! K3 T) t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 O2 m' |( @0 K- \. J% D
  65.         if (ret != 0) {
    * b' j# w+ n1 \$ x8 E( }% S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : P! I6 Y2 X/ ^. B$ p
  67.                 return -1;. w- D( G8 t; j1 _
  68.         }' [) D: X; D4 C1 P3 Y
  69. " N- a( A. ]% V. t
  70.         return 0;* o& B& ^# o9 G, _" p$ V
  71. }
    : i* Y' ?$ f) r& k( r

  72. : q9 y& K1 ]6 F4 `
  73. int main()! C. t1 i; K; l( a/ J9 D& v
  74. {0 |8 N% X# p. n$ k7 I6 j8 a. E
  75.         char c;. d! F6 t- h( W6 B6 b
  76.         int i, macs[6];
    & x9 N% g# ?3 C- X4 g7 ~. Z
  77.         unsigned char mac[6];. |2 P/ w4 O$ C$ J: l. d; q- J
  78.         unsigned char stbid[256];5 r$ Z5 ~' J7 B, Q
  79. + r# N' _+ L% D) |+ F- o# z
  80.         if (readparam(mac, stbid) < 0)
    " a; c; {, y* x' p$ {- f; F% {
  81.                 return 1;
    & ^* i& {0 |  m2 x

  82. ' j, h1 ^+ i4 ?) v1 o
  83.         printf("Current parameters: \n");
    # U6 n: j2 o' U) Q  W- C# M
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ a+ j! W$ ~! [4 }' v
  85.         printf("  STBID: %s\n", stbid);
    # Q1 [; @: P; e8 @* E7 p
  86.         0 I" L$ m4 X# k& F1 N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# n& J! e' B" @. ]& p: W  a
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    % F7 Y) g, ^' y2 Y1 h' _" H0 t
  89.                 printf("Input MAC error\n");
    " p+ W' x% E( o; ^, l
  90.                 return 1;! V1 m' [5 {* T9 _: Q2 ^
  91.         }
    3 W- H# h( A: C# Q) ~
  92.         for (i=0; i<6; i++)mac[i] = macs[i];& g) @3 P% L/ Y/ q% O5 n4 Q6 E
  93.         printf("\nPlease input new STBID: ");
    " z$ |3 Q+ A8 x7 w
  94.         scanf("%s", stbid);
    1 C4 n7 }" e1 ?/ C, T! ~9 m/ ?
  95.         if (strlen(stbid) != 18) {0 |. d" o4 g( c* F1 x7 [
  96.                 printf("Invalid stbid\n");
    2 h/ j6 I% L" k5 Q  U- s  X
  97.                 return 1;. B: a0 _- ]! R) y1 ~  f7 D
  98.         }4 I) L1 ]5 ?: |5 K) k
  99.         printf("\nNew parameters: \n");2 a7 L$ B3 h: F8 f1 E
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ W- @" n1 ~0 l0 m, G! ?, S
  101.         printf("  STBID: %s\n", stbid);$ v6 i  U3 f7 O9 q/ P! ~

  102. 3 m, j  j: C( {9 Y# z$ j
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 T! y" ~8 U% U5 S6 ^' v
  104.         for (;;) {5 D" b' I: n, \" M2 A0 e, ]
  105.                 c = getchar();
    7 K2 ^( v. C5 R  d" I
  106.                 if (c == 'y' || c == 'Y')
    " {0 I2 q3 G- y, A. N
  107.                         break;
    ; o$ p0 \, B  S
  108.                 if (c == 'n' || c == 'N') {/ g0 D0 u5 C* b( u5 f+ u- h( M6 J
  109.                         printf("\nAborted.\n");6 g4 _& q; M1 x, Q
  110.                         return 1;
    : D" S4 A0 T' |; h' t  O0 S
  111.                 }" Q# H, U" _  F
  112.         }3 Z8 [, ^  ~4 u" y/ I. q
  113.         if (writeparam(mac, stbid) == 0) # Z4 |8 X0 f, ~6 [, N) z
  114.                 printf("Parameters changed.\n");' ~  b$ x2 s7 T1 D) T

  115. & {" q1 g  v6 q# W3 _5 r( c% k6 h
  116.         return 0;/ j( C: N  Y/ K/ D( ]) 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 % S7 H0 ^) u$ j+ M
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

. ^5 s) [* l$ P1 e; G; w你用的编译命令行格式是什么?, Y+ V# _8 s7 |) g
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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