查看: 17263|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 ]$ T2 a# I" P: M, d
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 O7 ^  J3 c$ G& q% u. ^8 y7 `- k8 C3 L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:3 ~  n" g4 @$ A1 [3 T5 C" B( l
usage: himr <address> <value>. sample: himr 0x80040000 0x0
. w9 c5 `$ P' R1 D' t! O1 r0 ]/ B, V8 C& P# \' _6 E3 U4 e

2 p; ?' ]' y, C1 Z6 i不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
0 |1 o. M) D. W0 z, ~' i
3 Y5 Q+ F  Z6 C$ n4 i0 Z; C1 Y+ M补充内容 (2012-3-8 09:42):
1 h; A' x1 X- W5 }& E8 Qhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! `0 Y( @' J- y5 a4 C# l, d
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。1 F2 j* q8 ~8 E6 L
+ A1 t; b8 M* ~* Z$ [' @
himr <address> <value>. sample: himr 0x80040000 0x0. i  t9 ~) p4 L

! f! S, b9 B; f& u/ X例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; {* A: I. N3 T( ?0 l- ]- b3 @9 Mhimr 0x80040000 0x00) ~# k1 i  |( b% k: Q0 f; j% g
himr 0x80040001 0x11
* s: ?0 h6 N, J* mhimr 0x80040002 0x228 ^1 [5 A$ T" ]# O  L
himr 0x80040003 0x33: V4 }3 o  v- W3 g! u! l2 `
himr 0x80040004 0x44* R9 f* V4 X) t4 ^& k
himr 0x80040005 0x55
1 I; k* v, w. Y
0 F  T' y+ |# G( |/ nSN也是类似。& h  G- n* r& z9 B
' @* a' m/ O6 Q$ k8 Z0 F+ ?6 |
现在主要是,谁告诉我们MAC和SN的地址?
* `. a; ?( g+ D
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 m+ O  g. u8 l: Y' \一直想找到运程修改MAC和SN的办法,苦于无解啊

( I& ]# }' P% |* x0 |9 j8 T2 C源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( w/ X* F4 n5 b2 u% @8 ~! O. N) `4 ?6 w! ?1 b! L
修改的代码早有了。到今天不会编译。
5 |- R* L7 `  T' L8 ~& N需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>. ^# F) O- ~3 h! ?  ~& }; Y
  2. #include <malloc.h>5 R- c* W. _/ F* k+ k
  3. #include <sys/types.h>
    * |9 m- D3 c4 X, d& V# u0 G6 \. t9 D2 b
  4. #include <sys/stat.h>, Q% R1 o9 w6 `3 O& S% \7 }$ H* |. R
  5. #include <sys/ioctl.h>, [& }1 b( @' P8 m
  6. #include <stdio.h>
    0 b0 F* ]3 h. L. C/ y- t  e0 S
  7. #include <string.h>
    / `' [5 X$ {2 r& e) \! M- S% h5 t$ k) K

  8. ) I2 }! E+ q; N: h6 A
  9. typedef struct {( m$ d9 E8 u" w  X  c1 J
  10.         unsigned int        e2prom_cmd_sub_addr;% ]% r# Y1 x9 Q' C+ k0 Q' x
  11.         unsigned int        sub_addr_count;
    ! Y% p( m- U6 ?: s5 M! j5 z
  12.         unsigned char*        e2prom_cmd_data;, d( G7 o& F: Z5 b- T
  13.         unsigned int        data_count;# @5 E* @0 m; P7 p
  14. } e2prom_s_cmd;
    ) \; F4 }3 G6 O9 h/ B4 C, k
  15. 9 _- r- k7 [2 f$ i
  16. #define E2PROM_CMD_READ 1/ w% K5 U3 i4 f
  17. #define E2PROM_CMD_WRITE 22 T/ S. I; b7 F- P/ @4 f4 [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; a) W# H' }6 D, ~# t

  19. : o  K8 ~- V& f+ T5 ?
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 t- A- R: o$ T; q# u! h
  21. {
    ! J7 E6 ]# y& N
  22.         int fd, ret;
    : b+ f8 R: ]! h- x& r( f0 }
  23.         e2prom_s_cmd arg;0 Q# ~( E4 @) C6 O' d7 E, t5 k
  24.         unsigned char buf[0x18];
    4 x8 h5 ~& ]9 r. D- q, Y" L8 N6 c

  25. 8 W! Z$ ]4 m! C' }8 I
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : K! @/ g) k. \5 d' T' G/ D& F
  27.         if (fd  < 0) {5 v& {5 D( e5 I* S2 G
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 E( T8 a- `, G( }/ y2 p
  29.                 return -1;. [' L  I, W/ x% ?
  30.         }
    # y/ B8 ]/ @9 p- H& c1 B" |  q$ i
  31.         arg.sub_addr_count      = 2;+ c) h) j9 `& \$ e) |
  32.         arg.data_count          = 0x18;+ ^. o1 [& _; R- C7 X9 t
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 E4 W5 y* z: A9 Q% @  i. D+ g
  34.         arg.e2prom_cmd_data     = buf;6 \0 `: E9 n" @7 q4 ^4 Z) ~+ i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    + m$ @4 |" ~- I* ^. [
  36.         if (ret != 0) {7 t! f" e: c" G  L- I+ O* s% M
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 i( m  n; E  {8 W+ C, h/ g
  38.                 return -1;1 H) a9 ^# e$ C! U" y) e  L* |
  39.         }0 X# o. V# I# b% q; A
  40.         memcpy(mac, buf, 6);  d3 P- l8 ?% ~, U( I( ^; S
  41.         memcpy(stbid, &buf[6], 18);
    9 k2 M; ]4 b) b( [& f, v
  42.         stbid[18] = '\0';: f, x$ b, n8 N6 u

  43. + k0 F) e/ e" A; {. @
  44.         return 0;5 C( s/ y  C3 E7 F
  45. }, H& m. O1 ]& R9 s: B
  46. $ T1 d0 q# E  Q9 s. F! g0 V
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)8 Q& o# c5 e7 b9 i# E) n5 _
  48. {2 x8 A0 `- E1 d& \4 N) e
  49.         int fd, ret;: x) w6 O  u+ R/ p3 V4 l
  50.         e2prom_s_cmd arg;
    ! O2 D# X" H- \0 C
  51.         unsigned char buf[0x18];
    . A; F- l% X5 N. {* k, D

  52. 3 o6 N6 K6 b: O$ m8 u  P
  53.         memcpy(buf, mac, 6);- S! Z4 x/ C, w: X
  54.         memcpy(&buf[6], stbid, 18);
    * [5 r1 p: x) |3 h8 d# G
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 s" t7 M2 n' U) ~/ G
  56.         if (fd  < 0) {7 N! F5 ^- t3 ?1 A+ h5 H  k8 U/ \
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + V. s  R$ [5 g
  58.                 return -1;
    # s* J! Y9 d, I7 F: q3 a" X2 }& {# W
  59.         }, R2 g) N2 Q9 i* @7 [; p( l; h; a
  60.         arg.sub_addr_count      = 2;! W9 v* c( ]7 l* O" x  b, E
  61.         arg.data_count          = 0x18;* r# {' X, X! [" [
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 g, [% z4 ~3 g" \
  63.         arg.e2prom_cmd_data     = buf;
    , f8 a3 n" u; N6 Z" p7 T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);; H0 Y" Y1 a% h
  65.         if (ret != 0) {
    5 {+ q3 |/ }6 ~) O
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * d# h  W9 A- G/ j3 a+ A, f9 H- @
  67.                 return -1;" `. @, l9 Z( j" g# [4 J
  68.         }
    . v( U: S+ T1 _) j) n% p

  69. - a- ~  `0 J' W: Y  E- n5 G
  70.         return 0;
    3 m9 B, x/ o3 H
  71. }: T- p, |- o$ D4 J

  72. * y2 Z1 F8 o/ i- r) r7 c4 |7 q
  73. int main()* W3 L& z9 \3 b6 q! z" v
  74. {
      t5 P& S% T) r4 d* _. l: e
  75.         char c;
    8 ]& W( ?2 Q% |7 M
  76.         int i, macs[6];+ B% I0 O8 M  t+ ~
  77.         unsigned char mac[6];& |) H& e" h) Y8 N* ]
  78.         unsigned char stbid[256];2 N9 G8 O+ D! V# Y1 n: S4 O: c
  79. 2 |( c3 x' Y' X4 }/ l
  80.         if (readparam(mac, stbid) < 0)
    9 `# h3 }, Q  |
  81.                 return 1;
    + I! _: ]1 J* }+ i! e/ u6 g
  82. . _, p8 [! h5 h
  83.         printf("Current parameters: \n");4 T# f. u- o6 k0 n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# G' w4 v6 V; a" [& \6 [
  85.         printf("  STBID: %s\n", stbid);
    ' B' ]4 K  a4 P% B* q' }# B8 f
  86.         . {" j/ r2 a/ w( l2 i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , }2 ~; z$ m2 R2 I  C- k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {& p8 ]- \  e: e. S
  89.                 printf("Input MAC error\n");
    + m5 k' L7 T+ ~; L! s
  90.                 return 1;
    ( \- h# `" k' Y8 f2 W1 I
  91.         }
    , {/ B& H, l2 f  `
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    : d5 \1 F9 N1 @4 T5 M! O( b
  93.         printf("\nPlease input new STBID: ");  ^7 E+ F" _; B5 ?( `/ L
  94.         scanf("%s", stbid);
      Z  \6 c3 M. t
  95.         if (strlen(stbid) != 18) {
    - M  S' @# V/ O0 ]3 R+ _( ~: X' U
  96.                 printf("Invalid stbid\n");
    9 m4 [' P, P$ g0 T' @: G
  97.                 return 1;7 k& {" k& |8 Q, B$ r* Y6 U
  98.         }4 [4 i* x* T6 h3 V! J7 A
  99.         printf("\nNew parameters: \n");
    : r  `# A8 s) d. R8 O
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: f6 B) [6 Y* B0 Z; t
  101.         printf("  STBID: %s\n", stbid);
    ; d+ n2 ~( X; `) c, r; k0 x

  102. 1 O' N9 n( O; e+ v3 r+ ?/ n
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - \  f* D  a) M' Z. [+ I  j
  104.         for (;;) {
    6 I/ L8 q6 K9 D9 ]& E
  105.                 c = getchar();
    ( F5 k& {9 L* k8 Y
  106.                 if (c == 'y' || c == 'Y')$ i8 z* V- b! Q% `: ?8 A
  107.                         break;0 I( {' N! ?3 o
  108.                 if (c == 'n' || c == 'N') {
    9 r! {( u  h( O! T- w' N
  109.                         printf("\nAborted.\n");" ?) G0 \9 H- y
  110.                         return 1;
      ~6 M6 L# e  m  j; K' z  B
  111.                 }( I8 Q( Q8 s' h$ k
  112.         }
    5 Q7 a0 J5 L& h+ }, @: N
  113.         if (writeparam(mac, stbid) == 0)
    . p9 e, G, {6 Q+ Z# {( O6 F8 H
  114.                 printf("Parameters changed.\n");
    9 z5 q2 k3 V8 U7 n, i  c% Y0 h9 ^

  115. 0 _' T4 r3 {1 ]/ N% v
  116.         return 0;
    ) \: x* j  I" 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 ; s; c7 L7 l" \
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
  v; A% R( L" n  c- j; i9 B- I. {& f6 ^
你用的编译命令行格式是什么?
/ @# F- J4 Z  `* [, P' h
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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