找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15719|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 i& J7 p  ^% P/ C/ B
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# h  u* F) G5 [: @
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# w0 i. c- h& t( O/ |$ o* Susage: himr <address> <value>. sample: himr 0x80040000 0x01 ^6 l% m& S. S
6 |3 M, T. I* W+ l1 Q; p2 u
! y/ o3 n# e  K1 |
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
0 s. K, f, Z0 L9 m3 `! t! t  t) m4 q# y; p. Q  `8 O  m# W! F5 A! k0 c
补充内容 (2012-3-8 09:42):$ y3 p$ E2 Y, u$ M  E0 _
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 D3 R6 }" z) C. ^9 p: G这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。. u! @% i+ |3 D: m- w" Y! s; ^
: l: Q% p: \% n5 C
himr <address> <value>. sample: himr 0x80040000 0x0
% y" m% G4 G2 h/ p; U  l# g( n6 `( _/ _5 I% D0 m/ ~' y
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。- K, c( z: ?4 ?) h+ q/ l
himr 0x80040000 0x00
" O1 D' f# b# b- r* [' [) |himr 0x80040001 0x11
4 ?2 h1 Q; M+ n& {, I& r- c3 `0 z, `himr 0x80040002 0x223 s, ^; @8 m" J" c( c( z
himr 0x80040003 0x33
% F% `8 N; }0 c( k6 Hhimr 0x80040004 0x449 j) o- z5 K1 s0 I) |
himr 0x80040005 0x55
0 F2 S( X" M4 ~6 R6 X/ n' E$ i: D& M
SN也是类似。
" t" }( u: i7 d5 Y& s! Z' a$ `- N$ U9 a
现在主要是,谁告诉我们MAC和SN的地址?2 d* f' P3 d7 o$ ?$ |; {* I- v' ~
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ' F. N/ }' m: Z  A% h3 |3 e
一直想找到运程修改MAC和SN的办法,苦于无解啊

( j) c" Y) m' D源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 4 ^; ]4 T2 T% z0 H" `/ }0 w

4 L% K0 B! @' {/ l$ N# `" V修改的代码早有了。到今天不会编译。
1 k0 W- e7 c) u需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    $ C$ w4 L% V/ ^
  2. #include <malloc.h>% R  _7 ?; V# H) d9 `" L
  3. #include <sys/types.h>: D7 E5 [* o4 V5 }' v1 e- f6 @; d
  4. #include <sys/stat.h>2 Z8 ^; O" R/ |. Y$ a: t( ^/ c* B
  5. #include <sys/ioctl.h>
    & O9 v5 G1 P+ j, P) L8 q4 P
  6. #include <stdio.h>( J, W1 H1 E+ @1 R3 ^" J2 E
  7. #include <string.h>
    7 g0 _7 N- D8 z0 Z1 F

  8. , D5 [( K' M. {$ w, X8 E1 [
  9. typedef struct {
    $ ?- O! S& D$ K, ~9 x5 c
  10.         unsigned int        e2prom_cmd_sub_addr;1 |5 [5 m) t7 X# ?. C* t
  11.         unsigned int        sub_addr_count;
    " \) g) R! }3 P5 |) u
  12.         unsigned char*        e2prom_cmd_data;
    ( {( u3 V/ O% x* f1 n4 X
  13.         unsigned int        data_count;
    ) c( E  h6 I2 N7 @* b# [. k9 {
  14. } e2prom_s_cmd;
    # b: v  G1 x' ^3 C6 U) o7 h' X

  15. ! V# T- [. R+ N8 Q0 o: c; r
  16. #define E2PROM_CMD_READ 1
    . c% H- P* Z- A& F8 {# }
  17. #define E2PROM_CMD_WRITE 2# \& i6 Q5 _* ^& u7 e' B' p; G5 k
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ `/ q- ?8 l4 s5 G  w* k

  19. * F8 D0 b8 Z% n8 l- S5 B( U
  20. static int readparam(unsigned char *mac, unsigned char *stbid); E% d0 Y+ p8 @/ u& ~
  21. {
    ; n! ^! `! ~; t. k, h
  22.         int fd, ret;
    " j8 }: E( Z- |$ K. U
  23.         e2prom_s_cmd arg;
    . [5 c. |3 b4 n/ E2 R3 H3 N5 A
  24.         unsigned char buf[0x18];7 N; K, s! z) r! s) n

  25. , [! H% h1 [6 P6 I
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- ?, I2 F* D! g$ m) q, y# z, e
  27.         if (fd  < 0) {
    / g( j' Z5 H8 _% g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . K8 n% |( ]1 B; {" N
  29.                 return -1;
    0 i9 K/ b* x5 U7 i1 u  Q# _
  30.         }
    ; ~  @) b5 r7 I
  31.         arg.sub_addr_count      = 2;1 f# R; I( @  w7 X9 m) J1 Z: w) h. w
  32.         arg.data_count          = 0x18;8 Q& A6 A( O. c1 a  F$ J: v% Y6 e5 V
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ A  i8 V0 Z" o2 w3 Q& C
  34.         arg.e2prom_cmd_data     = buf;
    3 `, [7 A" i% m
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - [8 P' V) l' O5 h+ f# L" P
  36.         if (ret != 0) {
    - n, ?) _. \, M$ _/ ?; w) r0 ^: Z, \
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# p% E# k  F; w$ W
  38.                 return -1;
    ! Q. J! `) P& a2 g, G6 l8 r
  39.         }, {, q  k  |* s; Y
  40.         memcpy(mac, buf, 6);
    # t. d1 _% C' R% C1 f% u
  41.         memcpy(stbid, &buf[6], 18);# Q/ o3 p$ d3 j* B
  42.         stbid[18] = '\0';( {" \$ `7 u; i" @, M
  43. - A# c+ d3 Y' b+ _4 U7 e! \) R
  44.         return 0;3 p  {8 }; N7 R4 l
  45. }/ J  e' z0 }. b" u% @
  46. * e+ ?( m# l# ]' z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  A4 j" J% \) d. ^
  48. {
    ( N" X* x" L* s* I3 E" F
  49.         int fd, ret;: t# b0 S$ H& I
  50.         e2prom_s_cmd arg;
    8 o/ ~, `5 u. M$ _8 \
  51.         unsigned char buf[0x18];+ s* l- f, i+ ^" R

  52. * m( [  ^( l+ n
  53.         memcpy(buf, mac, 6);
    5 ]9 K7 R; Y# u/ `' k
  54.         memcpy(&buf[6], stbid, 18);! M0 g0 W8 U) E8 p( ]% i
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 j. L) t4 V* {2 ?0 F
  56.         if (fd  < 0) {
    * `" Z, i' V  c! C
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' E1 m  ?7 h$ i( M
  58.                 return -1;( ], u" d9 [* z& e$ \) Q
  59.         }: t, b$ o  }( D% Z# k
  60.         arg.sub_addr_count      = 2;
    8 T# s3 m8 g0 k& Y& }
  61.         arg.data_count          = 0x18;3 ?' w- b: o- Z8 x* y5 q- j0 v
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      U( ]6 H* f/ k5 B6 _% ]' K/ K
  63.         arg.e2prom_cmd_data     = buf;/ v0 N' k+ Q0 d. W" c' g
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ e+ G* j7 Q/ s  }! O
  65.         if (ret != 0) {( l1 H! r4 l) g2 P
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : \! A' v" `+ D8 w/ z7 }) ]
  67.                 return -1;
    0 ]0 U7 x, V4 S3 m
  68.         }& A7 s; T  R& D  q. b

  69. % Q& {. Y5 D7 n& k7 r7 m! ?
  70.         return 0;& W4 M+ _) J" s5 x$ v. M
  71. }
      O9 \6 c- P# ]% q# g* S
  72. ( G& j2 u9 ]$ \9 D+ a( W
  73. int main()5 N0 [; E$ L) Z1 g% H  S0 Q
  74. {
    + L1 \' s3 F5 v  j! d0 L* X- X
  75.         char c;3 E3 W  N" i1 S) L) z
  76.         int i, macs[6];; m7 p' ]2 U" |' ^+ T6 h
  77.         unsigned char mac[6];
    $ V! w; E$ ]. s# Q# v- D5 G
  78.         unsigned char stbid[256];
    & h! Q& X1 i: r( h8 _) o

  79. 1 I7 V( b+ |# x" ^7 @% [/ C
  80.         if (readparam(mac, stbid) < 0)$ Y  j2 }7 [, o
  81.                 return 1;
    + i9 L2 Q1 i# B+ `
  82. / ]5 ~* ^$ P* Y
  83.         printf("Current parameters: \n");9 V" q. s! r. X- ~% n7 a. G1 M9 V* z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 D, U& v" t8 o% L
  85.         printf("  STBID: %s\n", stbid);+ p8 ~3 i" _; c/ v( p+ ~' R! `
  86.        
    ) ]) e( W8 s: b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 {' J0 b5 A0 G$ x5 g" X
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + U3 c4 y! X( U6 d0 a
  89.                 printf("Input MAC error\n");
    , X! X+ C7 P& u3 W; U2 Q# @
  90.                 return 1;
    2 w; Z  Z% l9 W9 a5 u7 B
  91.         }' d& O3 w. l# B( z) [' h6 v( Y. O4 M; v" N
  92.         for (i=0; i<6; i++)mac[i] = macs[i];+ p8 p. ~2 D* y8 W" y. \
  93.         printf("\nPlease input new STBID: ");; T! {! U) u' f* N" M2 a. F$ m9 J
  94.         scanf("%s", stbid);: A2 I6 w3 p% [7 G0 q/ z
  95.         if (strlen(stbid) != 18) {
    6 N( I8 V: r: d8 F: O$ V
  96.                 printf("Invalid stbid\n");
    + l% `; p% u, U; ^
  97.                 return 1;
    " Z! R/ h  r, V. L4 E4 B
  98.         }0 v0 `4 T: w/ O" a& u9 [3 ^) C
  99.         printf("\nNew parameters: \n");
    ' e' r3 `- S7 N5 w, h, m" L1 U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! H$ l& F4 X: L% J
  101.         printf("  STBID: %s\n", stbid);
    ( B" }3 A+ G6 {2 _+ c  ?  T- A: U

  102. . n  R9 O! C7 q8 Z
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 h' Y# B$ ]+ }
  104.         for (;;) {
    / T/ }, l/ p- K& {1 j7 g
  105.                 c = getchar();5 `3 F- H$ @2 i) v! Y+ g
  106.                 if (c == 'y' || c == 'Y')
    ; E4 h! Q& P* ]; i9 h/ I5 k
  107.                         break;9 l5 o, Q+ c) e4 l: n8 ?
  108.                 if (c == 'n' || c == 'N') {& u1 ^0 d! K  q" B
  109.                         printf("\nAborted.\n");
    & U1 o7 P4 B; l  N8 x
  110.                         return 1;
    & `& ~3 c8 {+ |, N
  111.                 }
    $ X; C: q  F9 t. L+ ^
  112.         }
    & l" [- ]: w& t2 \) C9 Y9 Y' b
  113.         if (writeparam(mac, stbid) == 0) / c6 B  l3 _1 f+ w( x$ ^& H
  114.                 printf("Parameters changed.\n");
    6 l; Z. b0 L( H! u& p- h6 k

  115. ( c$ v+ x' n+ s* C
  116.         return 0;
    - n, x/ u* C; t8 u; R
  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 ( a& E- w4 |* k% |7 @7 ^
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 @. P$ ]" ^% {3 k
你用的编译命令行格式是什么?
0 X, i# s3 E) ^$ q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-4 06:32 , Processed in 0.035907 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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