找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15341|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ r( q3 X8 q- y% Q8 D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    + i7 ?8 m+ q9 ]# B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; \0 T) B  v5 B3 R& Y( I. v6 X
usage: himr <address> <value>. sample: himr 0x80040000 0x0, e+ O/ V% u7 }3 p+ L8 o

- o, v2 C8 f2 ?7 e" n9 s: F/ @  @1 g$ B( \, Y9 B  W$ P
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
; ]2 H% o3 d/ I5 T- ^7 Y1 s7 h2 _  r% ]  l
补充内容 (2012-3-8 09:42):
6 @$ ^1 V" D% ^9 v8 ^) p( [2 Vhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
& C: Y8 w: Z7 Q4 U' C这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
7 I6 Z) i. s2 G' s+ J' i$ d& ^2 V+ I; b1 n! z* v) R
himr <address> <value>. sample: himr 0x80040000 0x0( w" N9 _% h: d0 u8 K" V

7 ?: m! ?, B1 B例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 |# g8 N- u+ @, A* P" F+ Dhimr 0x80040000 0x00
/ f) d) ]3 X6 S1 {( g% ahimr 0x80040001 0x11, `( O/ w9 v, Y& K, q! h5 D) |
himr 0x80040002 0x22( j9 k: n- e3 E- ]5 n1 ^1 R
himr 0x80040003 0x33
3 v+ }) B& a. c/ X* M3 j' @himr 0x80040004 0x44
) t. n6 z' f; d: c3 t0 yhimr 0x80040005 0x554 e' H& U- X- G5 W- N

  h# e# C' Y/ A9 N# r$ Q8 @+ qSN也是类似。
1 ^/ q, F: T3 X7 U9 X
1 M& t& E- h2 K现在主要是,谁告诉我们MAC和SN的地址?! u' ?( @6 d& c( i" V( m+ ~# b
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 2 j0 a" G: c$ k3 s& J6 I; p
一直想找到运程修改MAC和SN的办法,苦于无解啊

$ D& }; {; f& S6 ^: j7 J8 h源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
3 A( T7 A% a* ]% h6 S4 F" R. b! E- A4 X# o8 X/ o. |
修改的代码早有了。到今天不会编译。
$ B% b$ ~- h- W4 p$ r需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / @6 W$ ~; o4 ^  g+ o( f- q
  2. #include <malloc.h>; B3 c+ x- C5 g# Q4 R: v
  3. #include <sys/types.h>
    7 C( U% r0 P9 G/ J" ~% a3 ]
  4. #include <sys/stat.h>; g( d3 |% B* z$ [
  5. #include <sys/ioctl.h>9 G0 W8 Q( f: B. W0 G5 o, Q
  6. #include <stdio.h>
    8 d+ Q; Y) Q, z/ R. S
  7. #include <string.h>
    ' F0 S: C' a; |8 t' H$ J! o
  8. & ?$ v- t$ ?+ g
  9. typedef struct {
    + Q$ N$ I* i! n6 F3 ^/ n0 a: Z
  10.         unsigned int        e2prom_cmd_sub_addr;7 ]& U2 Z3 H& X7 o$ [' _( [
  11.         unsigned int        sub_addr_count;
    " e: g' K& W: T
  12.         unsigned char*        e2prom_cmd_data;
    9 N7 M+ ], U+ a$ r( I
  13.         unsigned int        data_count;4 y9 h$ o0 i5 h: {. ^8 ?
  14. } e2prom_s_cmd;! Z  s/ D; M" r0 f
  15. . f) J* p. R4 ~( |
  16. #define E2PROM_CMD_READ 1
    1 n6 M- Z7 ^: B6 S2 G' ?/ C
  17. #define E2PROM_CMD_WRITE 2
    # p6 O# W0 ^0 E
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16") l2 s' m7 ~& K$ S  W" P

  19. $ Y. l9 ]2 d! Z! W, D5 l
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / ?! v) e8 U  P9 K1 u5 a( W% v7 O  }
  21. {( H. |, m6 h3 F( j5 J/ g& p; m
  22.         int fd, ret;
    ) t+ s* ]% C4 g' X' x) E
  23.         e2prom_s_cmd arg;
    0 e- H4 R* G  r8 L
  24.         unsigned char buf[0x18];
    ) S2 ]  b9 p3 K4 s# Y+ w* }/ z6 z0 `
  25. ; S' j7 _2 ?$ z' ]5 v
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    # f+ N, G4 _% F2 p6 k
  27.         if (fd  < 0) {
    2 w+ c' a- [: a# m! [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 s& R& E9 x8 _' f# b+ Y6 M
  29.                 return -1;
    , W, B, T! J6 N$ e9 t
  30.         }
    # u( w6 m. v' E% ]# e8 K# q
  31.         arg.sub_addr_count      = 2;  l  K2 N8 \0 ^  ~3 X) ?* f
  32.         arg.data_count          = 0x18;6 J" T  h5 b3 ^1 a
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 {8 k; \/ t/ o& }
  34.         arg.e2prom_cmd_data     = buf;
    8 @3 A  k* W4 G1 S9 a3 P8 f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & n: Q, t: Q+ O+ E1 v$ q
  36.         if (ret != 0) {9 b3 u6 n3 l! N$ y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);' ?' e+ w% W9 f; ]+ o
  38.                 return -1;  B/ x+ u& T+ H0 ~4 _
  39.         }2 A2 O* O  T1 f8 [  Y+ {0 J2 {
  40.         memcpy(mac, buf, 6);
    $ O+ l7 ~; e0 L6 g( e4 _
  41.         memcpy(stbid, &buf[6], 18);
    $ d) X( O2 c% |9 d3 X
  42.         stbid[18] = '\0';
    ' U! F  Y) X  f6 V$ \

  43. ! j2 ~( B/ @) u/ }# T; Y' j
  44.         return 0;0 y) K: i) |3 Q4 O! A8 K5 U
  45. }1 ~6 V( t, C( s) e% {

  46. # p- R; P) v2 v$ E( P( i. x" h+ F
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) Y5 J$ ^. n( c  f2 \+ r% j
  48. {
    6 r' G7 ?& H) [. o" {1 j
  49.         int fd, ret;
    6 w5 M  c, H) g
  50.         e2prom_s_cmd arg;
    4 j4 P; n! j4 R2 B5 c" ^
  51.         unsigned char buf[0x18];
    3 q5 u5 A8 Y+ Y$ z# `

  52. ; k6 L4 |+ g/ ]: T2 p& U
  53.         memcpy(buf, mac, 6);: u5 c" ~" H: ~/ x% C
  54.         memcpy(&buf[6], stbid, 18);
    0 B' A% V1 _' X5 U
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( _, _5 g1 p- V! w( I5 ~3 {! n8 I/ E
  56.         if (fd  < 0) {! [  Z& m0 m* X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 z3 R6 [) p0 H9 c; s' B, w- g/ W  a
  58.                 return -1;
    0 w% x! j: k+ ~9 I
  59.         }! d6 e2 s" K1 f) Z6 T) o
  60.         arg.sub_addr_count      = 2;
    ) j* Q% n4 ^. T2 }7 Y  x
  61.         arg.data_count          = 0x18;
    6 ^3 K7 b1 g. p+ t3 E
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; o7 }( [! [: A# o# e
  63.         arg.e2prom_cmd_data     = buf;; k' x' o5 f# _) z5 F
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
      A6 R5 w  T+ B% ^$ I/ m* w
  65.         if (ret != 0) {
    . e. c' v) ^6 G
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : c! |4 r/ N3 k: Z  X% \* p6 N
  67.                 return -1;" V. z/ F0 Z7 q& ~6 r2 W9 b: r( E% @/ |
  68.         }
    # A( H+ n3 [+ P+ |
  69. ' Y+ D) _& m( G
  70.         return 0;1 X( @( @8 k" ^- p; U& ~
  71. }+ T2 L$ l) H. n, K

  72. # i. ]4 y. v9 I6 o
  73. int main()
    5 t; w8 n! T) B, G, ?( q. m7 n
  74. {2 A8 t3 Y3 J; u3 A# _
  75.         char c;1 U( o8 t, i) o; F
  76.         int i, macs[6];
    8 J1 h% K) j5 k% ?, s( K% X3 j
  77.         unsigned char mac[6];
    ( i" c4 A2 a, z
  78.         unsigned char stbid[256];0 {* n7 [: _* \. f2 O* ^% M2 i

  79. 3 t1 T1 q# q3 U# Y8 o# \1 K! y
  80.         if (readparam(mac, stbid) < 0)3 _7 q9 y! _, D; d1 [  l+ O
  81.                 return 1;
    ( O& A2 ^9 z, t( ?3 [, s
  82. # n7 c' v: s  r) Y  @
  83.         printf("Current parameters: \n");
    1 Q4 l6 z6 S+ ]+ p5 B
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ U, q, }/ T: s8 d  ^  c
  85.         printf("  STBID: %s\n", stbid);
      x* s2 I) l. m3 Z& t0 o
  86.         ) ?: b* J6 g% J( e# `' ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + [) E0 ~! s5 ^  F4 t1 j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 `  y0 {; M/ J+ K, K( @
  89.                 printf("Input MAC error\n");
    5 m6 S3 j+ C7 M( {4 B
  90.                 return 1;
    & _3 Y5 Z8 p# U7 F5 H
  91.         }+ ^5 i4 O# H, ^- H$ `# b" D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% }; J/ D' j+ n5 y4 z5 p
  93.         printf("\nPlease input new STBID: ");# ]6 h: J5 j* ~
  94.         scanf("%s", stbid);& L8 Q4 ]0 Y- E8 H+ c) G0 K$ D
  95.         if (strlen(stbid) != 18) {: y+ r" V# D+ y: B
  96.                 printf("Invalid stbid\n");: k! B1 l9 U( I5 T/ {
  97.                 return 1;
    , Y0 _& h% u: }
  98.         }
    8 Z6 N# j' @  z# X0 B: M' u
  99.         printf("\nNew parameters: \n");4 J# s9 c# F8 C( e6 [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 R# f$ _3 ?& |# H$ p
  101.         printf("  STBID: %s\n", stbid);
    4 u8 F" ?) [  g5 p  x
  102. , ?4 z$ r# g- T
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & U2 Q% d( @. |* T7 n$ D! D/ w( `
  104.         for (;;) {: I0 s: T0 Q1 w6 L; R; ^
  105.                 c = getchar();
    . F  Z' T9 ^/ }% [+ t9 \
  106.                 if (c == 'y' || c == 'Y')/ X9 i0 E/ M3 P( k4 C  K( A! c
  107.                         break;& e6 p. O' Q5 U2 E# f6 ]
  108.                 if (c == 'n' || c == 'N') {
    8 X0 v  e, |" v$ n
  109.                         printf("\nAborted.\n");) }( H8 \: N- r
  110.                         return 1;( L, }' @3 E2 |- B
  111.                 }
    * M; ?: g- C  N$ G
  112.         }
    1 q! P: D( d8 E- y6 w' g+ v
  113.         if (writeparam(mac, stbid) == 0) 1 g; o, `/ U: c
  114.                 printf("Parameters changed.\n");
    ! n7 J$ ?% i; L
  115. . N: @; v" M/ W) v
  116.         return 0;$ H& h5 l4 m. ?' D
  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 0 c! B7 P  W/ c9 V6 `
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" ?9 r8 C' C( G; B& {& r) ]2 D! N你用的编译命令行格式是什么?
7 d$ j, Z! Y1 k7 x
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-24 20:49 , Processed in 0.024795 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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