查看: 16532|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + U' P# s& \. W# y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig7 a) V0 h+ m; w6 n2 C) }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 n" ?( b( z; z1 }/ ^6 P
usage: himr <address> <value>. sample: himr 0x80040000 0x0
- i% g7 l; H# |. v2 s9 y8 V! h1 A4 E9 o) u$ n" E, t

/ o! w! V; r4 U4 j' O- f不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
; H' L$ x  [# K' r( {
* a9 d0 X9 E9 w0 g, i- Z补充内容 (2012-3-8 09:42):9 o0 o& ]: w; l
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  i: S! ~  z' Z# t) n" T" Y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
' P; q- B# q7 K' e7 G. O7 F
2 X5 e( x( q4 }' S% h1 d- \5 ihimr <address> <value>. sample: himr 0x80040000 0x0
  C5 R! y: i- o6 o. N
" [- s+ Q; h1 F& E6 n8 ?( Y& \例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
$ s- d4 U% \1 `: _$ nhimr 0x80040000 0x00
, \$ m! C! c; C8 Z2 yhimr 0x80040001 0x116 @" _- {2 {7 |2 {
himr 0x80040002 0x22
( I* l3 i* J7 E7 G2 x! R4 F  |himr 0x80040003 0x336 \; k$ X4 c( {4 A
himr 0x80040004 0x446 F& @& K3 C; m  h- e, r7 P! E
himr 0x80040005 0x55) j7 n8 j- H  a' v$ B6 [

/ g( v, ]3 \/ N. T$ K  QSN也是类似。# S: }7 v/ N$ x+ l& \9 _

' E4 K* \- [% K2 Z. r4 e现在主要是,谁告诉我们MAC和SN的地址?
  T* w3 v) O/ G9 e, k
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 5 v2 q4 y/ s: Q2 k
一直想找到运程修改MAC和SN的办法,苦于无解啊
  j) |# P+ K. L. k: E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
  q8 U% z% F- w7 a* H2 }
/ d$ z8 C' w3 D) e7 ^" u4 J修改的代码早有了。到今天不会编译。
' n4 j2 _$ {% \' J需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + F2 ^3 k" u* }# T; p6 }2 S
  2. #include <malloc.h>3 y5 z+ P" H4 X
  3. #include <sys/types.h>0 ^% a6 U! q) A: o+ r, i. L
  4. #include <sys/stat.h>8 ~' R: a5 E9 H% O& w1 i
  5. #include <sys/ioctl.h>
    0 Q' B8 X2 ?+ \
  6. #include <stdio.h>9 T0 |& A$ \# x7 P* |1 j6 C
  7. #include <string.h>( ]8 U* C' n( n- ~' @! C2 {
  8. 9 i7 }3 v- M, x: w! |8 U+ u
  9. typedef struct {
    1 s' t) J6 M. ?; I6 g) U, {+ J
  10.         unsigned int        e2prom_cmd_sub_addr;
    ( |; r  e3 u  T; o9 y4 u
  11.         unsigned int        sub_addr_count;& t, W& x3 U$ z( }4 W" v+ ?  P
  12.         unsigned char*        e2prom_cmd_data;
    4 o4 F, I' K# d
  13.         unsigned int        data_count;. ~. J6 r% @1 c6 z3 Q- V
  14. } e2prom_s_cmd;
    % G& U. @4 {# j. R/ r  [+ G, a7 J7 k

  15. . s* ?" K, w: B: Q+ f$ Q. m
  16. #define E2PROM_CMD_READ 13 H" |8 ?7 J  N. I
  17. #define E2PROM_CMD_WRITE 26 L1 D* D0 X: k3 Z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    + H4 ?0 R1 e  S4 v. k/ Q
  19. ! X2 v1 R$ D) y9 \- P! _
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" z" P; y, ?8 j! A/ I0 u
  21. {
    % y. `4 H4 M* O. z8 X5 }2 X
  22.         int fd, ret;# r- b% @5 f8 R" S2 b0 o+ I+ w
  23.         e2prom_s_cmd arg;
    % m' q6 g5 D  y5 S  g3 P) Y* ^
  24.         unsigned char buf[0x18];5 B# u3 L* p2 e- I
  25.   _8 ]4 ?9 \( V* z& T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , I/ K& s% z  K$ f& d
  27.         if (fd  < 0) {) k. m/ t  \1 D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 n) a% s3 L: P  N+ S
  29.                 return -1;, X; k% y% w" k0 z$ W
  30.         }  o% X- k% ]8 d. w( n) q% }
  31.         arg.sub_addr_count      = 2;0 ?0 G, _/ C: ^9 @2 Q8 q9 y) g
  32.         arg.data_count          = 0x18;; A5 B* M; {# r8 F0 ^, ^$ k8 G, I* q4 w
  33.         arg.e2prom_cmd_sub_addr = 0x290;- z' i$ C% y3 v( `. s& i6 a
  34.         arg.e2prom_cmd_data     = buf;& w' h$ G( w, L7 l0 t3 V0 ~% L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * I/ |8 L  e; V' }
  36.         if (ret != 0) {! z& a6 W0 L0 A6 y, M
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ l6 J/ o, C/ h9 d" ^% Q8 x* {: W- @
  38.                 return -1;
    - G9 ?( _6 ~  y7 P# W
  39.         }4 d( u. \) z9 P! v
  40.         memcpy(mac, buf, 6);
    ) X9 v/ \, J- T) Y
  41.         memcpy(stbid, &buf[6], 18);, Z; o  Q+ P+ y! C( l# {$ S
  42.         stbid[18] = '\0';  e; x* }2 }) ^7 z2 b3 `; L
  43. ) e- T6 p7 `2 M5 B/ E8 q( X
  44.         return 0;+ H3 l+ i/ r' @6 P2 V! Y" a
  45. }, \4 F3 l% E: [1 B- O- q
  46. ; E) H! j, p% `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 H; K4 _6 x& z
  48. {+ L: ^& @# c0 t* A! c
  49.         int fd, ret;
    : ?! m, L7 @: v3 r& ?% b  q
  50.         e2prom_s_cmd arg;+ x0 z8 e% x  A$ _
  51.         unsigned char buf[0x18];
    - g& L  q# Y; }
  52. ; @8 u& @% y) N- j8 Q
  53.         memcpy(buf, mac, 6);/ I0 G' V3 j9 t9 }4 ]
  54.         memcpy(&buf[6], stbid, 18);2 N6 S; |3 k% E  K+ w" j' w
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 p8 \- {& W" a2 O
  56.         if (fd  < 0) {
    3 K# I5 X/ v9 y/ x: J
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( v- }8 e( \; M
  58.                 return -1;6 y" I0 |3 y3 y) u
  59.         }
    " ^" \% t* }1 v
  60.         arg.sub_addr_count      = 2;
    1 Y0 G& u: C8 |  Q6 T9 ]
  61.         arg.data_count          = 0x18;/ Q! O$ N9 g9 q* t. @+ M
  62.         arg.e2prom_cmd_sub_addr = 0x290;  Y5 d3 G" \7 Y
  63.         arg.e2prom_cmd_data     = buf;
    3 @' i$ G1 J/ h: ~
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . Y0 i7 s, L& }
  65.         if (ret != 0) {
      `6 X3 {, Z3 m- l- I6 Y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % M! I2 f' Q. u7 e2 a% c
  67.                 return -1;
    6 n- f1 C0 d$ V5 K9 `5 v
  68.         }7 Y3 x3 n8 m8 I% ?4 k4 d6 E- ?

  69. ' m) m- G5 y0 y( v! F( Q
  70.         return 0;" @2 @5 A1 @- f  n) d
  71. }
    # z& I. g8 ]0 d  U& q; B/ N
  72. 9 e7 {# _  @; P5 F% h9 w' [4 X
  73. int main()  q; g5 H7 {/ [: g0 r! N0 s  W
  74. {. L( E- K/ B! I! |$ d8 a4 z. h
  75.         char c;8 p% D8 R& \* }+ B7 F( m4 B+ l# z
  76.         int i, macs[6];
    , I" _# f, j' ?( E) M' g- Z
  77.         unsigned char mac[6];
    ) w: h/ ^; _$ ~/ Z# }# C
  78.         unsigned char stbid[256];6 U1 {# f7 m8 A' y; w/ \
  79. % M2 Q8 Y2 O+ |6 j- b: \
  80.         if (readparam(mac, stbid) < 0)1 t0 @" g' W& x' b: [. q9 n9 r+ ~/ A
  81.                 return 1;
    % I$ W! o  j+ V! P& @1 U
  82. ) @0 f2 L: ?% N3 u" r, ^( _
  83.         printf("Current parameters: \n");
    " \2 r' z3 m* K9 s% S8 x# q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 M; r  e8 t' M( [
  85.         printf("  STBID: %s\n", stbid);
    - T$ Z; z' s) P
  86.        
    4 {% C/ W6 M9 y  I1 H2 q$ n
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    " I7 T6 h# _$ R& A2 f% Q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 M# E  a+ i1 @5 f3 X* J) f  v
  89.                 printf("Input MAC error\n");$ L: H8 l. w5 O7 S" B0 s; c1 L- p
  90.                 return 1;/ T! Q$ N3 N) ~
  91.         }! p8 w0 K; U3 X# \2 v/ ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 t( D9 M0 ~( `+ X) l
  93.         printf("\nPlease input new STBID: ");
    / \: q" b4 m3 a0 P% T2 \6 e
  94.         scanf("%s", stbid);
    : x. `& r, O1 N- m
  95.         if (strlen(stbid) != 18) {6 V3 k1 F. Q3 m& P) A
  96.                 printf("Invalid stbid\n");
    # c$ b: y8 V" ]7 m+ a6 e
  97.                 return 1;
    5 I2 h# F" b- @7 K+ d& [
  98.         }
    " N* j) [% C5 {$ f$ `+ N. f
  99.         printf("\nNew parameters: \n");
      F3 }! K9 w2 L6 X- v3 |! n
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( D1 b8 h8 `. r% G8 C
  101.         printf("  STBID: %s\n", stbid);' u+ v' K2 i8 p# c( w6 d; H
  102. " B0 Y# s% d/ |5 o& x( C" P; ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    9 d4 }2 d7 w5 X. F2 b! q$ S& v5 `
  104.         for (;;) {  ?" Z' H3 i5 Y! J8 V4 S
  105.                 c = getchar();. N" \" c& k  J
  106.                 if (c == 'y' || c == 'Y')
    # w3 E& _. {' ?; B. ]  B/ k% M: y  L/ I
  107.                         break;5 A# }9 l- t- t7 {7 `$ E) n
  108.                 if (c == 'n' || c == 'N') {+ k, M7 Q9 G- P& Q2 M) a9 T
  109.                         printf("\nAborted.\n");
    , }; j& i* X; k, W/ Y# V
  110.                         return 1;. G/ R7 P* k4 @
  111.                 }; P$ X* R2 Q! j. ~0 Z
  112.         }
    ) H9 ^' F+ B8 M6 i. V) F  w
  113.         if (writeparam(mac, stbid) == 0)
    - R0 A4 H7 h: u* s' X
  114.                 printf("Parameters changed.\n");% l) ]3 d2 u% T2 x
  115. ; N5 \8 B, o% h6 V. u$ j" |
  116.         return 0;4 R0 ]- U, o- R" |8 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 " }/ C6 p' r5 d/ M' _
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 p: |, r4 |2 p你用的编译命令行格式是什么?
1 l* T6 o) P' f) {+ \! C/ _: B
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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