查看: 17846|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; e5 t4 W: K2 m4 y6 e
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig% o2 L# k; ~0 \. ~) F1 i: n" S
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 Y* p. w& H) O* I7 n& P, Susage: himr <address> <value>. sample: himr 0x80040000 0x0
" D, T" {" w% t# C( g0 |  `# f3 a( x7 R3 S2 [- }
' N: t6 R! g. ^* p* f# u: q
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
. b' y9 T( u5 e0 O' }# f" X/ J* {4 I+ e3 i0 `3 K" |1 E  A
补充内容 (2012-3-8 09:42):
4 Q6 @# \0 B( e8 z! ?' V2 J! qhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% k8 d% U6 g& b; z2 V& A5 B这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。" P. v- J6 T* I4 E3 W4 Q, [

; X# S1 t: j1 a$ \2 Y8 z- ghimr <address> <value>. sample: himr 0x80040000 0x0* ^2 J5 ]& \* N3 Y- K

7 @0 L' o/ _' H' F. U例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( `  ^  s6 N) |  B4 H' ?
himr 0x80040000 0x00
) W' I! F& g# J% ^  |himr 0x80040001 0x114 o, G/ }4 c& P4 ]' E. X- X  T
himr 0x80040002 0x22# Z& T; @. D" Y4 j. Q
himr 0x80040003 0x33
, e: ~' ^6 A  y4 M# ?5 f! Thimr 0x80040004 0x44
" h/ a( K* Y& n/ n* c# }5 Shimr 0x80040005 0x551 s* ^. C- d+ z$ t& H
8 ]- R: K, \( c
SN也是类似。- r4 r! I9 t; W" b

  |8 e0 L: o: L8 i4 _, T现在主要是,谁告诉我们MAC和SN的地址?
  s/ F+ G: g7 }- M0 M
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : k& Q* K7 h9 M* p
一直想找到运程修改MAC和SN的办法,苦于无解啊
& t7 V5 V, \! y6 K: ^& o5 A& I/ P4 _
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# C: t& P7 w. A( Z' q+ m0 L8 _9 ~# r, u; o
修改的代码早有了。到今天不会编译。
0 A4 N; q6 m0 V$ M& t% e2 d需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>3 @- ~6 Q! C' T2 U1 Q8 c" x  x) s* ^
  2. #include <malloc.h>
    7 a6 h4 j" n+ P' f5 j2 I
  3. #include <sys/types.h>, ?7 L, V2 f( h; Q
  4. #include <sys/stat.h>8 m. k5 y; `0 ]8 V0 n2 @0 |7 i% h
  5. #include <sys/ioctl.h>$ X  e) ^, R- t- q
  6. #include <stdio.h>
      ]0 t$ @, \& R6 k+ i, F8 t0 ]
  7. #include <string.h>
    . N4 n! @9 v% }4 w" o' E8 `

  8. 4 Y$ k& \4 f6 d6 m8 m8 n2 i9 I# ^
  9. typedef struct {8 T9 r$ c9 s% ~
  10.         unsigned int        e2prom_cmd_sub_addr;6 N( m" f, ^; a3 [* o5 G7 i5 B
  11.         unsigned int        sub_addr_count;
    - H5 u( P( b0 j7 e' f! ^
  12.         unsigned char*        e2prom_cmd_data;
    " N8 p" Y8 V+ |2 l: J" G: B. H# o
  13.         unsigned int        data_count;
    # h" m$ R: w7 ?9 ?8 {" x$ Y
  14. } e2prom_s_cmd;( p" g4 q2 W0 a- t/ H

  15. * l9 V+ M4 k, ^
  16. #define E2PROM_CMD_READ 1; [. [  j/ C' }2 r# {
  17. #define E2PROM_CMD_WRITE 2
    ! v: k5 f% {! c' ?$ l3 {6 b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"" o( r+ v5 A3 N

  19. ) a' n8 G- W, A: I8 n
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& K+ s, d5 Q" i" K  h# A; E# ~" m
  21. {
    / ?( L4 d3 ?" }+ w# |
  22.         int fd, ret;% p8 v6 y: m; B1 d: x
  23.         e2prom_s_cmd arg;
    4 V) s# L: i# f9 L) ^- o+ Z( R
  24.         unsigned char buf[0x18];
    5 Q# k0 X7 F1 _2 F

  25. # Y) U5 S1 g0 T( O# n3 m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    * |6 ]. F4 D3 x6 O* C
  27.         if (fd  < 0) {2 b$ s7 v# F% S" J. n8 ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # V5 L. T- a0 G% f, M" m- ]# J
  29.                 return -1;
    # U, X1 b1 j4 i( H* b: M
  30.         }/ Q, a, C' U/ U0 g. A4 F( d
  31.         arg.sub_addr_count      = 2;% H; D: ?+ ~# j7 F$ J0 ]
  32.         arg.data_count          = 0x18;
    4 A% ]4 p; q  f' L. f
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 t5 q, F6 e6 }7 E3 C) s# I
  34.         arg.e2prom_cmd_data     = buf;
    2 m. j; R6 a! f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' t) P( q3 C; p1 ]
  36.         if (ret != 0) {
    % |0 O& x9 A+ M( Q3 Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 d4 |+ x' h9 y. U
  38.                 return -1;
    . d" f* M; ^; D7 r) ?: ]. |$ o
  39.         }
      `) W; y  O; l! ~
  40.         memcpy(mac, buf, 6);/ _" k+ Z; S$ w' _; Q* A$ U: ~4 y
  41.         memcpy(stbid, &buf[6], 18);
    ; W1 |/ E6 c  n4 T' g9 ^
  42.         stbid[18] = '\0';
    6 r; m! H# H! m# j

  43. # b: `2 i1 m! t( _
  44.         return 0;
    5 v. m2 ^( `$ z3 M( ^& F& M* q
  45. }- e! G6 C& K( q& H  @  Y% t

  46. / E# O- k5 m( G4 Z! v7 B+ y6 s
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)7 V2 E9 ]: g6 c4 R
  48. {( v1 i- l( V  {: F* `; q5 Q. E
  49.         int fd, ret;
    # ?3 \9 w8 X( d) Y
  50.         e2prom_s_cmd arg;' j$ f. q5 j: P# X$ J
  51.         unsigned char buf[0x18];
    0 @+ n) I5 v* O7 L$ M3 e
  52. $ n+ ^6 i' M7 f8 y! g: i# e
  53.         memcpy(buf, mac, 6);5 Y2 \- ~+ x7 x' L: o
  54.         memcpy(&buf[6], stbid, 18);/ A. q- W  W/ A9 ]
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! V- P) }* m( V. l# G5 r
  56.         if (fd  < 0) {
    - w, m8 \* I5 {# h# _! w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , L0 q0 x5 O* |( W4 T8 t; L
  58.                 return -1;
    / p4 u' Z* }/ m6 }0 Z3 U
  59.         }
    ( _3 }* O8 W7 ^9 U. U
  60.         arg.sub_addr_count      = 2;+ [! I, u1 k2 G* B/ q( [8 }
  61.         arg.data_count          = 0x18;
    $ Y6 K- s7 B; I
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 T: [/ s2 k) z! q9 F9 C
  63.         arg.e2prom_cmd_data     = buf;3 v% t8 K5 ^. {/ R2 k9 d! D. k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 G4 W* F+ x+ }! `/ z8 j
  65.         if (ret != 0) {0 j8 Z8 b4 P. S) x/ R$ }) f$ N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 f& D$ I' N5 s
  67.                 return -1;
    5 U8 I- I! j) l9 [- R
  68.         }5 w6 P8 i4 ^2 N# m+ s& C/ \. |/ A

  69. $ n3 I4 t; {/ S3 A) j7 K" i( |( ?
  70.         return 0;9 [2 V2 Q) w' z8 n; S
  71. }
    ( d: m8 z+ ^4 x' A
  72. $ f5 O6 m0 t, x* ^4 b
  73. int main()
    9 \/ H$ C5 @" o$ j( f* T/ Y
  74. {9 ^+ @5 `5 r6 f) D: `  C2 c
  75.         char c;/ i& u- X# j/ q# D- w9 ^- U! V% D* E
  76.         int i, macs[6];
    4 K, ^% e+ u/ w' Z/ a) {% P
  77.         unsigned char mac[6];& \( J$ Q" w, e0 R# b. K- X
  78.         unsigned char stbid[256];
    & M- I0 A$ `* G9 o% O# u. k5 ]

  79.   F# T+ P. o3 A; P  c6 I5 M
  80.         if (readparam(mac, stbid) < 0)
    * {8 C% o. _$ W+ r6 o+ y
  81.                 return 1;
    7 H: {  e4 _) I+ f* C' b& p8 }

  82.   v6 a2 m; k1 c; F; q* j7 m
  83.         printf("Current parameters: \n");% O! M* d* {1 r
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - Z8 U0 q7 k" H+ g* T
  85.         printf("  STBID: %s\n", stbid);( o" v6 ~+ K; q+ w# i. X. }/ u3 t$ X
  86.        
    ( y& n8 n9 ]8 I/ s* c5 {- [* y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  Y' \! `3 R" c, x/ k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. W6 p6 @8 a0 N4 z9 f
  89.                 printf("Input MAC error\n");7 C' e5 r7 Q1 s6 }0 l& d5 f
  90.                 return 1;8 _$ M# k9 J% m) g- m* z
  91.         }
      X) `0 S1 Y: r  x# I1 [8 `
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) a  d3 C# z( i! _0 o6 h4 m
  93.         printf("\nPlease input new STBID: ");
    : R7 r" z/ S+ P; g  Z/ \
  94.         scanf("%s", stbid);
    & j6 M2 Y' M  A7 z& Z# l  c' H4 u
  95.         if (strlen(stbid) != 18) {$ n* j5 J& X4 B  d. ?
  96.                 printf("Invalid stbid\n");
    4 o" h5 V1 p% t8 r
  97.                 return 1;
    6 U8 P. B2 W6 n, r  J
  98.         }9 E6 {0 U* p0 h$ J2 a. D- H
  99.         printf("\nNew parameters: \n");
    ) z! D- g) x( h& i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& X% C( k0 s) x+ n) T7 [% W
  101.         printf("  STBID: %s\n", stbid);- [5 h) s0 q1 @" U8 |( o
  102. 0 @4 U. C5 x: z  _8 ~+ G3 c( k
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 b0 U9 R' O7 c2 v0 i/ D
  104.         for (;;) {! }9 j9 ^! O9 V$ b1 f
  105.                 c = getchar();
    ; Z& m5 d8 h& T# Y" g- W# C
  106.                 if (c == 'y' || c == 'Y')
    6 q/ m: t- t9 i  K; ^1 Q+ f
  107.                         break;" O' u+ p8 W$ y0 B8 K% m$ \* g
  108.                 if (c == 'n' || c == 'N') {7 D4 m+ r8 T2 G* J1 o; V8 M: F* m
  109.                         printf("\nAborted.\n");7 P' y! `# M3 ^* p; z
  110.                         return 1;) k8 }, l, J1 R8 Y1 M, a# G
  111.                 }
    ( d- @( D8 u6 t9 h! v7 }0 K
  112.         }
    ! S3 d4 g. ~1 G3 O
  113.         if (writeparam(mac, stbid) == 0)
    9 H+ l* n8 H/ z: Q; i% g/ u" x- e* t
  114.                 printf("Parameters changed.\n");
    + r' t) q- w+ j( z/ M5 B

  115. 0 U8 m. C0 p" o3 j7 _
  116.         return 0;" S5 M% i" b9 P* R8 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 , u! ?4 c# M9 O5 w2 `7 d  J
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
* Y% [0 W( Y- A5 y* ~
你用的编译命令行格式是什么?
0 I7 a* G9 w3 N6 |; X
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部