查看: 17415|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 g7 Y9 ~) e  y' E& K& X3 l4 {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ L8 c. Y" I" S+ k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( h2 s6 Z  p. ?8 [1 b
usage: himr <address> <value>. sample: himr 0x80040000 0x01 d1 P) b" j5 V& M" V3 s
, v$ ]2 j2 F' u& x
& X8 [1 T: g4 Y, }& T0 n2 w
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' ^6 m% T3 _( D& }1 n9 ~' G

' `, E7 ?/ T/ {, B补充内容 (2012-3-8 09:42):
# ]7 d; g/ O/ |+ r( ~http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% ^; ^7 T/ V# K; j这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
, H% i. K+ |5 u6 q2 K9 U/ m
5 U% x$ k8 p# S" \8 m& Zhimr <address> <value>. sample: himr 0x80040000 0x0% l  r' f2 c* a1 `; f

3 I* w& ^' }2 h, \例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, _" G5 C4 x4 s) \& d' Q8 T6 Z" uhimr 0x80040000 0x007 W+ \) n% l5 e: w+ H0 `. z  I
himr 0x80040001 0x11& w4 l4 I1 V) X: }0 y, R/ F
himr 0x80040002 0x22+ ~) k4 ]" G1 [% Z) O- R
himr 0x80040003 0x338 o8 S7 z+ V8 k* R; i
himr 0x80040004 0x44' x( n3 E5 G: S1 u- B) ~
himr 0x80040005 0x55- p6 O5 V& g- K  R  u9 p

2 Z6 ^" p, {- l4 o5 MSN也是类似。
7 ]. f/ l6 A  {' \
- u# w. E# w# ^6 ^' _, S( V现在主要是,谁告诉我们MAC和SN的地址?
3 H4 w& {1 u6 [. x* Z( f
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 1 H9 Y& N+ Z0 Z  j$ d
一直想找到运程修改MAC和SN的办法,苦于无解啊
6 ]2 M. V# h. Z: M! ~" m
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 , \9 W8 k! M6 u1 J" D/ \; ]
" K  ]8 q. {5 {0 i
修改的代码早有了。到今天不会编译。. o& t; _! u2 {1 l' k# G
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 A" U. O5 j7 P% b0 x5 Y9 R
  2. #include <malloc.h>% n% i+ j8 I. ^, g
  3. #include <sys/types.h>
    0 [2 G: Y0 ]2 z' I  a# A
  4. #include <sys/stat.h>
    4 D. J- [0 w: Z! Q* t) H
  5. #include <sys/ioctl.h>4 q" g( @9 `$ s2 r  ]' W
  6. #include <stdio.h>$ W$ C3 |& r4 j: f7 [
  7. #include <string.h>
    * N4 f( m) G2 B& Q# O; A* g) R
  8. , X5 N/ b0 \3 F5 g- g3 K/ T
  9. typedef struct {
    2 B0 r: [6 G9 F! d4 ~: ^% D
  10.         unsigned int        e2prom_cmd_sub_addr;  s5 J: V, V! q. z
  11.         unsigned int        sub_addr_count;3 l, `0 E# Y* d
  12.         unsigned char*        e2prom_cmd_data;4 h5 l& V4 U8 b  R+ t
  13.         unsigned int        data_count;
    0 ?& `! n- V/ a. _
  14. } e2prom_s_cmd;9 a# Q' O6 ]4 ^) P1 u  {6 T9 [

  15. ) l2 X4 G: U! v6 Q6 C
  16. #define E2PROM_CMD_READ 19 R) G2 P, ^# y' E/ N) B7 d1 C8 @
  17. #define E2PROM_CMD_WRITE 2
      |: X9 b  p& I) I3 g7 K
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    5 j' d  b0 P- u. r% A5 T

  19. 9 C( A$ _# P$ }: o4 r$ A* G2 i$ F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 T3 \9 O! t: N8 B" F, _
  21. {! r7 w* p+ x5 m/ @1 g  Z
  22.         int fd, ret;: p/ s5 j+ h; a3 Y
  23.         e2prom_s_cmd arg;: U% B1 @0 N- J. d
  24.         unsigned char buf[0x18];8 s/ I* ~4 A- J

  25. & {: ]( ^: k! @0 N" r
  26.         fd = open(E2PROM_DEVICE, O_RDWR);; C9 n! w# M: p% E8 Y4 z" R
  27.         if (fd  < 0) {
    ( G- V, y+ I0 m' w& N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( c  \6 K  }! @. U. g/ B5 \1 ^
  29.                 return -1;
    : z. t' X  y# H. f
  30.         }% @3 K! y8 p' z' {' T8 l
  31.         arg.sub_addr_count      = 2;+ [2 }3 k& r/ P) F! {
  32.         arg.data_count          = 0x18;
    ; Q( p- d' k, k5 J+ r  T
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 \  l8 V7 |2 v: J) H) [. |
  34.         arg.e2prom_cmd_data     = buf;* G4 H. \8 V4 u# U
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / b) m, Y. M! r# S  r2 p5 i
  36.         if (ret != 0) {, S7 Y: C* N( l) x6 _
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 |$ l0 o+ x+ O2 C# y- |7 g
  38.                 return -1;
    * n4 x5 ~9 Q% y
  39.         }
    ; w( M) F. _7 {5 K) ]& \% {
  40.         memcpy(mac, buf, 6);
    1 G" I) z0 Q8 E1 }1 z) C  J# ]% j
  41.         memcpy(stbid, &buf[6], 18);
    6 H1 S: g1 V+ r  x+ G
  42.         stbid[18] = '\0';
    ! q* a* O6 b' v) a
  43. + {5 K' e2 w, u/ f9 i
  44.         return 0;% w9 f: S" Q" A" }! N! g
  45. }, Y3 T' s/ H  A. r
  46. 1 ^. V7 o0 G0 E9 N3 T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid), a# e3 D7 ~1 ?9 G
  48. {
    ' i! ^  H* u% I8 e, P3 G
  49.         int fd, ret;
    # j2 ~$ f% ~+ V5 o6 c& h
  50.         e2prom_s_cmd arg;
    : S5 @' u2 _( V# P9 F
  51.         unsigned char buf[0x18];4 {% d2 K# c, {0 D3 y

  52. 3 D! Y# P' W/ l+ _2 V5 {" ~
  53.         memcpy(buf, mac, 6);0 v% b3 g0 f4 W& V+ ]0 [
  54.         memcpy(&buf[6], stbid, 18);4 [/ W) U2 W0 M( [: A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);7 K  ~( q, E  v7 A* z
  56.         if (fd  < 0) {  v: s) g, j! c+ E4 N* q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : s4 l3 D$ z  C/ O
  58.                 return -1;
    $ x: o$ n( z1 b8 g
  59.         }5 r) q6 x% L+ C: s4 o
  60.         arg.sub_addr_count      = 2;
    / V1 ^, p+ v( A: R
  61.         arg.data_count          = 0x18;
    + O" v9 S* B# h+ p" F  q
  62.         arg.e2prom_cmd_sub_addr = 0x290;( Z( t; T# I% i# j' ?5 z3 g
  63.         arg.e2prom_cmd_data     = buf;
    , ~' i  k7 f) ~$ [2 g  y' b) l! V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);3 L* Y9 I  f2 |5 ^" _9 ^
  65.         if (ret != 0) {: f4 n/ S2 ~5 m, t$ E6 r8 w5 z. u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ( o5 R( h- P5 y# u, v( F" W+ u0 @4 h
  67.                 return -1;& s7 w, \% h0 h( q! U0 Z  b
  68.         }
    1 W; e2 |, {$ [5 Z( d

  69. & t5 V9 n! o3 T. U
  70.         return 0;
    , |: B! {7 V. y7 p5 i1 f8 Q  r
  71. }" t) X/ Y, T0 b6 }: q6 ~
  72. . H* P( S; v  U& |
  73. int main()/ y$ ^1 z7 q3 ?7 t/ K
  74. {
    ; X. m! X1 _0 y0 d4 A
  75.         char c;
    $ V& C! H7 [! V, ]6 P2 ]3 J  s
  76.         int i, macs[6];- z7 Q  e+ }) U/ b$ x) j, p
  77.         unsigned char mac[6];. I1 b. K5 ?, z, I1 y" P
  78.         unsigned char stbid[256];# r- I5 t; o% ^
  79. 8 G7 d0 U5 g- |7 A$ @; A- J% V7 M
  80.         if (readparam(mac, stbid) < 0)
    # D, P6 n8 Z2 W0 ^' F. [
  81.                 return 1;/ ~3 G6 e& q! w( }! h! |
  82. 7 m! p: z; n1 h9 m- Z( X
  83.         printf("Current parameters: \n");
    5 G( z8 a& b/ C% R! @: K6 B3 w
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 D$ I  `2 ^. T. F: r0 Y# G+ g
  85.         printf("  STBID: %s\n", stbid);6 W" V1 U% H' c, \' P
  86.         : W4 r% _9 A& g8 v
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ) A: S3 Q( ^& T0 g9 f( ~9 N  c4 R
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. j4 e+ ?! X9 w
  89.                 printf("Input MAC error\n");3 A5 z, ?6 g& A6 Y/ v' v! T
  90.                 return 1;
    6 X0 O5 s  M; M  t- @& s% s+ e
  91.         }
    * r& D9 Z; p3 {! J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    . n8 s% C2 g) J. Q' k  x
  93.         printf("\nPlease input new STBID: ");+ g0 j5 S* e7 Y$ z. M. t
  94.         scanf("%s", stbid);, \/ e( H( X, o+ G6 y4 l0 z: g% _
  95.         if (strlen(stbid) != 18) {
    . ]9 j. Y4 x7 u4 A5 X  O
  96.                 printf("Invalid stbid\n");: m& E( U/ ^' ^  I! |9 q
  97.                 return 1;& I8 T- L6 B/ z, D* c
  98.         }
      s$ T1 ^; |+ B, v$ y; }
  99.         printf("\nNew parameters: \n");
    ) O" m- h% e3 |4 u" e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 F$ N9 c' o' {7 _) s. G$ z
  101.         printf("  STBID: %s\n", stbid);
    . A! ^; X  J, }( P6 ~

  102. ' ^5 }: \1 ~  o5 c3 S& X& j# ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    : T8 G, p( V8 X! k9 b
  104.         for (;;) {
    # f* b( I  i7 H$ ~; l
  105.                 c = getchar();, E* t' M; r6 p6 m0 v6 ?  h& Z
  106.                 if (c == 'y' || c == 'Y')
    ; W8 M  p. J% s2 J0 v1 W
  107.                         break;
    9 O  H& L! A/ Y7 Y
  108.                 if (c == 'n' || c == 'N') {: ]: X! |" H, X
  109.                         printf("\nAborted.\n");1 F( y* u1 g6 z9 ~5 J1 E& M: E
  110.                         return 1;
    ' V, r# B0 \1 _" b1 ]% O3 T. ]
  111.                 }  j$ F$ B4 m' [/ i& A6 T) @
  112.         }# C0 p1 w1 H# W1 v
  113.         if (writeparam(mac, stbid) == 0) - J/ c9 {- @5 h/ z% s; [% x
  114.                 printf("Parameters changed.\n");
    " P4 l3 R. W: f+ T* n* L

  115. : D" q: M" @, t1 n* m1 [' |
  116.         return 0;. B+ T  [; @* Z# 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 , E4 K5 b( U- g& n
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
2 @! g( B6 M$ j: x
你用的编译命令行格式是什么?
& k- Q8 |/ e3 b5 y0 j5 [0 X5 Q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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