找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15130|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" K, ]5 }" X; L- l4 [# I+ L1 A  v
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig! L4 U. n) B0 R& ]5 \0 P  _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 S$ s: _( z! Y
usage: himr <address> <value>. sample: himr 0x80040000 0x04 o9 y" \( I9 E8 o
1 Q" I! }* \5 f7 Q7 |" B
' m9 U; X7 ?2 j) w9 _+ j. @
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
! n! S3 F; `$ w8 U% l
; C6 h% J% c# c9 |8 ~7 |# v# p6 ~补充内容 (2012-3-8 09:42):
1 m6 b4 O: a8 }6 b" jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: I  [; O$ A+ f! x( Y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
, Q: z, Q! t6 v& ~" P9 R6 k0 m6 K9 Z6 P/ u( T
himr <address> <value>. sample: himr 0x80040000 0x0
8 v; l0 d% K9 ~2 I
& L# L& z8 C, @" h- s例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
( F6 t1 X0 K1 M6 Nhimr 0x80040000 0x00
$ s* K6 g0 F) o- F  lhimr 0x80040001 0x11
0 _7 j' w  E4 ~& i5 y: m4 o7 T! dhimr 0x80040002 0x22
. M: ?% O( h3 a# T! d  _5 |himr 0x80040003 0x339 Q5 L4 c4 z) J4 j  L
himr 0x80040004 0x44
: v) }+ w( a1 E) s% e( Phimr 0x80040005 0x55
  r* j' l1 ^3 V6 ]* R8 b
* D/ ?' `/ A: R, K6 RSN也是类似。
6 j* O4 W. a* m0 \5 m
0 @; o9 a: @! G- ^( G1 f  N现在主要是,谁告诉我们MAC和SN的地址?
  q- h6 @# J" B6 k1 r. H& T, _  K
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ! }* c# ^3 x: x- j9 S* Q" X+ X
一直想找到运程修改MAC和SN的办法,苦于无解啊

, J. \  S- ?8 {5 @) o源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / J. _* ^  O# ~9 |6 {) b" I

3 g) t. K9 ^6 H+ A+ S) H, x修改的代码早有了。到今天不会编译。# t. }4 _0 J  ?+ ], C# Y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" {# j  N2 D5 h6 _0 O) k
  2. #include <malloc.h>
    , N! N' r# H: W4 T" \
  3. #include <sys/types.h>5 R6 L( p: A' m
  4. #include <sys/stat.h>3 K5 e' w, i3 R2 u
  5. #include <sys/ioctl.h>  `/ j! e5 c0 }* _6 S- g
  6. #include <stdio.h>
    6 u5 ~, w5 `. g+ s" k: T
  7. #include <string.h>' L1 I. M! J6 d: v/ Y
  8. ' x% J( g/ W: i( n: E$ s
  9. typedef struct {
    6 A7 ~9 Y. \8 a: N& T4 v) T
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 h3 a1 |, o" [' p, [* P
  11.         unsigned int        sub_addr_count;7 H4 `4 ~+ j- G3 w
  12.         unsigned char*        e2prom_cmd_data;
    ; r7 W) B6 d/ }% |$ Z2 G
  13.         unsigned int        data_count;  \% r7 q9 ~- {
  14. } e2prom_s_cmd;
    & X, D# m. |  B% T

  15. / N/ e$ V" C' M$ V! P# J! P: y4 q/ \
  16. #define E2PROM_CMD_READ 1
    * k: {, q1 r' R- n& o, Y# l
  17. #define E2PROM_CMD_WRITE 2( ]5 d6 u+ _% y6 v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / ^2 B* H/ T  }9 Q+ Y& q

  19. 9 K8 ?9 ~3 i5 d- P# v. G
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 X7 l: Y- }9 G2 {
  21. {
    ' c: n% r8 u" D2 z
  22.         int fd, ret;
    ( o' l# Q( _2 _
  23.         e2prom_s_cmd arg;
    , w) e# V. X) W( Y
  24.         unsigned char buf[0x18];
    1 z% K: p, z" L: j5 e
  25. / ~! x6 n3 T. E0 t
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 s# f) |+ ^+ B2 \: V
  27.         if (fd  < 0) {
    9 G8 s) H  a6 s" Q: P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( M1 B3 H& Z0 a; P) v% Q4 \
  29.                 return -1;
    / @8 P* l9 V/ [& }; H
  30.         }) g) I: o- X. G# D
  31.         arg.sub_addr_count      = 2;" T# z, C" Z" |# R" h$ l
  32.         arg.data_count          = 0x18;2 x3 C( ?2 W0 ?2 _, A! Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;, V7 w/ o3 s7 M2 S  c
  34.         arg.e2prom_cmd_data     = buf;! e) N+ h- m, B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( L9 x; g5 {' k& S+ @; C1 q
  36.         if (ret != 0) {- d  Z) g  F& Q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& ]. r) V9 ?0 r, \
  38.                 return -1;
    , r6 x' y% f8 _0 M( I9 {+ O
  39.         }& ^/ h# H9 G$ q2 ^* q9 o) v
  40.         memcpy(mac, buf, 6);
    ( y" ^) b: g! `2 O) u5 v
  41.         memcpy(stbid, &buf[6], 18);' X# B( Y0 l$ ]6 i9 v  _- i
  42.         stbid[18] = '\0';
    " f& f4 z* u0 s- b% i, L6 y
  43. , V- O" e: m* n5 q8 o1 U; J" ~  O) Q
  44.         return 0;
    " @. e0 s: R+ ?: n8 j
  45. }
    / |# e4 H! g7 w# Z! y- X

  46. - {$ L4 A6 ~( x$ S( ^
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)) y) ]( C% ~: @# [; F* j/ B
  48. {
    1 E% ?1 h7 \- Y' [, C2 z& d4 G
  49.         int fd, ret;
    5 V! Y2 H2 E( G6 `1 s( J
  50.         e2prom_s_cmd arg;
    : X, m  t0 Q% j2 l  R" c7 ~* F
  51.         unsigned char buf[0x18];
    ' j0 P0 s0 _4 q& X
  52. 8 B7 G6 F1 S! E; D
  53.         memcpy(buf, mac, 6);: B. s5 a6 b0 U, d; @5 r5 m, m* Q
  54.         memcpy(&buf[6], stbid, 18);
    - k+ S. G- S! t1 f  W7 r
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 c9 x+ y7 v$ r0 [7 L% f
  56.         if (fd  < 0) {
    # z7 d4 y, s9 Q. w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 X& c2 q& @2 s9 l
  58.                 return -1;
    " j5 }; N# P) H0 J4 w4 t- C/ S
  59.         }( v0 n" Z" s6 {
  60.         arg.sub_addr_count      = 2;9 B6 I. c; K6 ~8 Z$ C. I6 N+ s& u
  61.         arg.data_count          = 0x18;
    ( @4 [: r9 ^; ~8 Y5 b' Y2 l, k
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 q  Z3 h% m( I7 b* M7 [: N
  63.         arg.e2prom_cmd_data     = buf;
    - ~$ ?# V9 f: Y3 A3 U6 D8 z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ {$ o+ Y" O/ m# j. o! C
  65.         if (ret != 0) {
    7 v( l. ]- L# n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);7 \8 ]- v" J5 V. e0 R
  67.                 return -1;
    ; A! _8 g* b$ Y% k- p
  68.         }# r1 F) Z" t5 R) E% X

  69. 6 c, U5 z, r. h/ `) K! j/ I
  70.         return 0;
    : U9 z7 d$ z9 c3 t( w9 H
  71. }9 o# `. _3 Z1 v7 @! Z
  72. . F+ X9 T9 s& I& e" D. x/ @& x
  73. int main(): Z9 t/ I% U, F
  74. {! O+ ^% [  @# q, J. `2 b3 W
  75.         char c;" i6 t- B7 i1 r; R9 Q6 o8 [: `% S
  76.         int i, macs[6];! E0 e) Q  {' x4 M8 z% H5 s+ B
  77.         unsigned char mac[6];# a# e6 N# y+ A0 `7 v3 J
  78.         unsigned char stbid[256];3 q1 F( `2 l/ _& W* E/ [) Z
  79. ! A, h" m7 Y, m
  80.         if (readparam(mac, stbid) < 0)# q. B0 [# \5 ]4 k: w  S3 |+ D
  81.                 return 1;
    2 A& m. z5 r# y9 Q

  82. ; j' N1 P! Y& \) M1 g  g' m* |; E
  83.         printf("Current parameters: \n");
    4 Z" j0 y% h( f4 n3 G6 f, p
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, c& x2 J9 ^! y+ \; U6 A8 @8 i+ U: G
  85.         printf("  STBID: %s\n", stbid);
    # X% b9 n+ f' E" A! ^+ o
  86.         ) b! f, x6 ?' X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / X$ [8 V' }8 o9 v. h
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ' |  `$ N3 o! k- |
  89.                 printf("Input MAC error\n");
    - b% N. V$ Y6 c
  90.                 return 1;
    3 A0 z' q" a0 `; N$ q# u, E# C
  91.         }% Z' K5 E) F5 B: ^1 L' i+ [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 ]6 o" @* g3 J
  93.         printf("\nPlease input new STBID: ");: X( O7 Y6 b' h! h
  94.         scanf("%s", stbid);% X+ h. O4 w4 d5 ?# `
  95.         if (strlen(stbid) != 18) {9 Q* v3 M; x( N. s  g# r9 A$ V- X
  96.                 printf("Invalid stbid\n");- G# R/ O9 n' r- m; x( a4 S
  97.                 return 1;
    1 ~0 w$ l" r- S" W% N! u' Q
  98.         }& g( W, X. T$ K# D
  99.         printf("\nNew parameters: \n");
    5 x8 L, y! T/ P  a
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; ]1 E9 g, I. ]5 F+ w2 S$ i" T) w) }
  101.         printf("  STBID: %s\n", stbid);
    # N# `7 V0 r- e7 K' E+ C# v* D

  102. * _# l9 C+ l  d$ l! u+ Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");( ~  L; U" ~2 O; {6 [/ j! d2 I1 ^; |
  104.         for (;;) {9 X( W( T: f' G
  105.                 c = getchar();
    + K+ ]3 _$ g- j) s4 ~
  106.                 if (c == 'y' || c == 'Y')( m/ A6 T% r. z5 z
  107.                         break;
    4 w5 }) l- p( m1 H3 w$ f
  108.                 if (c == 'n' || c == 'N') {% [) D$ b5 {! j+ _
  109.                         printf("\nAborted.\n");8 q1 ^/ D& d' e' f, n  ^
  110.                         return 1;. Q- `! W, U/ N
  111.                 }
      @! H, I5 R, H
  112.         }
    7 k- I; Y! |* r( T) Z6 ?
  113.         if (writeparam(mac, stbid) == 0)
    % q; z3 ^9 k! V
  114.                 printf("Parameters changed.\n");
    & I+ ]5 W  d8 T$ {: S0 L
  115. & p: F! f  q; t  y0 K4 \
  116.         return 0;
    5 k: l! [1 i& k; ~3 G: l  E
  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
8 h& X5 f9 b8 _7 L6 g在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
2 o! J. H5 ^" g* H
你用的编译命令行格式是什么?
# X1 A7 i" O% m
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 20:23 , Processed in 0.025158 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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