找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15740|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr4 S5 k; s5 r) e/ g- ]* V$ y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* M1 b' C! e1 \  o
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' L' T# C$ t, B3 m; I# A$ P; w
usage: himr <address> <value>. sample: himr 0x80040000 0x0
# M6 @6 u' J% c- q, M% X2 f9 p9 _' _6 J) y: o# U! a% L6 V
& W6 h8 X) d5 m4 I" ]
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?8 v. L, ~7 o1 c- H
1 `6 v8 i1 k5 C
补充内容 (2012-3-8 09:42):
! K! R3 H9 O0 x# o6 Ohttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 K; ~+ m8 U9 L这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
& O+ G+ a$ P; U1 a0 j% v
$ D/ ?. {3 v* r  ihimr <address> <value>. sample: himr 0x80040000 0x0
, e9 ?2 E% ^$ m% [# B" Q' J
) ]7 J" ?  d0 N' g7 I例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 A8 ~9 d' D& g. N9 o3 }, Qhimr 0x80040000 0x000 H* X  Q9 U( v- }  e3 Y
himr 0x80040001 0x118 X! j8 N1 O) w: ^* }
himr 0x80040002 0x22: v2 w8 z8 O$ A
himr 0x80040003 0x33
! T' i, z" r2 D5 V8 B* }9 L9 ghimr 0x80040004 0x44
5 \$ y4 v! j: k/ m- chimr 0x80040005 0x55' z; e$ n* ]# q' o8 i( j1 W& A/ Y

" K6 E# k  [$ U: u& ^4 g& rSN也是类似。1 Y. H- I# W( w- }' Y$ m8 ]
! J/ V* Y7 s+ |9 w3 J
现在主要是,谁告诉我们MAC和SN的地址?
) U' n$ x7 `2 H' u( `' \, _$ r+ f
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 u* T: q4 }6 }* H4 t% I& \/ {一直想找到运程修改MAC和SN的办法,苦于无解啊
5 Q# V* b. F* f: U
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
* U6 U0 A$ }" t$ F+ Q. P
- d; z! [" L% B$ e" ~( B) P修改的代码早有了。到今天不会编译。0 ?/ @& Q5 p. v4 F$ j5 Q- }
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>3 d" y- _* v; C, k0 k+ b( l4 U/ x
  2. #include <malloc.h>
    7 I" K+ E. g% j2 V% S/ ^
  3. #include <sys/types.h>
    ! a; I4 \; N1 O+ Y7 v/ V9 Z
  4. #include <sys/stat.h>+ D/ I2 V: I0 ^" ~  A6 T
  5. #include <sys/ioctl.h>$ S0 }  F8 R) a$ B; w% e! ?
  6. #include <stdio.h>6 P; o9 J6 g1 C
  7. #include <string.h># d8 ]& ]3 D4 k  x8 W

  8. 7 Q' X/ s0 U6 s9 U6 Y& G
  9. typedef struct {6 g  `$ g; K. t% B8 q* b
  10.         unsigned int        e2prom_cmd_sub_addr;
    $ p) B* ]$ F5 w6 ~% o9 K
  11.         unsigned int        sub_addr_count;
    . x" B3 [$ R1 k1 D+ g; t  D7 `& S6 L
  12.         unsigned char*        e2prom_cmd_data;, J. b3 x) o$ [1 u' K2 G
  13.         unsigned int        data_count;
    / L  L( d8 L2 N" }) _' ]
  14. } e2prom_s_cmd;
      G( ]3 g& o+ G6 D. o6 d' `6 {: _

  15. + t3 p/ S1 j% u5 }( w
  16. #define E2PROM_CMD_READ 1: D8 y7 P( G0 s1 d4 p9 g
  17. #define E2PROM_CMD_WRITE 27 j1 ?, g4 S; _! U+ Q% ^; J+ |/ E
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", F+ |9 v3 ]; W
  19. # W: c  C; T/ o- {, W1 ~3 |- N7 |
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- W& n! ?+ P5 J: r  L" t& G+ U4 P
  21. {
    ; l$ K  n* X1 K: E2 u
  22.         int fd, ret;
    3 L/ s2 n/ s( r" N
  23.         e2prom_s_cmd arg;5 G5 `, ]4 Q( O  {) m. a& e* O% A
  24.         unsigned char buf[0x18];
    - v* R  X* W( ]8 y4 r& [$ A

  25. ( l$ }1 x/ O, d; s2 q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);% D6 H+ J/ j; b5 _& b1 Z6 s
  27.         if (fd  < 0) {
    7 Q! E, j  P% B  }' E% I
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 [% a' g2 P3 ?* M8 \. A7 r: e
  29.                 return -1;
    * ?8 W6 H2 [$ J+ f- A
  30.         }
    ! f3 k0 x$ a9 V; L' P0 V) u
  31.         arg.sub_addr_count      = 2;
    : J( ]- C* C4 B# K6 r: ^8 q
  32.         arg.data_count          = 0x18;
    * w( J& U( O2 K$ }1 z
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 C& W; }4 ~2 w3 l, m0 B
  34.         arg.e2prom_cmd_data     = buf;1 C$ i, d" r: L1 w( T8 _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, G+ ^. i$ ^* Y; E* e' d
  36.         if (ret != 0) {
    / P# o, o1 q/ k" l
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - L, W5 A( Q& B4 p! h
  38.                 return -1;( ]& v; X, k' b; u% Q. e
  39.         }
    : ]: c* W. p% K5 _/ M5 \! t
  40.         memcpy(mac, buf, 6);
    + I, n' l5 f0 |( B
  41.         memcpy(stbid, &buf[6], 18);
    5 [1 O, \! ]6 s
  42.         stbid[18] = '\0';- f- y: ~1 v0 j* x! s0 t/ s* v

  43. - ~6 D+ R" l$ L; y/ A7 }% H
  44.         return 0;
    6 z3 Z% J) e+ c/ G
  45. }
    9 U4 e/ H: [' O: W9 d# G
  46. 5 e( b: O* Q7 a+ `4 E* F+ S
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    5 g# E6 t. V3 T8 Q) h
  48. {" S3 o% S2 J, K
  49.         int fd, ret;
    9 ^9 ]* S+ y! i
  50.         e2prom_s_cmd arg;
    . N* N" e8 G" _. |7 `# z4 K( V: C% H
  51.         unsigned char buf[0x18];% U) l# k. r+ Z" b6 ]$ a
  52. 7 W/ o; ]' m7 n- Y* K
  53.         memcpy(buf, mac, 6);: m5 g* _7 @* u/ L( @; o' d, r
  54.         memcpy(&buf[6], stbid, 18);
    1 g8 ]7 Z4 Z% ^$ U* ]) h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);) X' N( v, e( f, C
  56.         if (fd  < 0) {4 Y* G/ u6 B5 X, c: \) C2 z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' \% p: R  p( F$ n& A
  58.                 return -1;" `+ m3 S: [9 o2 `* x
  59.         }
    5 w& f6 q) f, y: Z" S# _
  60.         arg.sub_addr_count      = 2;/ k1 e5 O1 P$ a# {0 z3 z
  61.         arg.data_count          = 0x18;
    & [+ o. m$ c8 o% p" j& d3 V
  62.         arg.e2prom_cmd_sub_addr = 0x290;' \+ \: H4 O2 O. Z0 q) S* ]  G# |% g9 ~
  63.         arg.e2prom_cmd_data     = buf;
    3 [/ [. z# Y: A0 E
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 w( n5 ~3 r# b4 e- n, z
  65.         if (ret != 0) {
    # M% l+ Z3 [6 W  p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    7 N/ g% d. l/ y. M  e
  67.                 return -1;( l4 O* b' _0 w1 z3 e
  68.         }
    $ p, T7 C# g$ g/ t1 K6 ^, {

  69. 6 }. Q) ], _! i6 g
  70.         return 0;- }+ W, g8 I0 \. h2 b, W' }
  71. }8 F6 p, g7 \. X" E
  72. ) J! f% c& T: c5 D: k% w- f4 \
  73. int main()
    $ J6 I- n: H* z1 j3 W2 `' u) Q
  74. {$ I+ R* s( K* Z" p7 V" h4 D  F
  75.         char c;6 [* j6 A8 @( ?2 k) X0 c# N5 |7 I8 a
  76.         int i, macs[6];; i: M9 E. R: z9 T3 V$ c
  77.         unsigned char mac[6];
    ' i6 r; ~, ?4 V- k$ m
  78.         unsigned char stbid[256];% e3 O, j/ P, a6 J; q/ ?
  79. $ Z4 ~3 [" Z8 N5 I
  80.         if (readparam(mac, stbid) < 0)
    ! x6 X- A& X( h  ^; }. V
  81.                 return 1;
    2 h; |8 i# L2 ?  u& F

  82. - F- C% |  |- Z. Y' B$ L+ \
  83.         printf("Current parameters: \n");
    : m3 w: _- G' B' G) I! z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ U* t) E: ?4 G8 H, Q1 G
  85.         printf("  STBID: %s\n", stbid);; D! z% V9 I. W0 A1 Z  B
  86.        
    3 ]6 F2 P. }+ y" _; E7 n4 L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  Z9 `7 e* g% U
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 m& R4 x+ Y9 ?. U6 `
  89.                 printf("Input MAC error\n");: W. {* H7 C9 ~6 z' k' e( d
  90.                 return 1;3 p; I4 I% b% P2 X5 y0 s
  91.         }
    8 z0 l2 l9 s8 j- m$ r" Z6 z; ~* Q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' _7 W) J' _- ]1 e& z
  93.         printf("\nPlease input new STBID: ");
    1 K4 D( K5 U8 I% Z# x  d5 P
  94.         scanf("%s", stbid);
    0 {8 F3 O% R4 V4 @
  95.         if (strlen(stbid) != 18) {* e8 k0 ]5 Y, N6 J! m/ f0 @
  96.                 printf("Invalid stbid\n");
    ' S$ i: Z* J3 s" t8 `- J
  97.                 return 1;
    # |+ c% f1 D# S0 r, O, J
  98.         }
    2 W; d# S* f0 A+ ^1 T
  99.         printf("\nNew parameters: \n");; `: P+ y2 Q! |4 ?8 b' B3 [: Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 t' ]& c1 |+ f- P
  101.         printf("  STBID: %s\n", stbid);
    9 y& C0 e6 Z- P
  102. 1 I. M( {' A, Y) a+ o3 w- P: u
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; i2 M8 {) ]4 R' T
  104.         for (;;) {0 e8 o; y; g7 C: w7 q4 V6 A! m
  105.                 c = getchar();
    9 I0 k/ P. M- o" F# K6 H4 G( Y
  106.                 if (c == 'y' || c == 'Y'). W  F/ `; |. M& X/ d& ?
  107.                         break;6 K4 \# `. F8 H2 J2 j
  108.                 if (c == 'n' || c == 'N') {8 V# {, p& f9 n8 J+ ?
  109.                         printf("\nAborted.\n");
    3 l" z; N9 Y; R) n% G% J9 U
  110.                         return 1;
    " m% G( n: {6 t& q( D8 X3 ^
  111.                 }  N; Q4 S; e5 w
  112.         }' b5 F+ E) O; _  y, C/ K
  113.         if (writeparam(mac, stbid) == 0)
    ; k: p, b" t- a2 _: \
  114.                 printf("Parameters changed.\n");0 `. o4 e: H- `
  115. 4 c1 d% H3 r& b3 c# q
  116.         return 0;4 G2 A3 ?! @- R# N7 x0 y
  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
/ _& m" S4 c: I) N7 h4 I$ t在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& D& j: ^7 {0 f你用的编译命令行格式是什么?8 A# D# L' t7 D4 v& C  ]
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-7 20:43 , Processed in 0.025838 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表