查看: 16880|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . w6 f1 x6 `! W9 r. @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) f1 w/ i! [* T. s3 N. G
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:# X" b& A- Y# O3 h( a; Q
usage: himr <address> <value>. sample: himr 0x80040000 0x0
: j# \' Z! n$ |2 S0 r3 U- u) [
; D- O  T9 D1 o+ \5 ~8 W3 L: `4 d9 q- O' I( s
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* @+ X* a  _1 k! Z0 O/ o0 G: P
2 ^: a; l1 D. [' R/ w* M补充内容 (2012-3-8 09:42):- Z7 L+ A' Z6 q5 ^; f# O
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. u# {7 I' f8 T! K$ N8 i& t2 I
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。' X; ?4 G2 f' w( q% N

5 w7 {( P6 M; L" d  jhimr <address> <value>. sample: himr 0x80040000 0x0
; F- P/ V% L* M6 c7 G/ D& V# F  d; I" ~/ O
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
% z$ ]4 n: c5 U8 ^  a, E! }himr 0x80040000 0x00
4 {, b. F- }& R* [' H+ L8 {  H3 }himr 0x80040001 0x11
9 @! j9 X% `. X, c7 v2 @himr 0x80040002 0x22- t" [. X% R7 J2 ]0 n' B
himr 0x80040003 0x33
5 O4 R1 |6 T" Ahimr 0x80040004 0x44( T! u/ }$ v6 c
himr 0x80040005 0x55
! @1 C  `# a1 a6 m% j1 r' g* G% D! a
SN也是类似。
# b) K" l$ x+ f7 G! }2 ]4 Y
: q% x, K* e) G" u' }现在主要是,谁告诉我们MAC和SN的地址?
" F  j0 y" U9 ]7 ?* E. {9 `1 v0 J
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 8 E; R6 {9 {' s2 U! V, u. D4 {
一直想找到运程修改MAC和SN的办法,苦于无解啊
$ y; `# J" j4 w5 ^% G% ~
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
7 K* I& s. E1 g3 _, _* {8 Z8 t! ~) T' e- c9 F4 m8 g
修改的代码早有了。到今天不会编译。
7 c, Q+ u8 p; B+ E, M4 ?7 z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # o, H8 P# `( `9 H" F
  2. #include <malloc.h>3 F2 v& Z7 Y! T: }/ @) b8 d- q
  3. #include <sys/types.h>
    2 J* U  Z1 a& K' n0 N( o
  4. #include <sys/stat.h>
    : ?( r; \, e! W' Z" z
  5. #include <sys/ioctl.h>" F# R1 ?' u+ T8 i
  6. #include <stdio.h>& Z1 O; Y+ @! K
  7. #include <string.h>  K  R4 j. Z# J% t( m4 M

  8.   `! A. r% W, p# p
  9. typedef struct {2 [2 X$ U3 a. |
  10.         unsigned int        e2prom_cmd_sub_addr;
    0 z( S0 ~$ p6 F0 {' [7 i# Y
  11.         unsigned int        sub_addr_count;" L6 Z# b+ `! b
  12.         unsigned char*        e2prom_cmd_data;. S! |( ]% D9 c4 Z, q9 A
  13.         unsigned int        data_count;- K1 [5 p6 Z2 T/ k4 Y8 M8 z! r
  14. } e2prom_s_cmd;
    " s* T4 W0 A5 H' c4 U

  15. * h7 I# E" V0 h/ ]' W# P! i2 g
  16. #define E2PROM_CMD_READ 1
    # M) o# Y8 V+ F$ N3 j) a2 T: R
  17. #define E2PROM_CMD_WRITE 27 l' S1 u' x: X' A( n1 X7 I' ~
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 c/ y, p5 q0 {) B& L& T
  19. % S3 m& u, R- O! {3 H4 O8 ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# K. A; {8 e! r& b) d
  21. {$ j+ `  J; Z( k/ i( Y
  22.         int fd, ret;
    + Y' i. X4 }3 |% y
  23.         e2prom_s_cmd arg;
    0 C; q% t/ |& p0 |9 @0 }
  24.         unsigned char buf[0x18];
    3 f) E  ?8 U7 K& u! I# i

  25. , H, O5 n& ]) S; J* B7 F
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 b5 d3 ~9 s' {$ @8 M/ p
  27.         if (fd  < 0) {
    7 h. ^+ @, E# [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 f; H! ]# s& W$ [$ l2 L5 a- M
  29.                 return -1;
    1 i6 `' S  e2 Q9 A' E' k# \' z
  30.         }9 M, n6 M# a8 z$ v. M4 w) e- d
  31.         arg.sub_addr_count      = 2;% {& V$ v# t, B6 v7 @) a- H
  32.         arg.data_count          = 0x18;
    , {& v6 F8 P) X+ |9 J+ R
  33.         arg.e2prom_cmd_sub_addr = 0x290;: n) ^0 V% k( ]- z. @
  34.         arg.e2prom_cmd_data     = buf;
    ( p7 q0 o" p, E
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 m. U  D& j# P/ b) N
  36.         if (ret != 0) {
    . Y* C4 J  [3 S: z* e) \) E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    , ~. w: ]8 V' V/ H1 w, c; Q7 [
  38.                 return -1;  j1 }- u, K* L
  39.         }
    & o; g6 S4 _  |- G4 _+ i" i1 }; v2 F
  40.         memcpy(mac, buf, 6);
    1 q* X3 b* V- ?+ m. k" n: G  W
  41.         memcpy(stbid, &buf[6], 18);# ?+ z. T  F" @1 a
  42.         stbid[18] = '\0';
    6 H; `7 H, [' n# g
  43. 7 y  H  |) G/ b( H+ l) W, m+ R
  44.         return 0;
    4 Q4 {9 M$ G! t( I
  45. }
    ' ^/ `3 p+ l! d5 J6 e4 J
  46. ( ~; L1 o" A' R; ~7 B; O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 K7 L4 z8 d8 L# ~
  48. {3 F- X! W8 t6 ^$ h- c7 y/ R* d, t
  49.         int fd, ret;. ]+ R! `7 \) ~8 G
  50.         e2prom_s_cmd arg;
      B) n: n' w; O9 d8 c- s5 [0 `
  51.         unsigned char buf[0x18];1 _- k7 @$ r+ E$ d- C

  52. + [  [, p( s9 l1 E) S0 B. D# B
  53.         memcpy(buf, mac, 6);
    & x% D% e6 k9 B- |
  54.         memcpy(&buf[6], stbid, 18);
    - [: B- s  H' s. B' e$ ]& p* U
  55.         fd = open(E2PROM_DEVICE, O_RDWR);. D4 G9 c, F! z* B4 i
  56.         if (fd  < 0) {
    3 V4 `$ a3 u: @" n7 G
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , ]7 O) e8 Q1 Q6 ?/ w8 k5 o
  58.                 return -1;9 s$ T; M; a0 A$ o0 ?2 j# X
  59.         }( B& T/ G- B  o/ n+ y
  60.         arg.sub_addr_count      = 2;
    / K/ \0 ~1 E: D9 T7 b
  61.         arg.data_count          = 0x18;# j- j- a2 l* g  j+ x- @- B
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    , k* p. B+ h0 K( K% R9 f
  63.         arg.e2prom_cmd_data     = buf;
    7 V& x  }* N  ~. l( E
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ q( g0 ]5 V$ x+ Z6 ^1 w1 N
  65.         if (ret != 0) {* b+ b; m/ `, h$ f% E; r; w
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ Y& g+ L% `+ L/ B
  67.                 return -1;
    % _( j! K8 G: _+ I6 n( p
  68.         }
    ) v8 P# N3 s4 a6 W

  69. 7 @+ e% Z* ?4 j/ q( T
  70.         return 0;8 y* q; K6 T4 {: H0 }& I
  71. }/ p7 q- j  j6 {7 n

  72. 5 ]9 c$ |+ n' G, F! a( f/ ], Y
  73. int main(), A  q' `! I, R: e/ G
  74. {
    2 f# e0 Y" R0 [$ j+ W- E
  75.         char c;
    4 l2 o( w$ B0 {+ S
  76.         int i, macs[6];
    7 A8 q0 I0 Y8 m5 n$ C' B
  77.         unsigned char mac[6];
    ; S- ?) C3 J: c& g
  78.         unsigned char stbid[256];
      ?' R  R4 ?8 @, n7 M2 m% [

  79. 2 L, t1 C. T. K/ ~+ c
  80.         if (readparam(mac, stbid) < 0)
    ( `; W( [) m  r+ @$ p% u
  81.                 return 1;
    " b7 B+ {" O2 z" ]" J# [' R
  82. % ~/ v# w# P5 U
  83.         printf("Current parameters: \n");5 F0 @& _/ u$ U
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' _) l- D' C# K5 t
  85.         printf("  STBID: %s\n", stbid);
    / K- ?  @$ O8 ~: D, M. M
  86.         ; ]+ j' M! Q( _1 Y; X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ P3 l0 M0 ~1 S$ L9 N, \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ) w0 J: S9 O6 G0 V9 J' n6 v7 Q
  89.                 printf("Input MAC error\n");# S& P, |0 Z' m* u" w" y" K4 e
  90.                 return 1;
    9 R) ~1 i3 ~6 X1 R
  91.         }6 s& F  Q- W- ]: [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 \# ?6 K4 I1 f; p6 B$ M3 T/ H+ N
  93.         printf("\nPlease input new STBID: ");* }" c% k! ^0 t$ T7 w$ ~
  94.         scanf("%s", stbid);, S' Z9 m0 A; w" C
  95.         if (strlen(stbid) != 18) {: @' b9 ?) O8 x& r
  96.                 printf("Invalid stbid\n");
    % p7 B" s% G- H( D) p  W
  97.                 return 1;
    5 H( {  I: W# p8 u. A: X; c- H0 w
  98.         }
    # q* T/ l* _: u; b  c# c+ \) O7 D
  99.         printf("\nNew parameters: \n");; ^) E5 b9 x0 ?/ W
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. S: L/ i! l" x; K; S$ u  T# w
  101.         printf("  STBID: %s\n", stbid);
      C* m$ ^6 S0 X. E* E" G3 v

  102.   F7 H7 t/ f; k$ s! Y, Z  F1 o
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 Z- v& _( R6 B5 T) G7 ]8 c
  104.         for (;;) {; \, D' P. I+ d; m- J
  105.                 c = getchar();
    " {$ \5 o% Q* P
  106.                 if (c == 'y' || c == 'Y')
    2 Y. d6 N% k4 `7 j0 W9 ~! M$ F
  107.                         break;! o) o: t& c5 ^7 p! ]  N3 O
  108.                 if (c == 'n' || c == 'N') {
    0 M  D2 _( q+ K$ U6 ?
  109.                         printf("\nAborted.\n");( T; }3 l- V' H2 s! \
  110.                         return 1;
    % Y2 N6 [9 _* n  j7 r, x; [
  111.                 }
    8 A  F( l4 q! e' `0 s
  112.         }! o) \( V# |# d6 Q+ d, g
  113.         if (writeparam(mac, stbid) == 0)
    . j6 L( R) g- F
  114.                 printf("Parameters changed.\n");3 \5 C4 l" p$ b5 V- c2 L) M& L

  115. # G  b+ L" {: w. X- `7 e
  116.         return 0;
    7 i- q4 J+ R4 i5 M/ ^; e7 G
  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
9 o. |, C6 q5 d+ D# G在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: M2 @0 }5 _0 }# g8 O2 n$ M你用的编译命令行格式是什么?
8 @* w% U6 ~, u
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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