查看: 16876|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr: M) @! z& W$ i
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 S  ?2 C* W* {: F2 {% K$ K6 G% k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:, [5 W) E- S( [; C2 ~/ C. O8 w
usage: himr <address> <value>. sample: himr 0x80040000 0x0
% q2 ]9 @. Z6 T4 }  O' ]1 J' p
6 e0 q" k( Y8 G' K  P4 C& E4 p6 P8 s9 Q* q0 I2 Y- F  D
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& c9 j0 v. Q: A- K% D
0 h2 \2 k) X- D# \! _) G$ I$ p& V补充内容 (2012-3-8 09:42):
( J4 ^, T9 E! ~' G- I" Y/ Nhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- U' K- t% F& ^# N
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
  U* k3 P8 j% f3 `  L3 T7 t" X$ t* x  l9 D& o! ?5 B8 `, T
himr <address> <value>. sample: himr 0x80040000 0x0
+ m# d4 W, N5 W) U& K9 _' `+ b& a( w
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。3 n* A0 F$ G5 E& M
himr 0x80040000 0x00" b4 v: P7 E- b3 r4 p: V
himr 0x80040001 0x11
4 N! W& R# @/ b2 Jhimr 0x80040002 0x22
! P! e3 T. K7 Y3 `0 q3 Khimr 0x80040003 0x33
6 \* P: ~5 z5 J% c. m& dhimr 0x80040004 0x44
, u: [' }: }( khimr 0x80040005 0x55- e9 w$ M) |$ ?3 N' D* b  e$ y

0 I5 c5 ]% L! S0 D* NSN也是类似。
2 F( a0 K! n: Y( z  x  k4 c
" n' S7 A& }: O" ?现在主要是,谁告诉我们MAC和SN的地址?; \. ?0 g- P) y* c/ a, v1 T
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . t9 z7 T9 B% k0 O3 Z6 _- i* p8 D5 `
一直想找到运程修改MAC和SN的办法,苦于无解啊
2 A  c9 c5 t" V4 E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * i" }: p) ]# E; W1 B" Y9 S
  l8 w' c1 _! d( v- P
修改的代码早有了。到今天不会编译。
7 e) J1 s" Z; W+ o9 v需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    & V% @& n4 V# M
  2. #include <malloc.h>
    - e! k9 \- X/ c5 ^. H1 \  A
  3. #include <sys/types.h>
    8 B* r1 H/ J7 d5 g+ s" Y0 t
  4. #include <sys/stat.h>
    4 ?( K' C! N  R/ {" I6 @0 G! m+ y
  5. #include <sys/ioctl.h>
    % ]  E# x5 p  M( y! N. T7 ?
  6. #include <stdio.h>
    8 J# w1 f0 M% @' H2 g
  7. #include <string.h>
    ' w7 t, N  _$ f/ e  \
  8. " }; r" p% Z; c8 P4 e; p
  9. typedef struct {* `6 S, [) J, l9 h) M' y
  10.         unsigned int        e2prom_cmd_sub_addr;& l; w$ K0 c1 v
  11.         unsigned int        sub_addr_count;6 |# @6 C1 P& A! d
  12.         unsigned char*        e2prom_cmd_data;# N" s/ j! V* F; _
  13.         unsigned int        data_count;0 ~! E0 `) L8 p! {9 u9 V4 [
  14. } e2prom_s_cmd;
    . A; L, X, B2 N3 k7 M4 @8 E
  15. 6 H" T$ W3 @8 j$ h5 p! m% o$ P
  16. #define E2PROM_CMD_READ 1
    " _( q. m- U; A
  17. #define E2PROM_CMD_WRITE 2
    / q5 l- p8 {1 h* ^
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    * ^8 {1 r7 K* t& k  m
  19. 5 v' L: Z  \& f( |% n
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 M2 {. O# j# K+ o$ g4 @
  21. {
    9 Z- j% Z- P. C+ V
  22.         int fd, ret;4 @' b0 R) x$ [3 d1 E* o
  23.         e2prom_s_cmd arg;- A9 N! [$ q* R: i  I6 n
  24.         unsigned char buf[0x18];
    4 i+ s1 o1 Z. i' H

  25.   w- X8 ?. ^8 L" y1 m5 w$ g
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' E8 v* w8 O' `6 W
  27.         if (fd  < 0) {
    % s+ e" l! h2 j0 C: z0 F9 ^3 q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ P7 S! m* j" ~/ Z- Q
  29.                 return -1;! E2 Y9 ~- o; w1 x  o8 M/ V
  30.         }: M6 |1 [8 R* E! X4 S" @
  31.         arg.sub_addr_count      = 2;4 o; z& A, v! q' S
  32.         arg.data_count          = 0x18;
    # O1 S4 J8 Q7 `  |- S) D
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 W* p9 e. G( |! t; i( i$ z: ~. l
  34.         arg.e2prom_cmd_data     = buf;
    * T: p$ E* S; k  g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);  d6 q2 P/ ^. l( {+ z9 o
  36.         if (ret != 0) {
    $ N6 w8 d1 M( r5 I
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . P  W. R+ i' U1 r% w5 G" @/ D
  38.                 return -1;
    / f7 S" X3 S: \
  39.         }
    * J8 [3 w! y$ o/ y8 I$ s  `9 l" u8 O
  40.         memcpy(mac, buf, 6);
    9 ~% o& p) Z- @( ~* k
  41.         memcpy(stbid, &buf[6], 18);: n+ o& e% ^. }
  42.         stbid[18] = '\0';
    " h4 H$ E; p* Y+ {/ |6 z
  43. 6 G' S* z4 f8 }. f0 \! g
  44.         return 0;. M( k5 x7 q4 E5 ?8 k8 q
  45. }9 a; ?% j. ~" P9 V9 }0 Y

  46. / g0 h) V2 T; F1 e5 o: q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" [0 n$ H) x. K; P
  48. {3 V3 g0 I' P, R0 N; Q
  49.         int fd, ret;3 F' [" n9 a5 P2 _8 ^
  50.         e2prom_s_cmd arg;5 f  v- v1 e5 x, G( J
  51.         unsigned char buf[0x18];
    : ]: Y7 n) n4 K2 q: u
  52. ) o+ T  H% G$ j/ q0 `" v
  53.         memcpy(buf, mac, 6);
    7 l4 X; n, S5 f6 u5 b2 ~- u
  54.         memcpy(&buf[6], stbid, 18);5 ^) X8 g& [& L- x
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 q5 W) M( N) w0 A% N
  56.         if (fd  < 0) {5 M2 _6 y$ P8 M; d  H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 Q. z9 |4 M$ C8 n4 ?
  58.                 return -1;
    3 Q: P# P) w/ Y1 A
  59.         }6 v. P/ Z, \! Y. {- W
  60.         arg.sub_addr_count      = 2;% K" }) i& U* u
  61.         arg.data_count          = 0x18;8 C6 ]* C% L: i% X5 d
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; Q1 K. x5 s" E" I; p8 |
  63.         arg.e2prom_cmd_data     = buf;
      I5 T' b% h6 Z* a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 l& v7 Q6 R4 N1 }. z* @; Q
  65.         if (ret != 0) {
    % }  h/ Q  b1 B& @  [
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! r: l+ f; |0 T
  67.                 return -1;
    : f* t: g- ~8 |( W
  68.         }
    ! d- E7 S# t7 R$ p" d6 L1 a
  69. % U* O# K( T9 g1 [2 E3 W8 @
  70.         return 0;! Z( o/ `+ l1 d" J  ]& \6 G
  71. }6 U9 b, \5 Y5 }+ X

  72. # s* h. |; I3 _& M9 U& \
  73. int main()( ^' u3 z4 T: ^$ h/ _/ v$ k
  74. {" j3 X7 a# I5 W9 J7 \4 |
  75.         char c;
    ) q6 G! A6 J+ `
  76.         int i, macs[6];. y8 {7 q; `+ n7 f
  77.         unsigned char mac[6];0 l5 I: r* f9 ~& B$ \, R7 ?& t
  78.         unsigned char stbid[256];1 j8 B5 Y0 W: h) N; J% j

  79. ) K+ l$ R1 R+ s1 K7 h
  80.         if (readparam(mac, stbid) < 0)% ]. s. x! S- D
  81.                 return 1;
    * c& q3 ?2 i% P; Q7 C
  82. " A/ V; A3 C6 l0 x& \) m
  83.         printf("Current parameters: \n");1 g% F5 d( S+ p6 G' Z# f  U# k* K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) ]" g7 S7 z4 S/ j+ Z9 ]- D( d
  85.         printf("  STBID: %s\n", stbid);
    ) f. O4 |! ?$ i, b
  86.         6 f/ [* z, T  S( t- B' i/ T* d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , u$ g* B6 D: Z# Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {* a  y, s* F$ i3 s4 i8 H0 w
  89.                 printf("Input MAC error\n");
    / ~$ ~8 n/ B7 R# O7 N2 f
  90.                 return 1;
    * m- D7 v9 a8 p. @. y% }- j
  91.         }
    0 m+ Z. {1 c; s4 P3 D" C
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( j: J/ p* m. t2 z" p
  93.         printf("\nPlease input new STBID: ");
    # w4 ~- k1 v% J* q8 I
  94.         scanf("%s", stbid);
    5 f+ m/ _6 n" a0 n) p
  95.         if (strlen(stbid) != 18) {$ I# V' g1 m* [" B: z- E' I
  96.                 printf("Invalid stbid\n");
    # V% |- r: {8 S5 e/ u" ?
  97.                 return 1;3 w7 `. j/ \, N4 q$ }- v" u7 O
  98.         }
    ; x2 e& I$ D9 v; f
  99.         printf("\nNew parameters: \n");
    : F* W* v( m/ [% Y# @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . _" p' {) ]9 \, Z
  101.         printf("  STBID: %s\n", stbid);
    ( P" ^' R# a5 k# c7 k& R9 _

  102. # z# @7 @8 k6 S* G( ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");+ V& n. i+ H/ [$ r& i
  104.         for (;;) {" R) B. G3 w5 W  e# `
  105.                 c = getchar();
    : Z9 Y; l6 n, F2 @
  106.                 if (c == 'y' || c == 'Y')5 P. S9 d5 u3 P# D0 {
  107.                         break;
    - }" j( E6 ^1 F5 t& l) r+ U
  108.                 if (c == 'n' || c == 'N') {
    8 A% J5 i- k" B) i
  109.                         printf("\nAborted.\n");! o) x" y4 g2 f! P' s
  110.                         return 1;
    ; n& h/ C/ d' H( `" ?
  111.                 }9 l+ F7 g% b5 C; }" B- a
  112.         }1 o7 u7 F5 }5 m: L0 K
  113.         if (writeparam(mac, stbid) == 0)
    ( L& ?9 l* @2 [: M& H
  114.                 printf("Parameters changed.\n");+ g8 p* W6 L: Y
  115. ( L" T  k; r; K7 `1 A7 H: s) F
  116.         return 0;
    0 j  s4 C8 i6 ~0 s  t! @0 C: H1 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
! {# F  M3 V8 }2 r$ t在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 Z; a7 @' ~; z% G3 o$ J你用的编译命令行格式是什么?2 q; H/ e3 z: R/ t0 F! @
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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