查看: 17633|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    8 x( g1 B- u! C) F1 s/ B
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ ^6 U8 H2 B4 w6 w# K1 T0 \8 }/ W
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
7 k5 l0 w6 B9 @% N' G9 ?0 a6 kusage: himr <address> <value>. sample: himr 0x80040000 0x06 Y1 k' |- ?+ F
) V: i3 h  Y  w7 d4 m
/ b8 t) c* r6 ~' \% [6 f
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
( ?0 J8 Q- y9 q% g( U% H4 Q
% n& c' J0 L" A- u, `补充内容 (2012-3-8 09:42):
9 w2 X  ~' n( O6 a: vhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- @  j) S& v4 ?/ a7 p- \- S6 }
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。; m9 }" D. Q) M4 G
/ r& W8 g2 r' a0 ^4 P* K8 `% ~% z
himr <address> <value>. sample: himr 0x80040000 0x0; R; l7 k3 @2 t, E4 @
& u5 v% q) j: M, B* ^+ Y  l% l( o
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 G3 z& \. u  `
himr 0x80040000 0x00
# o5 {# H2 L$ _$ Ihimr 0x80040001 0x11
( K  N9 T: x& bhimr 0x80040002 0x22! X( U& D5 p2 h/ a
himr 0x80040003 0x33& ^. O  G1 y4 R# `5 D4 h
himr 0x80040004 0x44
$ t0 y& z4 d& W3 o: i2 @himr 0x80040005 0x55
! }- ]1 x7 `2 p* B, c1 w8 C8 g; U% A6 L$ ?; U9 c
SN也是类似。# k, D! f. `8 Q/ Z/ `% J
' Q  m0 P0 ]7 X2 l8 @
现在主要是,谁告诉我们MAC和SN的地址?
' L( u2 O+ U3 Z0 z5 u6 F/ z$ ~2 @
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 , C# C  [7 }; ]# @8 Y
一直想找到运程修改MAC和SN的办法,苦于无解啊
) b( w9 G1 A) j& r& U
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 a, R: l, l0 w, g6 V
1 S* U/ V7 N# A4 y0 T( g修改的代码早有了。到今天不会编译。5 z) j6 J+ b8 M6 ]9 I
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) @0 ?0 e. n! X& J
  2. #include <malloc.h>
    / {! @7 d2 A3 Q* A0 |; q. N
  3. #include <sys/types.h>
    3 J1 w; B% A* V# Y( F
  4. #include <sys/stat.h>
    ( Z8 h3 T% l! R" `
  5. #include <sys/ioctl.h>5 B+ @6 q9 O" _  `
  6. #include <stdio.h>% J5 _9 a& w: O8 B5 i
  7. #include <string.h>
    ) X! w' l3 A$ ]+ i

  8. 5 O% K/ B' q- V! p$ X
  9. typedef struct {
    5 a6 ^9 T7 z1 r5 F/ s6 U: {
  10.         unsigned int        e2prom_cmd_sub_addr;
    , o; }6 L: N' @: J6 g
  11.         unsigned int        sub_addr_count;% v# K  ]! i9 f1 G9 B9 Z
  12.         unsigned char*        e2prom_cmd_data;
    ( h( G7 b. t! w' J" {3 z
  13.         unsigned int        data_count;
    + r- D& i! o1 E$ ?! g* d
  14. } e2prom_s_cmd;
    ) V) w) @& [8 D1 X: V: M/ j
  15.   p6 S" E4 K9 G
  16. #define E2PROM_CMD_READ 1
    ) M1 T6 x5 W! r  ?$ P6 R
  17. #define E2PROM_CMD_WRITE 2
    . a$ v. ~9 P. c. u" K+ Y7 \0 {8 _
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 Z1 K; g2 R; t+ a, q: l
  19. 0 j& z( T, e: e4 P3 Y+ |4 m# A
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    , r' M) h6 }# [- G0 D3 x2 h& L
  21. {& J9 n, L$ V/ g/ S- R/ N2 K9 {
  22.         int fd, ret;7 Q8 E) I% x5 a- }# s6 V
  23.         e2prom_s_cmd arg;% a3 ?; S! Z, ?$ q" O9 @8 o6 ~
  24.         unsigned char buf[0x18];' y2 {, d- c! U& N1 o& h
  25. ! A2 k( b. Z8 n
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 e* N& a: C* D
  27.         if (fd  < 0) {
    $ {, h9 x5 H* Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( U0 q, c* y* w. _+ w
  29.                 return -1;
    ) p5 A* |& ~) B% E) J" W* q/ h3 h
  30.         }9 E) r/ o4 t- U/ K8 E5 d1 u
  31.         arg.sub_addr_count      = 2;
    1 s" d: f! A$ z8 s
  32.         arg.data_count          = 0x18;4 d0 w# c% p7 h; M
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    6 v4 h9 D5 j$ A4 H2 |1 s
  34.         arg.e2prom_cmd_data     = buf;- f& b' D9 ?+ c. k9 D$ g6 e  u
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ( T' t4 B6 H, F0 |7 _; U8 R
  36.         if (ret != 0) {  L/ f; C  t6 S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ u' P1 {! {( P: b$ [( k
  38.                 return -1;
    " N6 b1 G, B/ t) S6 X
  39.         }
    ( u% C! S2 B$ L6 a
  40.         memcpy(mac, buf, 6);/ |3 f4 ~0 v* d$ ]
  41.         memcpy(stbid, &buf[6], 18);3 @; h* c1 \$ v4 p6 T! k0 @9 l* {" y
  42.         stbid[18] = '\0';6 Z  j+ X# w& b$ C
  43. - @& O) p2 k; H' C: v
  44.         return 0;# w3 [# {, W& L; ~0 H9 v! [* L
  45. }$ G7 R; R7 ]% M* Z
  46. ; d( t/ @/ c% `& x$ x5 t
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ h$ e4 l) @1 z* K$ [
  48. {
    7 d+ _6 O; u" {5 \
  49.         int fd, ret;
    2 h0 H0 [: ~( L; d5 H
  50.         e2prom_s_cmd arg;
    : n  q# z$ b& ~' U  P/ E
  51.         unsigned char buf[0x18];
    " [( ~: M. r" v
  52. , Z8 `2 ?) N4 o# l$ p  |
  53.         memcpy(buf, mac, 6);
    " x% ]8 Z* B# S& @. u, b' x/ U! Q
  54.         memcpy(&buf[6], stbid, 18);4 c. C% L+ h3 H% U8 X- k1 C6 N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& `! X% p7 @4 b' a
  56.         if (fd  < 0) {) q. l  _- h% ~0 r4 x# K+ A
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : a! ?9 M0 m# ]7 F
  58.                 return -1;
    + ?5 y0 t' q, P+ U  A& Q
  59.         }6 p3 E% m; T  r$ z2 G% W
  60.         arg.sub_addr_count      = 2;( k. ^/ S" i  W' ?3 f: g* W- W
  61.         arg.data_count          = 0x18;/ U- n: m3 c5 A/ |
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % H- e( ?9 |0 Q% e* @# ]
  63.         arg.e2prom_cmd_data     = buf;
    $ Q0 d5 N7 I# g* _2 ^" P7 k& r
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 t9 q' Z1 Y3 E
  65.         if (ret != 0) {
    5 |* Z0 }7 V; E2 {) Y' |. J, D+ _% h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 X& @9 l( Q/ b% {# k, r
  67.                 return -1;# P* |) H& H6 Y6 N8 O$ X
  68.         }
    2 t/ K& B6 z+ {7 u( ?* {4 e- C
  69. 3 u7 q3 y( y+ Y
  70.         return 0;4 q4 Y! l( a& Q
  71. }
    ) N3 _; o, P' D3 K( I4 E+ m
  72. + J+ P5 p) t! V- m
  73. int main()3 H* i; R  G& }9 {
  74. {# b1 \. I/ Q2 \0 X4 }
  75.         char c;. g( g  f/ C0 H8 y& f7 S: t6 _' A
  76.         int i, macs[6];8 ~4 i- V1 l9 }
  77.         unsigned char mac[6];
    " S+ t1 ~" v' B9 `& G; d
  78.         unsigned char stbid[256];( Y9 q% I- q, {$ h4 w1 a6 ?' b
  79. 9 c( W( d$ O3 F" y, o4 ]3 ~
  80.         if (readparam(mac, stbid) < 0)
    ) Z1 P- W' J+ ^! U( m, G/ B7 l1 |& c
  81.                 return 1;
    * U7 Q  e; z+ S/ Z) Q/ l& l* u! q4 G
  82. 1 F& G+ T9 y! w4 Q3 x9 o
  83.         printf("Current parameters: \n");: d  |" o8 v% T$ I+ _3 x/ s, [, A: D% K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  g! j1 z% Y# X! n8 P2 |/ O/ |  C
  85.         printf("  STBID: %s\n", stbid);3 o+ n2 b# `& a4 ~+ u- e% Z3 E
  86.         ' j4 ~- f* R9 L9 z, b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    & K4 U' U& E# M2 K" H, y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    2 t# T6 q9 U4 q( g2 P& Z
  89.                 printf("Input MAC error\n");
    / R; c+ C8 d- _. ~: R' c8 E1 q. |
  90.                 return 1;3 r+ u2 Q( n" Z7 ^) d& D8 m
  91.         }
    5 `6 R& T! |% \4 L/ W. R( |0 v. r# _
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    8 _; ~4 F5 \# X
  93.         printf("\nPlease input new STBID: ");
    , J, V9 O' p! X; y7 M5 p6 e4 N+ d/ x
  94.         scanf("%s", stbid);
    4 E% ]2 C7 i( e' q2 Y
  95.         if (strlen(stbid) != 18) {3 L7 H, B) `( v: U& @
  96.                 printf("Invalid stbid\n");0 [0 s- T( p- D8 g2 a, Q3 W
  97.                 return 1;, w+ u% j: K8 |$ U! f
  98.         }( Z3 R/ u  D3 l  H
  99.         printf("\nNew parameters: \n");: k$ t/ W# y9 M- F! V, D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 Y! D0 D! N+ T' A2 N
  101.         printf("  STBID: %s\n", stbid);
    0 i) ^8 |6 ~0 R  {- o7 z& h

  102. ; X1 f  W# i  c+ r5 Q# k$ I. h) f
  103.         printf("\nDo you want to change paramemters? (y/N) ");' h& R8 ]! C6 `( O* D: e5 P( W  y- ^
  104.         for (;;) {% F, m$ `! R7 B3 m+ E% o
  105.                 c = getchar();
    / N* v! `" ]  k: w& J
  106.                 if (c == 'y' || c == 'Y')% B+ w% {  Z7 u
  107.                         break;, o# V; W0 O5 {' ]
  108.                 if (c == 'n' || c == 'N') {% D. m" ^; Y! @/ ?- U, S9 [2 T
  109.                         printf("\nAborted.\n");8 T9 Y2 x* e  F8 {/ i
  110.                         return 1;  I0 {8 A( d* j, c# k' U' x
  111.                 }/ M: O7 ?1 A. {+ z
  112.         }
    # E3 ]: G* c8 M1 Q( X
  113.         if (writeparam(mac, stbid) == 0)
    " [7 Z# ]6 I3 {# i: K5 K, U
  114.                 printf("Parameters changed.\n");' f% L" d) `; H8 i9 a
  115. 8 N& t/ T6 F$ U0 @, N" T3 Y8 F
  116.         return 0;
    , Y6 L5 {% i. S
  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
* U  m  q  b. |在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 L+ A1 [& U  q. m. n
你用的编译命令行格式是什么?' ~+ A$ T$ K! x' r2 h+ v
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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