查看: 17368|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# p. ]) ~; w9 ?' q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 o" o* g; G) ?  q; D
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ F$ H% {, D$ O- n0 `
usage: himr <address> <value>. sample: himr 0x80040000 0x0
3 @+ C7 \' V! n6 s, M0 f
/ s0 a0 `: W  j
2 f& Z. Z. ?" r2 U+ ^不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
" L% [/ P  d, g3 R# _2 {3 K  n8 E
8 Y& t+ H1 H% r1 R: e9 c补充内容 (2012-3-8 09:42):4 ~, {0 G1 V) G' G+ b
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" e' x) T; @9 @" D3 n$ L) w这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。" F' ^: b; l) H! p
+ Z  l; g! h5 q
himr <address> <value>. sample: himr 0x80040000 0x0! b9 F* i- w/ ^1 U4 O) S
* `8 x4 S" D& ?) b4 Z# w
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, ~% i! v3 b( R* a' ]/ f8 F- t5 \7 Jhimr 0x80040000 0x00
5 c+ m6 d  T8 o# u; jhimr 0x80040001 0x11& g8 H' r$ R/ O: S6 d; Z
himr 0x80040002 0x22
( e$ K- t: O8 |1 P' Ahimr 0x80040003 0x33( c1 a4 }1 i$ ]3 I% V. s9 A2 y# ~
himr 0x80040004 0x449 h! g. d( W2 x
himr 0x80040005 0x55  H% @. w3 Q* j1 E, `
0 o, f% W# _  M
SN也是类似。
9 S8 s5 P8 ^, G9 E% A# _$ E# @1 S# e
现在主要是,谁告诉我们MAC和SN的地址?( _) B, k- U. x/ V$ D; _
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
. J5 {" ~. L/ @* t# ?) K一直想找到运程修改MAC和SN的办法,苦于无解啊

4 H: Q6 F' o' ?3 Q0 Q源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% F) G7 T8 d8 c4 [- j. e* x5 K! ^9 A+ N; O8 I/ w0 c
修改的代码早有了。到今天不会编译。% E& H; f7 E- R& [" J+ V7 n, v
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / i" w! j0 ?( O6 Y
  2. #include <malloc.h>  K) p5 U, o+ C+ f* {* X; [: Q
  3. #include <sys/types.h>
    5 A. k# o/ ^  S. u' b
  4. #include <sys/stat.h>% M% x' q! X# N* o' _+ C9 n* j* V
  5. #include <sys/ioctl.h>
    2 `- J$ {" {5 H- E5 I1 F
  6. #include <stdio.h>
    ! H9 T' ^+ k) o0 E5 c; U% s( v
  7. #include <string.h>4 q$ P. z! e) A

  8. 6 N' D; i) _! W( V4 g; u
  9. typedef struct {6 K2 B5 A9 T+ ^; H
  10.         unsigned int        e2prom_cmd_sub_addr;
    7 i) D4 k( R: `2 ]3 d& W# n
  11.         unsigned int        sub_addr_count;
    ; ]9 e- J! L$ e" W- Y- F
  12.         unsigned char*        e2prom_cmd_data;
    6 a6 w6 G) B& p3 z: j
  13.         unsigned int        data_count;7 s7 @: |8 z2 _. ]
  14. } e2prom_s_cmd;
    5 A9 M3 H4 d$ m& h

  15. / L3 N  h& a1 u- W
  16. #define E2PROM_CMD_READ 1
    . \# }- W8 _2 U: R) j" T& V( G( E
  17. #define E2PROM_CMD_WRITE 2+ ]1 Y# w7 P6 w
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    4 p6 [1 T3 D" W) d1 k7 w  H

  19. 3 {& c# |" \) J% ~5 W" g! Q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- l. }, v0 k3 U* x4 x% n
  21. {
    7 V- Z2 B4 v. G6 ^! p+ B
  22.         int fd, ret;, b0 A" q; `+ ~7 R3 T- Y
  23.         e2prom_s_cmd arg;
    ! x' s$ ^# X# V$ c  A
  24.         unsigned char buf[0x18];
    0 ?1 }8 G( {- S$ n

  25. 9 \' I7 _' t3 M/ T% s; P" Z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: U/ ?- Q7 G% U1 I3 L
  27.         if (fd  < 0) {! @- w7 ^. [! ]+ G, B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 E5 _: ^- F. a  @) V) g  Z- R
  29.                 return -1;
    . O( k: B6 ~7 p$ q6 D3 U! M; p9 {
  30.         }9 U) y/ P+ k) D9 j
  31.         arg.sub_addr_count      = 2;, \. L) T6 G$ z6 [( C+ D
  32.         arg.data_count          = 0x18;# m% D2 c, w4 T, Z
  33.         arg.e2prom_cmd_sub_addr = 0x290;$ |& E! n; F" ^3 f6 b5 p/ ?
  34.         arg.e2prom_cmd_data     = buf;8 x& P% T- f0 L  p( s! `* U
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * [! E1 w( ?4 e, P# E4 D* _- @
  36.         if (ret != 0) {
    % V- k1 a/ e% x' t9 _2 Q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & x: v2 z% j. E: p6 \2 l4 l
  38.                 return -1;
    # X/ Y. k" y8 J7 Q+ p
  39.         }
    & A: f( N0 R( V4 n9 b2 M3 f
  40.         memcpy(mac, buf, 6);3 D% M% T7 N- T# k& [) O6 `* W
  41.         memcpy(stbid, &buf[6], 18);
    , u! Q1 d0 E7 F& c* g3 @
  42.         stbid[18] = '\0';4 S0 }" O- M9 b5 M; D4 z

  43. 7 \/ `  i5 C- A9 J# C
  44.         return 0;
    . c( k2 }3 q5 [5 Q1 G- O- N0 s9 r5 h. L4 x
  45. }
    7 j! _+ G: y! h* p) n

  46. * M' ~! o! C( X: l: w( T/ G# q5 t' W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    " N4 A7 k  f' |) _
  48. {
    # |! J8 j! t% \8 t* u
  49.         int fd, ret;
    - B( E0 _- T) e- R  D( w
  50.         e2prom_s_cmd arg;
      t3 i: |' H6 t% g; k
  51.         unsigned char buf[0x18];5 b9 c' z$ P0 }# g, ]4 E' B

  52. / d/ ]  L9 I% |2 m. N* u# F6 o
  53.         memcpy(buf, mac, 6);
    # l8 K5 A# Q& F# s' |3 O8 A8 L
  54.         memcpy(&buf[6], stbid, 18);
    ' j! h3 X. T7 ?- y. T5 D* L) O
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" g. y( E* ]1 x
  56.         if (fd  < 0) {
    : r+ C; `1 l& D: @
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - c1 T' P& ]: a( \
  58.                 return -1;6 K$ U$ x3 ^- D* Q! U3 l
  59.         }5 [: `! F* r' L  E2 [5 {8 ^
  60.         arg.sub_addr_count      = 2;' T: w! y7 J  |6 W$ s7 C4 t4 {
  61.         arg.data_count          = 0x18;
    4 `* R! O' i( j& a
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      z/ m1 A' M" X; B4 |! O
  63.         arg.e2prom_cmd_data     = buf;
    & P( u" L5 ~* ?1 X0 @- i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# q$ `$ S) x9 ~& \; x
  65.         if (ret != 0) {9 E  I0 n9 L) n1 w' e/ y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    " l1 I9 f. K: f/ w! e" t3 P
  67.                 return -1;$ Z0 a6 G* j; F
  68.         }
    ! W5 n; G$ n0 h+ E* T. ~

  69. ) g# F2 Y7 d! F; ]. {
  70.         return 0;( `6 h. Q; u/ [6 l9 |
  71. }
    " C" z( s* |% y: O9 x0 u" Q  b% g

  72. % [6 v1 h6 t+ C
  73. int main()4 s4 D- z- `! O% ~& L5 B
  74. {
    ! Q8 G5 O* J9 J( Y4 b/ v0 e+ ~1 m
  75.         char c;
    $ z7 _$ d* A5 A4 m
  76.         int i, macs[6];8 Y, }5 q! K7 p3 O2 U1 @
  77.         unsigned char mac[6];1 a* ^* D8 b, s; w" x; D6 ^4 v
  78.         unsigned char stbid[256];5 P0 E% Y" M9 q8 Y& K

  79. 1 \( i( a3 K  Y" s
  80.         if (readparam(mac, stbid) < 0)# J3 D3 c/ ]' c, e0 x
  81.                 return 1;
    & f# E. g7 K2 H1 b

  82. 5 |1 o3 @2 H9 v& g6 r8 }; }
  83.         printf("Current parameters: \n");
    7 z! v: {+ L" H9 h
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - [  B2 l' f! m2 ~4 t
  85.         printf("  STBID: %s\n", stbid);0 T  u1 K# I" C+ r# O
  86.        
    / k4 a$ _! \$ m6 H
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    0 f' [/ w6 K; ~
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! H) V5 K: g+ I6 v8 D* b
  89.                 printf("Input MAC error\n");
    & `* s1 x( I/ w6 c( i
  90.                 return 1;3 _: l! [6 F+ _# [6 s' x& W
  91.         }
    : Q, @( U+ ]* F8 a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # g$ V( B2 `- R; |* L/ F
  93.         printf("\nPlease input new STBID: ");/ Z& r* E# g% I4 e% h1 l' L
  94.         scanf("%s", stbid);! S" j/ _: v- h0 {
  95.         if (strlen(stbid) != 18) {
    ( M* z, z" s  h6 M) a
  96.                 printf("Invalid stbid\n");
    7 N' E5 X) z" Y' Q! U' D2 t( i, ~( E
  97.                 return 1;+ l$ `) d9 E( `
  98.         }
    0 O: A3 O& O/ M3 n  p- X, v& W
  99.         printf("\nNew parameters: \n");
    7 l; s) G/ d. ]* V2 g
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " P9 Y) j, t2 r5 Z4 F6 f
  101.         printf("  STBID: %s\n", stbid);" V9 {, I3 s6 J. m8 Z
  102. 0 Q+ u! ~+ ?! R
  103.         printf("\nDo you want to change paramemters? (y/N) ");  U) y, G1 |% [: \
  104.         for (;;) {7 M; p3 n3 i; ]5 c) m& z" a
  105.                 c = getchar();* j2 M. O5 Y5 y
  106.                 if (c == 'y' || c == 'Y')
    1 ?# v# l+ m1 m8 C6 P! x
  107.                         break;
    , G) D% `0 {, g8 \7 T$ `
  108.                 if (c == 'n' || c == 'N') {
    . x% E  t7 k) T( k
  109.                         printf("\nAborted.\n");- n/ {6 S7 R4 \/ v& {9 h
  110.                         return 1;
    & O( T/ @( e7 b6 c5 v1 P7 {
  111.                 }9 ^0 h- N7 |& Y
  112.         }( e/ e4 P- I+ \& s; [, n
  113.         if (writeparam(mac, stbid) == 0) 9 M# T4 s% |. e; \1 o# l+ M
  114.                 printf("Parameters changed.\n");
    : B" v. K/ U4 ?4 y1 ?/ j* x+ I
  115. , I$ R) V6 ~- P; A' D: j
  116.         return 0;7 l) W' k  D5 q6 X! }, H
  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
) s6 u$ j( v9 e7 A2 D在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

; I7 w! e1 |1 Q: W你用的编译命令行格式是什么?$ ^$ y- y& r& b
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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