查看: 16408|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
      K4 T5 T! R! O; J2 A; H" h& j
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / K9 a: K; p6 O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
5 }- W% U, ^4 n* A$ \  g4 fusage: himr <address> <value>. sample: himr 0x80040000 0x0
0 w: V6 d! ~% o9 f2 |" ]4 A+ b
* Q# V8 J1 ^2 O7 s5 W6 {* A9 N, n$ t: R0 ?4 w6 p! f
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ _9 d( H! s/ ]9 e2 C& b3 G2 |! o) U; K9 W* e) m, y, s
补充内容 (2012-3-8 09:42):
% [" V% L( K( T( i& f6 P% B0 `http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 Q6 D0 D$ u8 d2 h8 r2 ?这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- W. a" d& I+ l) r5 z. U

* h% e8 X3 B  R( V" D: N* ihimr <address> <value>. sample: himr 0x80040000 0x02 W# }: l7 g) I% H3 p
8 p8 j# ], r! z& X$ H
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ }/ _" q) s. c  v
himr 0x80040000 0x00
5 t5 S" i4 d% vhimr 0x80040001 0x11+ Y4 R; {/ [3 x4 J
himr 0x80040002 0x22
/ V0 H  M/ V5 x( H4 ihimr 0x80040003 0x334 t2 N4 E; f- r, b/ P
himr 0x80040004 0x44
/ G1 J- v- V5 U7 d9 }himr 0x80040005 0x55
0 m; w5 p$ H7 h/ i2 t* u1 |( J7 n5 L0 U7 c8 I2 N
SN也是类似。
. }+ m9 T$ C  P
1 y( b( g7 V) b0 j: u6 v现在主要是,谁告诉我们MAC和SN的地址?. L1 a) X6 R2 r1 w
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ; {; o  }) p7 O' B: ~5 q
一直想找到运程修改MAC和SN的办法,苦于无解啊

  e# W, l8 t: d. o3 V) z, O源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) R7 m2 d! a$ ^) y

3 u- n& i# N6 J/ E: c% Q# O' I& Z修改的代码早有了。到今天不会编译。% W; i3 }4 l# {' r: h5 S
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ p; J8 p) X. _# r$ L
  2. #include <malloc.h>
    * j4 w7 ~" w  B$ d: a: V1 d
  3. #include <sys/types.h>1 X$ o$ e1 J) Z  C' w5 Q+ F- q  C8 f
  4. #include <sys/stat.h>+ ]6 A* N# q( ^* u) t
  5. #include <sys/ioctl.h>3 ^+ Z- E3 |+ m
  6. #include <stdio.h>
    ( O% G1 P/ h0 z: W% |- K4 {" u
  7. #include <string.h>
    9 d, i7 c' ~- M, k) I! a
  8. : }: Y9 _  x& @# M: u! h' `! D( g
  9. typedef struct {0 [  I* D" [) A  p3 d
  10.         unsigned int        e2prom_cmd_sub_addr;. f! Z( H8 X7 n0 F% P* n$ s
  11.         unsigned int        sub_addr_count;6 ?( K" J! H% H4 w
  12.         unsigned char*        e2prom_cmd_data;& e6 Y% X8 ?6 ^# s) R# Q+ P
  13.         unsigned int        data_count;% g7 B  P+ Y$ Y' r& G
  14. } e2prom_s_cmd;" O0 S/ q/ h; V9 L- c! J  e+ H1 W

  15. & D2 Q6 {: d7 y5 ~+ X9 F  L* e
  16. #define E2PROM_CMD_READ 1$ V- }; F- w+ ~0 ?: N
  17. #define E2PROM_CMD_WRITE 2  O, r. p3 {. U# w9 E, g; Y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16") L& ]; O- V' I; G' N6 u9 s

  19. ' [9 Z; s8 W; X6 X
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 `1 n0 E; C( U" U. O# }
  21. {9 @6 `. i% J; d% @* m( q$ ^: ~; V
  22.         int fd, ret;/ A6 k4 r+ b8 P0 u
  23.         e2prom_s_cmd arg;  ^1 e) d$ I5 ~1 ^$ B' V# Q. N
  24.         unsigned char buf[0x18];
    6 D/ Z/ n- r; h- U3 V
  25. + j7 U. c' `5 _7 ]& a
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' G  w1 p# n6 ?6 I% U% h
  27.         if (fd  < 0) {) D( e$ J8 k: `
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- v- U$ a, G' x* `8 g
  29.                 return -1;- c* F1 U* b, Q
  30.         }, Y3 q! Y' O8 ]4 N$ l, E  l
  31.         arg.sub_addr_count      = 2;
    # z8 h. Q! `' p# l
  32.         arg.data_count          = 0x18;
    1 C. C5 [" {9 o
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ i7 T3 {7 [  R# X# W4 v4 r
  34.         arg.e2prom_cmd_data     = buf;
      l2 U8 J7 N: O1 S5 L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);; v) G( \* K0 |2 X6 _. M
  36.         if (ret != 0) {* c0 y7 G, o: U! i$ {
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, Y4 A4 A. Y/ v) N  T
  38.                 return -1;- B# N7 c6 F, L6 e  E% W
  39.         }& r/ k1 }. t2 c! j0 Q) _, u6 b
  40.         memcpy(mac, buf, 6);( M5 A) g) i, d3 B
  41.         memcpy(stbid, &buf[6], 18);
    2 w6 M' `+ t" {0 E7 {7 x5 S% w
  42.         stbid[18] = '\0';
    " `3 x. L" u, e. b3 _

  43. - |! o! ?, G2 Z7 p
  44.         return 0;
    . ~3 p9 b  r4 j2 T! u/ p2 F! b* j
  45. }
    4 x0 z- V, K3 _4 v/ f4 X; i- j
  46. 3 B8 E- [# j) [9 F+ a3 r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 n& d6 n; N+ T& b7 o3 r4 |! e
  48. {+ o. |: l" b5 n7 A% c6 [) A# H
  49.         int fd, ret;8 r2 ~' |+ m7 c6 E" U
  50.         e2prom_s_cmd arg;8 }7 |' I  p& A) _
  51.         unsigned char buf[0x18];
    ' x, Y- i$ o' g' `1 W
  52.   |* D* \& R- _* J; o% L
  53.         memcpy(buf, mac, 6);. K" y1 }6 l2 K$ J9 c4 n
  54.         memcpy(&buf[6], stbid, 18);
      h0 E7 R: h% J0 F0 w8 }
  55.         fd = open(E2PROM_DEVICE, O_RDWR);/ Q$ D8 }% z9 ~, N: H8 M
  56.         if (fd  < 0) {, `, E$ O; g& ?2 S, N+ h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);' W6 _  o" v' J! t+ @6 e9 y* E6 s' Y
  58.                 return -1;3 b* F! u' i# h. Z7 m. m9 U
  59.         }* I* [2 \' R! P% k* N7 R
  60.         arg.sub_addr_count      = 2;
    % {# o( L! M4 m+ H' D6 q9 u- y
  61.         arg.data_count          = 0x18;4 b3 e: a! @7 D0 P# q
  62.         arg.e2prom_cmd_sub_addr = 0x290;9 t4 N7 Q; `& L0 m! P6 Q* r
  63.         arg.e2prom_cmd_data     = buf;; a" H$ X& W% t. F* J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);7 A3 D; }& ?* M3 I3 ~1 i
  65.         if (ret != 0) {
    # e) d- }. }+ _
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);' e% m/ G/ K4 o( [; i9 ]
  67.                 return -1;
    $ ^$ N( k. s, H7 f& I, c
  68.         }1 \8 w4 M1 c) r) b
  69. , U9 B1 q; C( u3 h$ S4 M! k
  70.         return 0;8 v: c3 U1 i6 ^: I9 V$ ~: z
  71. }
    - }9 j$ D% P9 z& [, v0 f

  72. ( h$ I. x9 ]" Q4 Z& S4 X4 }
  73. int main(). R% s" K1 v0 }' J
  74. {8 z- t" P& k* Y# o% C' o
  75.         char c;
    ; i3 }' h, ?1 _% O/ y. y
  76.         int i, macs[6];
      O1 {/ w; Z' s
  77.         unsigned char mac[6];$ s9 Y% ?7 W! e# F" n
  78.         unsigned char stbid[256];
    6 x4 q" k* [5 x# Y2 ^
  79. 8 o6 o, f( h4 u
  80.         if (readparam(mac, stbid) < 0)
    : P, W1 ?" T6 ]# [. f  P2 m
  81.                 return 1;$ x/ u; z! J$ G

  82. 3 U: n2 \# H+ u; n& A! Y
  83.         printf("Current parameters: \n");/ a- ?0 @3 f! a- l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" K8 a; A- m6 Y0 h; w7 q; I  `4 k
  85.         printf("  STBID: %s\n", stbid);
    8 m/ X2 Y0 ~& ]8 v9 e
  86.         $ n( ?9 Z' [- o. \( g& j" H  W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 x+ G# q& {5 p1 F% B
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  \5 C; K8 g' V# L8 c9 s7 ^
  89.                 printf("Input MAC error\n");
    8 Z! [$ v" v  P8 y( R& s
  90.                 return 1;
    5 F: p0 C1 B+ v- \
  91.         }$ f8 {% t" E' G
  92.         for (i=0; i<6; i++)mac[i] = macs[i];* t: z9 [5 k; I4 `) t9 ^
  93.         printf("\nPlease input new STBID: ");3 y$ n% Q2 U/ P/ R  ]7 t
  94.         scanf("%s", stbid);
    6 U, i  ~0 e! P4 r9 g  k: ]7 v3 B
  95.         if (strlen(stbid) != 18) {
    2 o" N: K  A: ^+ C* w
  96.                 printf("Invalid stbid\n");+ U9 f0 B3 g. g# \' X, v7 K( o
  97.                 return 1;
      i! _# q) ]/ P+ J& @5 s( Y
  98.         }2 _! j; x9 t6 \. k
  99.         printf("\nNew parameters: \n");
    ; ?- _+ w9 G7 J+ F& _. a0 P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; ~2 t, N( a( p  F
  101.         printf("  STBID: %s\n", stbid);
    * ~5 O; K& L! S

  102. % _- R8 ^/ W" |  d; ^$ Z" |' C
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    6 U, V8 ~  g1 u0 c
  104.         for (;;) {
      A2 \; v; P1 r
  105.                 c = getchar();2 w1 G4 ~/ M- q4 p; B( K2 b
  106.                 if (c == 'y' || c == 'Y')+ q9 v: Q" X3 t- Y3 R# p* B
  107.                         break;  s$ ^5 Z# j: \5 P
  108.                 if (c == 'n' || c == 'N') {
    8 N' |& D* A5 X0 h4 x0 T
  109.                         printf("\nAborted.\n");
    " s% @) @( z* ~
  110.                         return 1;
    / j; s$ V& B2 B2 v7 S
  111.                 }+ ]' R  x5 F9 U% c/ k5 ^0 b! m
  112.         }
    ' w; _. U7 d( T$ i- Z
  113.         if (writeparam(mac, stbid) == 0)
    ' p  l7 u4 I. j( I7 X
  114.                 printf("Parameters changed.\n");3 q" O0 r4 ~: o3 l: p% T& |! x' r
  115. . [0 G* C$ y* M4 u- G/ X: ]3 c% J* f
  116.         return 0;
    - C( ~6 W4 p: C* Q( I2 }; B. D
  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 % t& B" L' z4 }3 |
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, C* D2 T# i: F5 |. `你用的编译命令行格式是什么?
7 }7 d- d; L2 V6 @1 B- d( M
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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