查看: 16204|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ! G: c; B, ]+ Q8 i) w, x  B- P9 Q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - c; @5 w1 M% E: y* m4 g% r! L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:7 B# ~5 _9 w; f3 J9 c$ K2 x
usage: himr <address> <value>. sample: himr 0x80040000 0x0; a- ~/ N5 w7 J) c, Z, E8 c/ o" p6 X

7 a) H( e2 a% g" q, `% `: U; I! e& R! |" Y) I( D0 }9 n: `
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 I: x8 W# T& F# f
+ }' s6 |+ I: R
补充内容 (2012-3-8 09:42):
+ |& v1 z/ Q: k3 y% Nhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( R- a5 _# F1 O
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。0 g6 Q$ y0 \5 Z2 y- L: @" r

5 |- n7 ^: J# u# {himr <address> <value>. sample: himr 0x80040000 0x0
0 w. A4 h! e/ i2 t- ^; {$ }+ D1 \2 H
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ U% h' @4 \! c3 a3 P6 khimr 0x80040000 0x000 y. F; f, e8 N* b
himr 0x80040001 0x118 m  `! f; ^5 p2 D
himr 0x80040002 0x22
  B/ q9 @. d7 ^: C6 G  Thimr 0x80040003 0x332 n) h) n' x) E" F+ |9 x
himr 0x80040004 0x444 L5 q+ R% ?  h8 m9 h8 _. W  Q) m; u
himr 0x80040005 0x55, \* o, W* `& h0 N! a& v* M

1 _6 }2 y# d1 Z4 P8 _SN也是类似。
2 k# L, ~4 [, O5 Z* k& F* d, w" D% E' {2 u0 N* ?# i: R( G+ R* M7 J
现在主要是,谁告诉我们MAC和SN的地址?; R& e9 f' k  g" C9 Y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
. ^5 N1 K" _) |& ~) P# Z: B1 S一直想找到运程修改MAC和SN的办法,苦于无解啊

3 ]) C( ~3 G; e- w. [源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% H% \1 O. u* o( R9 G6 M
* X6 r9 A3 D8 W  q2 i7 M修改的代码早有了。到今天不会编译。; Z/ P# l& ~6 q$ t6 S& ~, O! o/ ^
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  A/ |: f# Y) R! R
  2. #include <malloc.h>5 A9 E1 M! R# ^  }3 f" R8 p* U
  3. #include <sys/types.h>, n, {+ h4 k$ P+ Y
  4. #include <sys/stat.h>( p- {: q1 K; c" X$ E) N$ l/ t
  5. #include <sys/ioctl.h>4 C3 Q% ~% o6 M! o' n+ n+ K
  6. #include <stdio.h>7 z' E6 s! e( e3 F6 [; V
  7. #include <string.h>8 z5 K  R! j  I$ z8 G$ O. R+ J( b
  8. 2 U7 [' Q$ p5 c& a: k" Q& E
  9. typedef struct {
    7 t6 }5 ^3 N8 {
  10.         unsigned int        e2prom_cmd_sub_addr;
    , ?% C% p. W2 i# Y
  11.         unsigned int        sub_addr_count;
    % }; `0 H+ u8 Y( `% ~! J
  12.         unsigned char*        e2prom_cmd_data;3 S0 f4 Z  U, R4 K; m" l$ q2 P$ J
  13.         unsigned int        data_count;
    ! U; U9 \. G0 x# ^
  14. } e2prom_s_cmd;7 a: o1 O) j/ u+ O

  15. / G2 Y$ N* _) X+ m0 C
  16. #define E2PROM_CMD_READ 1
    7 F( E' q% X: k4 J' \& J
  17. #define E2PROM_CMD_WRITE 2
    % z: f  Y/ Z+ h1 [& d: G1 [, f, C
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  y- u! C4 B& X

  19. ! y/ O) N0 l5 M9 b) q* e. o" c
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ x1 a! n# h* a6 {7 d& e
  21. {  x7 L0 U& _! f: @
  22.         int fd, ret;8 ^4 i4 U( M# R$ }
  23.         e2prom_s_cmd arg;
    ! U, t5 I+ @8 W! I' q3 u. P1 ^
  24.         unsigned char buf[0x18];
    ' t7 R6 a$ Q8 V1 I% C+ E
  25. 3 H. w; ]; i4 g0 h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / u5 N+ ^6 [0 f* F: D, ~5 R/ V
  27.         if (fd  < 0) {! Y& U5 ^+ B$ H: Q! K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( N  ?! B( n$ B0 {
  29.                 return -1;& j, D& W% _* Y# r8 }5 u# n
  30.         }+ e; {: f( a8 B9 F7 F/ |9 t: x/ @% l
  31.         arg.sub_addr_count      = 2;
    0 C9 M2 q5 p/ z( S6 `8 `9 {
  32.         arg.data_count          = 0x18;
    8 O, r" s  b2 G! Z2 G2 f5 O& d
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    * O* N3 C* u6 Q1 Z! K
  34.         arg.e2prom_cmd_data     = buf;
    , B8 T0 [' r: a/ x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# ~, \$ ]# V7 u9 d3 l
  36.         if (ret != 0) {* [* s# Z# A5 T
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 I+ g. B! x, [, R# m2 }
  38.                 return -1;' ]6 {( e" ]) Z% m# R
  39.         }' k6 V+ z3 G& k7 X0 g9 x! M. Z
  40.         memcpy(mac, buf, 6);8 V; Y' q. l. o, E  }2 @
  41.         memcpy(stbid, &buf[6], 18);
    5 I" V2 `; }- N/ X
  42.         stbid[18] = '\0';
    . {+ q' H( O7 U: q! g
  43. 5 L* c, i, z0 W
  44.         return 0;
    7 R; _& f0 ^5 d
  45. }6 ~: R; F. x3 o& O+ D5 ~- F

  46.   M! E0 T( x  v' E( f/ b$ Z4 I& q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ D. s4 X+ I4 I0 W: H4 _( I
  48. {) k5 F8 w* A! p' b7 B" h
  49.         int fd, ret;1 _0 U, _0 ^9 C: K# Y
  50.         e2prom_s_cmd arg;
    ; ?$ y6 B% m( Q$ E. D2 ^
  51.         unsigned char buf[0x18];$ L1 @% j, R0 z! ~$ z
  52. 1 S9 k! C1 }7 X) n8 W; G( w
  53.         memcpy(buf, mac, 6);0 P7 M- @, J  X7 r
  54.         memcpy(&buf[6], stbid, 18);7 z5 w7 }" d4 o( m/ ~- x& ?, m( c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 t7 ~* n$ h9 u
  56.         if (fd  < 0) {- _' {: z4 u, Z. L
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & K" C( @$ C2 \0 B( q; ^
  58.                 return -1;8 i/ E- o7 ?9 p0 C! z
  59.         }4 f5 S% F8 C' A4 `6 y# E# ?, {
  60.         arg.sub_addr_count      = 2;
    4 W1 t* e/ _$ G- O$ B1 K6 E( ^
  61.         arg.data_count          = 0x18;6 ~! c. [3 @# x% X, d. S
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 r7 q7 j6 o- N
  63.         arg.e2prom_cmd_data     = buf;! n7 ~& T' M# Y3 K- m
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 ~# B8 V0 w4 c' C, F6 K3 C. W
  65.         if (ret != 0) {) H* k2 |1 r) _
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 d$ {1 x" z4 `$ S# l) ?8 ]% L& Q# p
  67.                 return -1;
    9 R" T" _3 _. {+ d. E
  68.         }
    2 ~8 i9 \/ ?3 k

  69. $ j6 T  n( v1 l7 |& O: C: ^
  70.         return 0;
    : ~0 R& w* n  k! y2 f1 W, E
  71. }7 z  n1 H$ U* J

  72. + U6 T+ s$ Z9 h- S5 y! w$ P2 v; F) ]
  73. int main()) W, ~) {) i8 g9 o( m+ U
  74. {8 u' C( z, q  J" ~% o
  75.         char c;* x/ Q% H+ N; c3 i! {3 L( ~( }7 o
  76.         int i, macs[6];
    & \4 t% |" N  ~) z+ I
  77.         unsigned char mac[6];
    $ L, U" S' \4 X4 Q8 e
  78.         unsigned char stbid[256];
    6 H# z& R* Q! {0 M# L5 }# ?0 _( v
  79. . M0 I% G/ l% O  ^
  80.         if (readparam(mac, stbid) < 0)
    , s5 |* r, w5 h
  81.                 return 1;
    & m  N% r! h& @+ \& F$ ~

  82. 9 v' N0 u/ ]+ @9 u9 x" A4 e' V
  83.         printf("Current parameters: \n");
    : J( @+ b' L. ], q5 Q  w. ]+ R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; f1 p4 ]  T) @5 |, W6 L
  85.         printf("  STBID: %s\n", stbid);8 ~0 d" F$ {( }6 t- \! Z
  86.        
    ! t& |6 m7 Y+ X5 u" g. {: G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; [7 y: j/ f& ?+ P1 w) E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {& \* m- b7 y( m2 \! I$ w
  89.                 printf("Input MAC error\n");
    + x, \" e0 j2 x' H
  90.                 return 1;
    8 q: u2 V' E9 l* G! \% H3 C" r
  91.         }
    ' e% _6 D2 v8 Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    / [1 u4 X3 ?. f; L) N9 H: a+ Z
  93.         printf("\nPlease input new STBID: ");' A. C- V) o. s, }6 C/ |" m4 e
  94.         scanf("%s", stbid);
    # L, @" X* j1 C. I! v
  95.         if (strlen(stbid) != 18) {
    6 p6 ~& z' ^% l% s4 ~
  96.                 printf("Invalid stbid\n");. h7 X( a1 U6 C! ?" a$ o' b
  97.                 return 1;( t; R6 y& ^' W9 H6 M/ g1 l9 m
  98.         }# |% E, O! a: s1 p; D
  99.         printf("\nNew parameters: \n");4 P6 K1 G& S" [% r4 m9 ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 n& N' P4 L* U3 I, N3 Q
  101.         printf("  STBID: %s\n", stbid);
    ; s# M5 F$ @% D+ h0 }, E; D

  102. ! x; [6 e/ T' C8 o: G( x8 n
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 _* `. s0 J% b) E1 m) B
  104.         for (;;) {. D! ~9 D) V  \1 @
  105.                 c = getchar();" q" }9 L) g1 G6 ]. G3 F
  106.                 if (c == 'y' || c == 'Y')
    3 u9 o/ M3 M/ `* m: {9 `: p
  107.                         break;
    & j5 J% C9 D( B; E  w
  108.                 if (c == 'n' || c == 'N') {& p$ S  d" r; R" F) \4 l
  109.                         printf("\nAborted.\n");7 ?6 @9 W! c7 c1 i5 q! i
  110.                         return 1;
    , K! A- f3 o* o7 o' F6 y7 l  W
  111.                 }
    / W- P* j1 t6 c& h# G; C) Y" P
  112.         }# F. Y5 l) W2 s6 X' b/ J
  113.         if (writeparam(mac, stbid) == 0) * J; c4 U# N' V6 a3 `$ d
  114.                 printf("Parameters changed.\n");
    . \2 Z+ r/ m/ |% ?( y- O
  115. ( `- o* k1 ?" D" h( K+ z
  116.         return 0;; ?8 I, R; Q8 C( X4 ]
  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& C, K) D2 x# A9 N2 ?' }5 q5 Y在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
3 r0 o+ u0 @  h0 i7 s$ ]/ c" i
你用的编译命令行格式是什么?
) e0 G* c) ]* H4 z3 A
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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