查看: 16826|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ( ~, |0 x% r: t  f) m, e) }2 h
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# R# |0 a0 W& z2 }: ^" ]
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
) S3 S, @9 w. h9 x9 fusage: himr <address> <value>. sample: himr 0x80040000 0x0
. B0 x  j6 s: `8 j8 {5 p# A
- w, n6 w( B8 A# [  \( i; k) }; X
4 n6 m% l0 }7 A不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# o4 Z, @- k2 M& W4 X

3 ]# L# v2 b& N) ^+ _补充内容 (2012-3-8 09:42):" I: B9 i2 o' k7 D6 i
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数+ n) I7 ?2 p# W/ x2 p* c
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。+ U5 s4 C  C5 Z$ T3 p

. O$ ?+ [7 S+ l" T2 S8 i) zhimr <address> <value>. sample: himr 0x80040000 0x0. Y% [, [- L0 u4 @. x6 A* R, _

/ ~' C# B0 g& i! _! ^例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 u$ a; @3 j) b5 @
himr 0x80040000 0x00
4 y( f4 o' T) p8 ehimr 0x80040001 0x11
7 D8 [5 C, a' ?0 p# Khimr 0x80040002 0x22
7 V+ _: m% q0 Q1 v+ Q9 s6 lhimr 0x80040003 0x33
: B1 m  A- h& whimr 0x80040004 0x44
$ @0 r; a: Z2 {0 [himr 0x80040005 0x55. P' j8 T: _4 B! h2 ~( g; o

- \: v1 [2 S+ N' R; lSN也是类似。5 @6 X) O- r/ v0 t2 N8 S

0 s2 a" A6 U. r, O) i4 D# i现在主要是,谁告诉我们MAC和SN的地址?. L# f" ^, Z7 R8 e, i
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 % ]: F0 O. I2 s6 b( T9 [
一直想找到运程修改MAC和SN的办法,苦于无解啊
. w9 K( V8 C4 j, q  ]' a
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 7 M5 t8 E4 C" N1 }
0 f0 O" Q: K6 Q$ ], _* I8 \9 D2 y) @
修改的代码早有了。到今天不会编译。# x3 H0 j. h/ q9 ~8 Y+ q/ n
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>1 }2 r/ o- R. I+ M' H; B; `
  2. #include <malloc.h>6 m3 T$ n- w% g; [' f" F) S
  3. #include <sys/types.h>
    ! h/ ~; t9 O$ z
  4. #include <sys/stat.h>
    & L/ [9 {6 t, _: S5 w9 X7 S
  5. #include <sys/ioctl.h>( N& j+ j; M/ P3 M( d+ Z
  6. #include <stdio.h>, T* e2 v& ]" B/ |8 v
  7. #include <string.h>
    1 J, t" q$ B+ K  y! S

  8. " s! q+ V7 I7 w1 Y/ z$ s; h% i
  9. typedef struct {$ K: x  l5 L2 }+ Q4 L, y
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 ^8 Z! h5 g* M" X! O+ J, B
  11.         unsigned int        sub_addr_count;* t0 k# e- a4 K+ x/ L# d( K
  12.         unsigned char*        e2prom_cmd_data;. Y& h' E  }4 q$ f5 _
  13.         unsigned int        data_count;- C: G8 D2 e6 G1 k
  14. } e2prom_s_cmd;$ b+ N! |! Y% G6 y0 X

  15. ' I7 [9 t8 O) D2 E$ o: y3 V! j
  16. #define E2PROM_CMD_READ 1
    : Q% s+ [( f' h1 _# @+ Z+ B
  17. #define E2PROM_CMD_WRITE 2& e7 N: j( H6 Z! p$ s& u
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' _* ~6 i$ |1 T& o$ M! \

  19. 9 f( M7 |1 Q' g$ c/ @; E% i$ g0 w5 T# b/ a
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! _; j- B8 N0 U: |; e
  21. {
    ; N1 o4 k7 ?8 l$ a! l4 d0 ~
  22.         int fd, ret;% G( G+ d. U" y/ m9 h& {  |
  23.         e2prom_s_cmd arg;7 E0 ?; r7 x; V5 L7 h/ T: [) p
  24.         unsigned char buf[0x18];! U' I( f$ O" h5 l. a  z1 g" d
  25. / E5 K5 R- T6 M2 q; ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 A% S, r1 @5 K: n8 N. W2 \2 j
  27.         if (fd  < 0) {" D  b) Q7 c2 \! j- d* _4 L# i3 V
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 S( @+ ?1 R) n" [+ P, H' N' D- C
  29.                 return -1;0 }0 k, i& a7 ^+ U( U$ G+ x2 Z
  30.         }) b9 G, v2 }# J4 z
  31.         arg.sub_addr_count      = 2;
    8 u) U- k* D; s2 r" K
  32.         arg.data_count          = 0x18;
    / I* h" }8 |( x9 W# ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;' a3 f, I1 _! t9 I, X2 g
  34.         arg.e2prom_cmd_data     = buf;2 K" y! s% }. k1 n
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 {) Y6 M" T& O1 Z8 X( k" u* x/ d
  36.         if (ret != 0) {, }5 {/ s# D% x  _6 q; y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 [, ~1 `6 n% S1 s; }2 u; L
  38.                 return -1;
    / H% R+ O! X( h! x( l1 ]  x5 D
  39.         }
      v: y' M$ {; C% ]' X: A+ J
  40.         memcpy(mac, buf, 6);
    , K% E: w3 ~1 K% i+ [& y
  41.         memcpy(stbid, &buf[6], 18);, X6 v9 [" f" E4 I( ~0 w% A
  42.         stbid[18] = '\0';
    8 M. j; b5 d2 Y, H  Q, r- b
  43. # X2 l* f4 |! K, w/ q3 t  h
  44.         return 0;
    ; C. U% H" N+ j. @
  45. }" a) P$ h: U6 b& k( ?% F1 ]
  46. : F1 M6 D, N0 R* y. G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 Y. f6 ?, b) r8 W4 D5 O
  48. {
    ' `5 r7 `8 N" V# ~1 d* T2 D
  49.         int fd, ret;
    + V: D9 I4 f' c: ^0 v$ i
  50.         e2prom_s_cmd arg;5 g6 [, |! F0 Y4 G1 ~. [/ I
  51.         unsigned char buf[0x18];7 p5 _  f3 }$ l" X

  52. * {9 K* r" K7 Z2 K9 j8 A
  53.         memcpy(buf, mac, 6);
    ( N# E% _) q1 n! _* D6 ~9 r3 Y4 B
  54.         memcpy(&buf[6], stbid, 18);. _% r- Z* L8 t4 j' P; m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) m5 A8 X: ?" q& I0 D3 A. r$ ~; i
  56.         if (fd  < 0) {/ Z1 [. X( L" `3 X5 y+ f9 ~$ h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 w1 j5 X% ?: y1 U0 o% x
  58.                 return -1;
    0 ^: Q. v* B) F4 p8 S' y& E
  59.         }0 @1 m8 M: t  J  [4 ]
  60.         arg.sub_addr_count      = 2;# I7 V* ^) R- d( D
  61.         arg.data_count          = 0x18;
    $ P, |! J! l7 _) d' e5 H
  62.         arg.e2prom_cmd_sub_addr = 0x290;" o) `2 Z3 S; N( ?. L
  63.         arg.e2prom_cmd_data     = buf;" ~- u5 o2 b. ]
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 U9 b8 r; T9 x* I; z4 N; k
  65.         if (ret != 0) {
    ( v. T. N4 e0 ~1 J4 l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    , Z2 i. B) q- l' p- K+ J' R
  67.                 return -1;
    - `3 H- k3 p. [$ G$ f) q
  68.         }
    1 h" X$ f& k( c. N: l: C" ^  Z" @

  69. 9 d0 b! R2 J8 N" m  J# W+ A5 o  f! d
  70.         return 0;
    . _) ]6 n5 Z. f7 N
  71. }% H1 n$ u3 ^* q$ W: W* s0 U4 W5 }/ D* r
  72. 7 c, c3 [+ o- p) w1 I: ^1 _
  73. int main()
    8 I. O. Z: R# Q1 f9 M
  74. {( F  E9 _) I- X+ z1 [/ N6 O
  75.         char c;8 u- ~2 H: C/ `" y3 D9 I7 P
  76.         int i, macs[6];
    ' ]% t# e' o3 f+ y- n, Y2 z
  77.         unsigned char mac[6];
    & g* s( C( h: A4 \' u+ t
  78.         unsigned char stbid[256];5 h8 r6 E" H7 s7 G( ?

  79. & |8 s9 T, F9 [
  80.         if (readparam(mac, stbid) < 0)# v0 v2 k) J6 ?* i
  81.                 return 1;
    + G# d5 y/ D' I3 G+ x2 l- |
  82. 0 K) e5 ~. }5 N# v5 q4 B& ~
  83.         printf("Current parameters: \n");
    4 H) k! B% P0 m+ C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * H/ s8 d5 D  L
  85.         printf("  STBID: %s\n", stbid);& h! R4 F) X+ `3 V2 t4 l* k
  86.         + F8 `' s" d  y& \+ G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    3 n4 Y- U; [1 g4 l: U) }9 Z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . L" G. Z8 G+ s
  89.                 printf("Input MAC error\n");
    2 B2 R: y: @0 n6 p6 o2 j) }
  90.                 return 1;
    ( `7 }$ N9 h; q0 m$ C5 ?
  91.         }
    7 l2 {! H6 Z7 |# N
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' V# O- s* V) _5 N. k( j% Y! I
  93.         printf("\nPlease input new STBID: ");4 x2 {) p5 a% }" s% w  m
  94.         scanf("%s", stbid);
    9 ?: m, K2 F) Y# Q
  95.         if (strlen(stbid) != 18) {6 |4 Y) H% `0 U% H, }/ C
  96.                 printf("Invalid stbid\n");
    ( v9 z  ]3 Q* {
  97.                 return 1;& Z/ a, R* X3 e" G
  98.         }
    - q' O( d7 B8 c9 u9 @7 v! {
  99.         printf("\nNew parameters: \n");) O0 S! w1 x% u* Q% l
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; g/ V. h7 b  u; b
  101.         printf("  STBID: %s\n", stbid);
    & P" _7 ]. l/ N1 p8 s0 h; g( ?( i
  102. 6 G% ?( ]8 x/ D3 r% _: T% q4 |" W- G
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . h' `, ~  `* r/ j( X
  104.         for (;;) {* l8 j; F5 R& s) c8 E4 b
  105.                 c = getchar();
    + n0 O# u  c) _0 l1 f- Z
  106.                 if (c == 'y' || c == 'Y')
    " s9 i3 k* @5 s2 n, E( W
  107.                         break;
    7 i+ A$ s! `0 v+ l
  108.                 if (c == 'n' || c == 'N') {- i: J) `" U) E
  109.                         printf("\nAborted.\n");
    8 I& @* l  U: I% q
  110.                         return 1;
    : |& ?9 ^* C5 v4 e8 {
  111.                 }
    : n' c/ Y! h  t
  112.         }
    2 {% U6 J, r* f  {6 C3 f, D
  113.         if (writeparam(mac, stbid) == 0) 1 ^2 V5 n$ r, x( c" P5 \
  114.                 printf("Parameters changed.\n");: N9 w. K1 G" A( ?1 q" {
  115. 1 R5 t3 _" r9 V
  116.         return 0;
    4 z' n: v4 g. K7 o; t
  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 2 J% M8 \- Y% c. U! J+ X
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 H' D% Z3 Y. u你用的编译命令行格式是什么?# X' l9 d) p, w& U& R8 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客服返回顶部