查看: 17461|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
      z1 A  X5 U$ V+ W7 C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . E3 Z4 n( G* c7 I6 W5 \# a
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:! h- C9 ~6 L( v; S8 F+ |6 D0 _
usage: himr <address> <value>. sample: himr 0x80040000 0x0
6 n3 [5 R# M, m) n! x2 e6 m+ T
: D6 `5 M; E, \; D  {
- @- Y  w5 t' }; W1 }, ~3 d不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 @3 y7 I' `; |: r5 c
5 B: U# g; }* W: V2 @  j
补充内容 (2012-3-8 09:42):
( ]4 X  F, p$ m( f2 i* t1 dhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" ~' x" M. ?# w这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
# R: j7 w, D5 s4 M' o/ ]% I' z! d
himr <address> <value>. sample: himr 0x80040000 0x09 \4 c# V9 v& s4 X. d9 o

, d- u# B, d" `, ?8 L+ j4 m例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 K* h  \% S. O, `2 [+ c& h
himr 0x80040000 0x007 H5 `8 C" U: F) M% y2 f6 N# t! q
himr 0x80040001 0x118 ~8 }0 ^. B/ M6 O3 l2 u7 x
himr 0x80040002 0x220 J1 C; O0 |' @
himr 0x80040003 0x333 r: x4 q# I3 a
himr 0x80040004 0x44
4 Y- L& W' y" P1 ^- n. Q" Y7 Y4 Mhimr 0x80040005 0x557 X$ A4 F; {! z0 m
: H; U  A6 p. E* T
SN也是类似。6 m! q- x4 q# ^7 V. ?5 \

  p# `1 P) B2 T  o6 R4 X现在主要是,谁告诉我们MAC和SN的地址?
( T8 e6 N) x6 s
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
: p- |8 j) D0 J' R+ q9 ^5 C$ Q- K一直想找到运程修改MAC和SN的办法,苦于无解啊

6 w1 S" @+ y$ z+ v$ p# d9 Q# ?5 \源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * H* U) g) U/ }: \* W2 i

5 y5 k: k# u2 x7 z  @$ e" \修改的代码早有了。到今天不会编译。; a3 ?' ?% |: E  U
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) M4 C! i- q7 q" u. I! v
  2. #include <malloc.h>% e7 k  m% K7 l
  3. #include <sys/types.h>$ G8 `/ h# j5 z0 k
  4. #include <sys/stat.h>. s- i+ X4 `/ S% b, H( k2 `8 B' p: l; x
  5. #include <sys/ioctl.h>* R( ~' H9 i& ?7 u; o
  6. #include <stdio.h>( A. e- J/ c2 D
  7. #include <string.h>$ S1 h5 u( [+ K, K6 U! X
  8.   `2 }+ z* G! g
  9. typedef struct {
    - u8 s- n+ h( l$ S1 W
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) j) S* u+ E' B
  11.         unsigned int        sub_addr_count;
    ' x- }+ ^; Y2 Q2 [
  12.         unsigned char*        e2prom_cmd_data;% _5 t- s3 \. R2 L6 E3 r
  13.         unsigned int        data_count;7 L4 y% p3 Z0 X- I% _
  14. } e2prom_s_cmd;7 U/ ]/ k$ C# t3 S0 H
  15. 6 h8 T& w, A- B4 Z; ?
  16. #define E2PROM_CMD_READ 1
    $ J8 l7 C! v" Y! b# ?
  17. #define E2PROM_CMD_WRITE 2
    * N" S1 X, ^2 D7 T4 z' K
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"9 P& d; y& \- y/ T
  19. - X5 R0 Q7 l) O- l0 U" i4 h" D- ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ; E( n* n4 q2 R7 A% I0 Y
  21. {
    # e* Y7 p, J  G8 z
  22.         int fd, ret;9 ?2 W9 X) ]9 y# @
  23.         e2prom_s_cmd arg;
    6 f2 L" i! x1 ^
  24.         unsigned char buf[0x18];
    - a  i. ?, ]/ q6 E5 j
  25. / |; i0 h& p) t; T5 L0 R7 s+ B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    & t* n5 D8 X2 N! O+ Q
  27.         if (fd  < 0) {
    * P7 m5 ^4 }* k
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 G) X8 X/ f8 q/ e3 X$ M  a' |
  29.                 return -1;
    3 U4 c1 B2 d, P! A( S- E4 Y6 V7 b6 L
  30.         }
    : _: [; t) }4 H" m; m* l! Y. I4 J
  31.         arg.sub_addr_count      = 2;( t7 H8 ]/ i" W9 {' e; _2 }0 P
  32.         arg.data_count          = 0x18;: s  F3 c' p$ r5 n% d
  33.         arg.e2prom_cmd_sub_addr = 0x290;! j0 L* d, o1 T7 y
  34.         arg.e2prom_cmd_data     = buf;
    ; h5 _$ ~$ Q  Y" y9 O' c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % z) T7 S5 Y4 J6 ?- |1 Q( B
  36.         if (ret != 0) {
    " D5 ^2 V3 G5 ]3 S4 {3 N2 N5 {
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & v2 e% m- p) y# ]
  38.                 return -1;
      r: o/ d3 {3 s+ {2 r
  39.         }* {- m9 B3 `/ {7 {
  40.         memcpy(mac, buf, 6);
    5 l% m  h% F6 H0 J! D
  41.         memcpy(stbid, &buf[6], 18);
    7 k# L5 C. u' [1 s0 P
  42.         stbid[18] = '\0';" t( I! |3 F: P$ a

  43. + j" @; Y3 j% w
  44.         return 0;
    ; F9 U7 v# |& {+ M; L
  45. }9 R: d( D2 k% F

  46. " @$ [0 d8 J1 ]0 L, R) A; H* N
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): C9 b7 x" k% |+ x. D
  48. {/ p0 }- Y" t8 a" h! W/ D
  49.         int fd, ret;3 ~( T1 Q8 i. R7 u( W
  50.         e2prom_s_cmd arg;
    1 H) q$ B0 F) \% G
  51.         unsigned char buf[0x18];
    ) j' j0 d% Y. Z! `( C9 W
  52. ( Y, [2 v, c7 c# n6 R
  53.         memcpy(buf, mac, 6);
    - x+ X& n0 ^3 w9 P1 r; f! ]/ e
  54.         memcpy(&buf[6], stbid, 18);
    " n: |% }5 m% D5 h1 y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; x) t3 [6 U4 J) \! W0 A
  56.         if (fd  < 0) {( {; @0 F: G3 C
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 F' ~# f: c0 p+ K2 M. g
  58.                 return -1;
    + c5 f; b! h* a  h0 y& j* C3 N  u
  59.         }
    2 c# {* K) h3 [! V1 J* {
  60.         arg.sub_addr_count      = 2;, \- e8 C2 t$ L% d  m
  61.         arg.data_count          = 0x18;( k: t, I& y( B
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 j$ o7 Q( H( q, V6 j
  63.         arg.e2prom_cmd_data     = buf;
    ! T1 y0 Q0 C( K" U
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 O: V: i  ]0 t
  65.         if (ret != 0) {8 [/ w  s% {7 @
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    $ _" U% e. }) R" M* r4 V7 s9 M; ~! s; e
  67.                 return -1;
    1 a; f! O9 p# r, \/ e4 M( z6 ^) u
  68.         }+ j6 d4 k8 y/ L5 D
  69. " S! n/ N: m$ D" F' n* x9 Y4 @$ }
  70.         return 0;
    - ]3 w8 u7 u7 D
  71. }1 f8 l! A! i" W- x  k. j

  72. / c& a) r5 ?/ ]" B6 k$ F
  73. int main()/ N( F+ U& j" T7 {2 N
  74. {
    + R9 r  g1 W& |% i
  75.         char c;
    # f& A4 A- B* M. P' U
  76.         int i, macs[6];$ W+ s( ~  c; C4 _: T8 r+ N! Z+ t
  77.         unsigned char mac[6];
    - b, G9 o$ K& p/ }0 |: C# Z. @# r7 ?: h
  78.         unsigned char stbid[256];, B0 U& q0 U' |% x, n" G' y

  79. $ r8 g/ s, v7 ^' U: n7 H, g
  80.         if (readparam(mac, stbid) < 0)7 ~4 g# K$ @% s& v0 C4 {
  81.                 return 1;
    $ m$ c6 S# K  C) j5 u+ ^, r! a0 o
  82. ( @, n4 T" w, X
  83.         printf("Current parameters: \n");  H6 B) d7 {& S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) o+ T: j1 A- H
  85.         printf("  STBID: %s\n", stbid);
    * B( W" f7 o; D
  86.         6 Z2 k) F$ N5 m0 p5 M/ c! w
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 X: j: t( V& {; g) G, B2 \2 o+ w
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    0 ^3 n: A8 c) f# X1 U: f
  89.                 printf("Input MAC error\n");/ g" ?& U+ s7 T. A
  90.                 return 1;. V1 x( y5 V; U" Y
  91.         }' Z3 d  A) ^& z1 g- I2 C0 \) N
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! F5 i: `! `$ [
  93.         printf("\nPlease input new STBID: ");' ^9 F: r, s% |; M4 @/ ^' a
  94.         scanf("%s", stbid);+ H- A- e. b3 [3 T& j& X
  95.         if (strlen(stbid) != 18) {
    6 U+ z% V; q- m6 r
  96.                 printf("Invalid stbid\n");
    # B$ L( U- o! p, w
  97.                 return 1;
    0 e/ v2 }/ l! Y4 U% M- ~+ p  m
  98.         }
    % R5 K: K  R1 P$ R2 U( t) s* o
  99.         printf("\nNew parameters: \n");
    # N7 g; b: N5 d  q/ {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 H) n0 ]9 H  D; j2 O1 R
  101.         printf("  STBID: %s\n", stbid);1 c5 u! E! R6 b3 U" m- a4 T6 f  N

  102. ) f9 G% B# F8 @" Y' o$ z
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; a1 X3 L: d7 h$ P( a
  104.         for (;;) {$ c7 u/ o: A/ E. ^) l# D
  105.                 c = getchar();
    . S3 t- a/ Z* a9 y7 q
  106.                 if (c == 'y' || c == 'Y')2 k' F' q9 z. p& W: U
  107.                         break;
    3 ]% M  \: p4 V' M: e: |6 Q
  108.                 if (c == 'n' || c == 'N') {
    % ?# I  s& M! X/ V6 c9 Q7 y
  109.                         printf("\nAborted.\n");
    ( b+ N! l+ [# X8 G9 {: C5 O* }
  110.                         return 1;
    0 X& u: a& i3 J8 ?
  111.                 }
    ) F0 _1 M5 ^! h8 w) L) p5 |0 [( z
  112.         }2 |; z1 `; |: Z. I" s! u
  113.         if (writeparam(mac, stbid) == 0) 9 t/ S$ q9 W( T" z# l
  114.                 printf("Parameters changed.\n");/ ~, F5 k- c) l7 J* K$ A. R

  115. " A4 `& u3 o2 J. q0 m5 w8 s
  116.         return 0;
    $ W: l2 m4 g7 p9 c5 Q# F4 ~
  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
$ ]) v1 r0 y. d. V在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 K# |: F& ]( E$ K0 q* b# y" o
你用的编译命令行格式是什么?3 e5 B$ k- j( O. F
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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