查看: 16937|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    5 ^/ n& q' E9 x, n+ m: W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . Z3 u( O1 I' r6 q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 M8 a2 P6 k7 e  R  F
usage: himr <address> <value>. sample: himr 0x80040000 0x0% ]$ N% i9 G+ J/ @: @9 `5 Z' _
' d) h. |) p: o
- ]" o- K) [  |0 V6 l; W
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: s/ I! N: Y* t- \
' N; }! h) R& b8 O7 O
补充内容 (2012-3-8 09:42):
6 z- i2 {* ?' |: e" @7 M; {* n3 m) q& |http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
7 Q) x+ Z& B2 q2 a, ?$ b% r$ f这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
3 h$ a% c1 H( @& b
! S4 }6 k" T" ^5 Y1 w% V- qhimr <address> <value>. sample: himr 0x80040000 0x0: b" F. y; h" K' X( [/ T. x
4 U; q. i$ ?) M% e( z6 {
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& d& {  H! A  p" yhimr 0x80040000 0x00
% r8 f, e0 y( \6 {' Ihimr 0x80040001 0x11
1 c7 X* s) E7 q2 g2 v3 {/ Dhimr 0x80040002 0x22+ y" d$ E# X' C
himr 0x80040003 0x33% t2 z5 @9 ~& C
himr 0x80040004 0x44
* V8 q9 X0 B+ c) Z; F/ Thimr 0x80040005 0x55
6 X1 z) Z; k; p8 ~: B
3 O/ e& q  N& t6 Y) \. |) z: @; p" NSN也是类似。( i8 j8 A  ^% r# t3 X( Q( K7 T& q4 I

! j, y! _% T) \3 M2 _现在主要是,谁告诉我们MAC和SN的地址?
" I& Z/ w$ W5 I: L, n5 h) A7 m
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
/ E/ E6 F! {8 y* x5 S/ M/ d* T9 e) o一直想找到运程修改MAC和SN的办法,苦于无解啊

3 S- Y( e+ _/ |  e源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
) D/ R& W5 g8 V5 n; s7 k
7 z; E. C7 D; v' P& C修改的代码早有了。到今天不会编译。
8 |! X: r# F  ^8 E0 J需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ ?) W# R1 B% W& E8 v+ Q
  2. #include <malloc.h>
    . e! }# e3 Y7 {! \" `
  3. #include <sys/types.h>* v, v; D# i$ M" M3 E% W$ c& _: U
  4. #include <sys/stat.h>
    8 J# I& i8 p* |1 e
  5. #include <sys/ioctl.h>- p/ G! v9 d+ o1 s4 }
  6. #include <stdio.h>
    0 a! q+ Y6 p+ X1 R  F$ Y
  7. #include <string.h>
    ' R5 L% y1 m2 u+ _* R
  8. 3 V3 ?4 p& [& f0 w# ]8 O
  9. typedef struct {
    9 ~, }( F) z& f7 }8 k: X. X2 j
  10.         unsigned int        e2prom_cmd_sub_addr;( G! A6 d5 M/ V
  11.         unsigned int        sub_addr_count;
    / H( s* ]  i! T7 F4 _$ U# t
  12.         unsigned char*        e2prom_cmd_data;
    + a" l' V5 z/ T1 D( J1 m
  13.         unsigned int        data_count;
    ) r8 r8 ~; y& N* ~+ Y! D. M
  14. } e2prom_s_cmd;
    1 ~% Z1 r& U! k) n

  15. ' x, o0 t4 E+ G) g* _
  16. #define E2PROM_CMD_READ 1
    ; ?% P0 X( ^7 i
  17. #define E2PROM_CMD_WRITE 2
    , Q3 U2 C+ T% a
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 B9 j' @8 M  u% t' S& l$ B5 R' O/ c5 [

  19. $ ?, j. Z$ _: G. c& ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- e$ L  f. C- Q# ^4 m; Y
  21. {
    : j( j) o8 G- X0 m
  22.         int fd, ret;
    2 O# G$ q# p' S! S
  23.         e2prom_s_cmd arg;6 G& G# i% e- M3 G# j
  24.         unsigned char buf[0x18];% n/ W  ?, }+ y6 ?) I
  25. & o9 R$ G9 R# J
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    * `" V2 z- v9 z2 X8 x+ h1 K
  27.         if (fd  < 0) {
    1 j7 x# O+ e7 j5 M/ `
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 [  \3 x/ Q& y/ M  A1 O& I; L; C" x% t
  29.                 return -1;- U. b, I# S# l, W2 T% M2 L; |
  30.         }
    , H2 ~& G0 N2 Y
  31.         arg.sub_addr_count      = 2;' r; Z- X5 ~0 h+ ~. I
  32.         arg.data_count          = 0x18;  F' P- k# m. B9 i4 C
  33.         arg.e2prom_cmd_sub_addr = 0x290;, r  Y' B4 h% s
  34.         arg.e2prom_cmd_data     = buf;1 s7 h* F) t" }4 q6 v
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( X& F& r/ Q8 K& Q3 V2 s% M' @
  36.         if (ret != 0) {6 @6 I7 @9 r) N/ k3 _7 D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - {: S" q) a! M
  38.                 return -1;3 ]# ?( z0 [# [5 C
  39.         }
    - @/ H$ X. [' d; K
  40.         memcpy(mac, buf, 6);2 [/ d6 `! m+ |) h$ Q+ y3 M* T! r( Y
  41.         memcpy(stbid, &buf[6], 18);
    : U" q% p. T6 q4 B5 Y7 [7 \
  42.         stbid[18] = '\0';3 _. N% Y4 l) i' @% K3 x. X# d( J
  43. ' `" M/ t5 O! Q" G
  44.         return 0;
    3 E$ A% \0 ~3 p3 |& Q; X: L
  45. }
    6 m  j$ X- h8 a9 R+ ~, E/ @

  46. ! s: T& w- m; F$ c0 m. E* P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) t" O: N9 ~6 z' a, ]
  48. {
    ; \, Q1 ^0 @2 {3 ^# H3 R0 I
  49.         int fd, ret;
    7 o: r; ]5 P9 P& ]3 c1 V
  50.         e2prom_s_cmd arg;. \. d4 P) }+ r% x9 H
  51.         unsigned char buf[0x18];
      l: [* I5 o5 F8 |

  52. / D0 Q4 c) S9 G0 c" ?* Q" A
  53.         memcpy(buf, mac, 6);
    0 ^5 Q7 o  i5 e
  54.         memcpy(&buf[6], stbid, 18);" w# l( G; a! @2 e" m! {/ h) A5 C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);1 Y) l9 \) K# F/ U
  56.         if (fd  < 0) {+ \! x! k8 D+ B' r
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , ~; G5 h2 A+ y' F/ B) O( Q0 D6 Y
  58.                 return -1;
    ' n  \( @* g& j+ `2 E1 }0 V
  59.         }7 h4 I& ^! b" g, t
  60.         arg.sub_addr_count      = 2;- F1 B4 ^' P( T) ?
  61.         arg.data_count          = 0x18;
    , t! `8 a* i/ z+ B4 K, o
  62.         arg.e2prom_cmd_sub_addr = 0x290;" }* F" O7 H7 k) P7 U/ b/ r  f! R7 B
  63.         arg.e2prom_cmd_data     = buf;; N, |" F1 M2 O, |4 O; D9 ]
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; W2 k2 n1 [$ D% ]" u
  65.         if (ret != 0) {
    9 ~/ p6 e; X& n; q8 l5 E
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 X4 ^0 ~- b4 Z
  67.                 return -1;9 @) X$ D) ?) |, Q- A0 k9 s
  68.         }
    6 u. F! L' G/ D3 W
  69. ; z) d/ H" W# A
  70.         return 0;
    9 c& J. g7 ~3 ?/ q
  71. }' d% k9 {- v+ ~4 A( @8 ^) {* _2 p
  72. ( `3 a8 d! c# Q2 W2 [5 ]
  73. int main()
    & k7 }6 K) A+ S: q7 V* K
  74. {
    / v2 x- b; w4 P7 U% ]7 ]
  75.         char c;$ {; u2 g. h' v$ P7 ^6 ^! P
  76.         int i, macs[6];) q# q( L  q& _; f
  77.         unsigned char mac[6];
    $ u4 g. }3 m: D. k1 g
  78.         unsigned char stbid[256];8 ~' J" J, L, p1 Z# f+ [

  79. 0 S: s2 P5 L& I" [) ^+ X
  80.         if (readparam(mac, stbid) < 0)
    8 L8 A; D0 F( F( g, e6 V
  81.                 return 1;
    5 _& Y1 y" i. n8 a: m6 T, m

  82. 5 Q+ e5 p9 x6 _9 ~$ t; A( c1 P
  83.         printf("Current parameters: \n");
    1 K+ K  L4 r* U6 f9 H6 |
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' L0 r  Z4 ~1 a
  85.         printf("  STBID: %s\n", stbid);
    7 q# ]% B9 {+ Z. M, T
  86.         : U& ?" u- F: ]8 F& Y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    3 w# P; r: [; r% q. i5 [. B- R0 O
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . ~* ~, p+ ]3 ^' b# G: W9 ?
  89.                 printf("Input MAC error\n");- G! I; v7 Q) X9 I1 ?2 Z: ]) z) W
  90.                 return 1;5 T2 }5 T. u% q5 v* z6 C
  91.         }: }  u4 s" ^- y4 A6 g: E' m
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & W# Y! q1 }/ B: u$ `
  93.         printf("\nPlease input new STBID: ");) ?0 \$ C: @8 T% w$ G2 m
  94.         scanf("%s", stbid);+ p- P- y2 V, @8 i8 \
  95.         if (strlen(stbid) != 18) {$ Z4 K" b0 j; D% T6 l! N
  96.                 printf("Invalid stbid\n");) e" U5 Y# G! w' P  Z4 Y0 R3 @
  97.                 return 1;
    0 P% F* j/ |. ?, I( M- \5 \
  98.         }9 B/ a. ]# b( K9 ~! R! v
  99.         printf("\nNew parameters: \n");3 d  m) W0 Q7 X. G& y, _+ f7 R3 W
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* a3 R& x9 ~4 |6 @' U. D
  101.         printf("  STBID: %s\n", stbid);, l+ h! ~( u5 m& t; ?
  102. 6 D8 ?0 O" P9 L/ g, R
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / j/ z' q* Z6 ~: E6 g+ _
  104.         for (;;) {
    9 _$ F0 \& c, }5 f. |4 t* z
  105.                 c = getchar();) Y3 P5 t0 N; t+ ?4 k
  106.                 if (c == 'y' || c == 'Y')
    , t8 b0 j4 R% q  p" i) d2 ~+ o
  107.                         break;4 Q$ H- q& [* f) @
  108.                 if (c == 'n' || c == 'N') {
      ?2 k8 l  r  D2 Q- t) k& T
  109.                         printf("\nAborted.\n");
    9 v& O! W6 Z' R3 h
  110.                         return 1;  ]9 j( _0 y$ A  y
  111.                 }" s- J$ q8 d6 G$ r4 `% m7 y# F
  112.         }
    2 D  u/ O# s- T. v5 z/ k
  113.         if (writeparam(mac, stbid) == 0) 6 ?) p' a( g/ P9 E
  114.                 printf("Parameters changed.\n");8 Z* J# c& F3 C( a9 g

  115. 2 N8 \* M! D; j7 [7 n. p
  116.         return 0;- i, A6 r) u  x& g/ X8 w& w
  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
% D% J! ?4 r5 C  K; r在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

! }& y& z! D( D  e/ p* X, E% B! ]) Y你用的编译命令行格式是什么?& {7 o# w. G$ D$ C0 c0 ~
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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