找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15660|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* Z; }6 m1 }; x, |# @" ?+ b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    8 K  b% s2 R0 V9 C. m4 D0 C* K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ N1 l. s5 T3 [. g$ d' u$ Jusage: himr <address> <value>. sample: himr 0x80040000 0x0
3 |! w  ^& ^. `6 S: d* ?9 ^' t( J4 D* t
2 C9 v6 p$ U1 L; B0 S7 r! T+ G* S9 J- N/ y+ ]& Y5 Z* t- m
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: ^. I' R6 o0 t3 T- L
& P$ Q6 b- T8 s: w( I补充内容 (2012-3-8 09:42):0 f6 W9 f4 C3 y9 E. {. |2 Z/ y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 u7 o9 M; i5 r4 s' ?这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
0 s  Q9 n3 W) p) v* r
* m9 e, ^9 H6 R# b7 `( ?7 \himr <address> <value>. sample: himr 0x80040000 0x0
  d8 g3 G8 {' ^8 F* _8 S* V4 G! \$ t1 `% I6 p1 |8 B
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 Y- G4 i5 O+ ?himr 0x80040000 0x00' E, i1 I* B1 T* V2 w/ k& d; o* \
himr 0x80040001 0x11) T7 D# i4 B5 N  d/ [: X
himr 0x80040002 0x22# k5 A+ d) o+ k3 U+ H8 J
himr 0x80040003 0x33! E, w, ~! d3 i
himr 0x80040004 0x44
( k6 X5 \3 w* M& ^himr 0x80040005 0x55: X, u. ]8 y" T
. d  i- \: n8 s/ {, a8 g
SN也是类似。
+ C  W- w; d( ?! }4 w: u9 F- F+ O& \6 f4 S3 L* y
现在主要是,谁告诉我们MAC和SN的地址?
7 d% |( n4 e6 f5 a* B* M
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 Y( r& h/ L& o7 `# H4 k一直想找到运程修改MAC和SN的办法,苦于无解啊

. d7 U1 r! [1 V% @源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ |: B* \% Z/ K4 j' Z  c3 a8 d' ?. q$ x+ v, c; ~; R5 o5 W
修改的代码早有了。到今天不会编译。0 u$ i  y  C+ q( q. o. K
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) |8 x% p8 g9 F+ b; y; r
  2. #include <malloc.h>( }* s$ @9 K9 c
  3. #include <sys/types.h>
    , m0 @% [5 H. e
  4. #include <sys/stat.h>  S- F( T: Q, K. L" E; C
  5. #include <sys/ioctl.h>) H) y& p1 `$ O5 c1 }9 Z7 E
  6. #include <stdio.h>3 e$ c3 s% L5 A+ h  D
  7. #include <string.h>4 [" S6 N0 E, d+ K9 {0 H

  8. " b' I! H* l* E! l: B
  9. typedef struct {! Q& [, U" a3 b- C$ ?1 a) v. a/ R
  10.         unsigned int        e2prom_cmd_sub_addr;4 R  s+ R- W9 v. ~8 m* `6 \0 U
  11.         unsigned int        sub_addr_count;
    " u( N8 i, D  y
  12.         unsigned char*        e2prom_cmd_data;
    . ?/ G. E( w2 I0 u4 C
  13.         unsigned int        data_count;
      R$ i! `  J4 {
  14. } e2prom_s_cmd;- S; `2 O0 v4 t, g9 v/ Y* k
  15. 7 B9 o* W4 ]" J# c6 b4 C! L" \
  16. #define E2PROM_CMD_READ 1
    2 ?, r7 K: G3 }" u
  17. #define E2PROM_CMD_WRITE 2
    0 m2 g. S1 C# _) g; ?6 t
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"7 f9 e7 N8 B1 E9 E

  19. 8 ^' T, P, Y, U" T! H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 Q; y; ^( g0 j4 x5 r
  21. {
      z' }* f6 G( Z) r" g
  22.         int fd, ret;6 [; b0 Z7 Y( U5 ]
  23.         e2prom_s_cmd arg;& |( \6 x3 l' y" Q
  24.         unsigned char buf[0x18];
    , t! s! s4 u3 ~6 Q
  25. + C0 k9 Q  A' K6 `% \0 _' [
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . I1 z1 U' A) j, g6 F4 x0 V! S
  27.         if (fd  < 0) {
    7 i. Q  f3 H& }' E/ f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ Q8 }" \: W3 s1 n* ?3 y6 ~7 j( w
  29.                 return -1;
    , s7 d3 `1 Y" y+ |
  30.         }4 Z+ o$ U1 `; N9 u* A5 Y
  31.         arg.sub_addr_count      = 2;- f" ^2 H# `9 l' o4 {9 a
  32.         arg.data_count          = 0x18;; c" m6 W& D$ r0 W; |( s
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    5 v' T* N1 s! A8 Q4 O7 w
  34.         arg.e2prom_cmd_data     = buf;7 d* S2 ^) d( O" L' V4 M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);  e$ Q. j  `& ]5 G8 t
  36.         if (ret != 0) {
      l, g, H/ }& k8 f- t% H
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- |, K9 Q+ v0 \  e) [
  38.                 return -1;% G2 U5 v, n8 @2 ]6 S- E5 Y9 C
  39.         }
    ( U8 W4 H: D- ?! Q- _7 `0 [
  40.         memcpy(mac, buf, 6);% V: j+ ^+ ^4 \5 H( a5 N- M
  41.         memcpy(stbid, &buf[6], 18);
    , ?8 X5 w& k4 M
  42.         stbid[18] = '\0';
    $ j  g4 r) }: w2 N
  43. ( c3 T. |/ E* Z4 }0 S* e. E( Y
  44.         return 0;7 S# e4 C% i! g5 w4 z
  45. }% N! m7 X: j* j* b

  46. 5 Q5 U3 T# ^, r8 E4 U4 O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , D$ P( ]1 S; E4 N' K& |" U- N
  48. {
    - h0 e9 W+ C7 f# y  s; F
  49.         int fd, ret;
    ; S- P7 Z4 Y* k; Q8 Y& T
  50.         e2prom_s_cmd arg;
    ( T) ]3 q' i0 y+ Q: V; \, {6 _
  51.         unsigned char buf[0x18];
    - K" h1 N* W; w/ b1 }( |
  52. ; a& B" Z; ~$ f
  53.         memcpy(buf, mac, 6);6 V: \3 n* k. a  h4 h; b
  54.         memcpy(&buf[6], stbid, 18);
    / V; H* o9 u) x& H
  55.         fd = open(E2PROM_DEVICE, O_RDWR);7 W! k% @* g/ T; ~# m; v: Y
  56.         if (fd  < 0) {& o, e+ e2 W" r+ _& [. d
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! R7 b. A* Y  a, }8 S8 `
  58.                 return -1;8 ^( K: q; |9 p  c2 `, m
  59.         }
    5 j5 \, a7 h* l8 }, a7 ?
  60.         arg.sub_addr_count      = 2;
    ' G0 f$ r: i1 m8 Z+ F
  61.         arg.data_count          = 0x18;7 N; t, D* @# ]& y8 s0 K
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    $ Z3 M0 o! }3 k: B+ l
  63.         arg.e2prom_cmd_data     = buf;
    3 b% N* O7 ~4 I% `/ }2 X( h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);& Y  W" b: U/ ^/ j6 n# H
  65.         if (ret != 0) {. g/ X1 U3 S) W$ D, U
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % L, g% u' |: {$ K5 k
  67.                 return -1;
    4 B, @+ i# y5 v$ u& \$ j5 S7 F; s
  68.         }% s! ^/ U- f$ c0 K

  69. 9 W0 U# x. c0 K; f. X' ~4 p
  70.         return 0;
    ' u, O2 ]; Q$ ]. B* I
  71. }
    - A% g( d: `  i" H7 f1 r

  72. * X* J! v+ j( p1 \$ y4 I
  73. int main()& Q( \9 V# }. N. P% Z9 K
  74. {
    . J  H* d4 @  i+ N
  75.         char c;- L; ?  `  w8 V- |6 J; q$ ^
  76.         int i, macs[6];
    ) h' ?* o) L) g
  77.         unsigned char mac[6];
    " R6 y) Q" i+ s9 @
  78.         unsigned char stbid[256];
    5 q4 f+ J# j) {3 n5 T: ?3 p
  79. # G  H" H5 P8 @1 M6 n( x+ ^
  80.         if (readparam(mac, stbid) < 0)6 G& |. _' Z% E& \9 K( X
  81.                 return 1;3 b: k: e0 p3 f) U1 u
  82. 4 k; N/ Y  _- ^- q! [9 Q
  83.         printf("Current parameters: \n");/ }9 W( z1 ~2 h  K  R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& R$ k; e+ N. c5 B- m
  85.         printf("  STBID: %s\n", stbid);* \1 J! P& i8 T" b
  86.         9 y) m% K* I: B8 Z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");6 c1 w' ?1 x$ E, f5 a7 o5 S" L" C
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    7 V0 o/ f$ l$ q4 f5 w" ^
  89.                 printf("Input MAC error\n");: |: C3 J7 `; h/ m# u& P: W
  90.                 return 1;
    ; U* u  J+ ^5 D' S2 S
  91.         }. T8 q# O8 P6 k7 d  h5 ?3 w
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 ^- s  q+ @. E6 N! `& M
  93.         printf("\nPlease input new STBID: ");
    , N: n1 ?0 _7 b, e2 z. q. D7 d
  94.         scanf("%s", stbid);
    " o8 j% Q* D6 v
  95.         if (strlen(stbid) != 18) {3 `% O3 u5 y% {3 J
  96.                 printf("Invalid stbid\n");5 R& F# K' \! u" q
  97.                 return 1;
    9 U: _2 n" _0 u' @( Z, L" m
  98.         }$ \  O' ?) R. B9 @
  99.         printf("\nNew parameters: \n");
    : N( Y0 a1 P2 j8 J! `" g4 `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 w$ L  D6 z9 Q$ y7 m" k2 [
  101.         printf("  STBID: %s\n", stbid);
    / n* Z/ c1 v+ K' \. }
  102. - g5 b8 A6 N% u7 F
  103.         printf("\nDo you want to change paramemters? (y/N) ");, L7 r+ e' |: i+ _1 x( G
  104.         for (;;) {
    ; I; W; c( B2 ~) k
  105.                 c = getchar();
    1 H/ d6 t+ ]% c8 t
  106.                 if (c == 'y' || c == 'Y')
    + z: G! G8 J' L! M
  107.                         break;3 f' F4 \5 {; B) k
  108.                 if (c == 'n' || c == 'N') {$ q' ?) z  H; k& T' w
  109.                         printf("\nAborted.\n");* q' i- ]( W8 \8 |* v4 N% `5 v
  110.                         return 1;
    & f( z0 Y/ ^: E3 R2 Q4 O- N4 X
  111.                 }
    , h- q; r, R4 F0 B8 X9 V8 C" Q
  112.         }: Q8 K- V" Z) x2 g, s# }$ s
  113.         if (writeparam(mac, stbid) == 0) 9 A" X, q8 T" x/ q) f; L
  114.                 printf("Parameters changed.\n");
    9 D6 i8 ?$ u6 }# {" t; i. j
  115. 6 z9 b) _( V2 ~
  116.         return 0;
    6 k. n2 J) V0 I6 [6 H1 f7 O1 F
  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
6 N8 v6 _1 f( {; C5 H在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" J2 w" W1 e8 M8 O你用的编译命令行格式是什么?1 i9 W- e- ^5 j0 Y2 Z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-23 12:54 , Processed in 0.025323 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表