查看: 17784|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    $ G( m7 s/ c$ j5 n' K3 w) m: \
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig% z1 e8 `( V7 \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 p/ v0 H5 ?; i' G: u4 [
usage: himr <address> <value>. sample: himr 0x80040000 0x0% S! X) k% {+ A0 |  v
/ H5 s+ U4 }  F' i" Q
# d6 ^6 I/ I# |; A. k
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 j4 [9 h7 Q1 ~" \+ i$ R  f

. }' y4 t% Y% f) H, t3 L  j补充内容 (2012-3-8 09:42):9 ?0 v9 A3 n, }, N: a$ v
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* B9 z! k4 n0 c. O
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
2 [6 h& @. k$ J* h- @. h' ^7 C5 O  A  p7 _5 p2 T4 Z4 L5 B! {( }
himr <address> <value>. sample: himr 0x80040000 0x0% E9 K  |# S' @; P
6 x0 j! y! R2 R, ]& J9 `
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 I! G. ], u* N5 |) O$ y
himr 0x80040000 0x00' d/ F3 O2 A, S2 X
himr 0x80040001 0x11
# s( |) L+ e- o) w' @9 q/ W- jhimr 0x80040002 0x22* `2 _& c6 w- b( q; H; W8 ^1 s) M0 h% c3 G
himr 0x80040003 0x33
9 t  b& a* b  q' [3 hhimr 0x80040004 0x44
, I5 ]4 B) L- [* s; x; H8 lhimr 0x80040005 0x55* f6 `; q8 Z/ r' F5 v* U

- t( ~& F, ~' S) H; Y8 P5 M/ N4 }5 X5 lSN也是类似。* A2 k+ o: z8 x" S3 G2 m% B

5 _* s, p/ d& Y0 d9 z9 a5 y4 \现在主要是,谁告诉我们MAC和SN的地址?" b2 B3 M9 |. O" v& X
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
2 q6 s, ~9 I; I: w  i" b3 g一直想找到运程修改MAC和SN的办法,苦于无解啊

, k; X! e0 S( z- `% ]: w& y- |源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
5 L7 p# v* l  r* I0 w+ s2 k
. x7 }- v+ `' l+ A修改的代码早有了。到今天不会编译。' J: O0 a# ^4 @
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 M* G6 B3 r: K
  2. #include <malloc.h>
    $ ~6 V5 H+ J- |% f$ f5 C! M
  3. #include <sys/types.h>) E$ M9 c1 t" D. `
  4. #include <sys/stat.h>
    % p  u! N1 J+ U' L& \! U2 j# @
  5. #include <sys/ioctl.h>' Z# z1 r5 I( K7 M8 z
  6. #include <stdio.h>
    3 X1 z4 }$ u. e8 m/ b6 v! d
  7. #include <string.h>
    2 K& Z6 F! M( Z8 P7 v1 R9 `0 A5 D
  8. : t+ ]8 ?2 `% G4 C0 n% \, t
  9. typedef struct {/ X. Y+ P  P" V
  10.         unsigned int        e2prom_cmd_sub_addr;0 A" c4 W- U( y5 I
  11.         unsigned int        sub_addr_count;
      [0 Q+ \3 x& J8 l( h
  12.         unsigned char*        e2prom_cmd_data;7 c. u, ^) J- @% Z8 J  ^, k. `; Q6 [
  13.         unsigned int        data_count;
    3 t, |* v$ Y+ Q; j
  14. } e2prom_s_cmd;
    : X7 ~3 S, D9 P; X/ E
  15. 0 k0 D% @4 w+ w
  16. #define E2PROM_CMD_READ 1
    : P0 C( d' l, J, j
  17. #define E2PROM_CMD_WRITE 2
    7 [6 X  V0 _1 z: f* P% w
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( b* P% T9 N5 Q$ x) f3 q

  19. ! D; t( F* I3 j3 Y- A
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 M# ~5 B6 b, l
  21. {: W9 l' k; P/ P6 U$ d
  22.         int fd, ret;4 h; N* K0 f+ i6 ^! ^1 f
  23.         e2prom_s_cmd arg;% |7 I& U. k6 Q7 |
  24.         unsigned char buf[0x18];
    4 I1 u5 O3 V' v5 u, P7 d

  25.   [4 O! D: c. s% \( H: L/ O7 r
  26.         fd = open(E2PROM_DEVICE, O_RDWR);* z4 o6 J( r9 h
  27.         if (fd  < 0) {
    9 A! a7 q! H* _) x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) j( z3 I) C  f
  29.                 return -1;* ^' F% @: o" Z# A: o, S
  30.         }
    0 t1 i% i* s: {" x
  31.         arg.sub_addr_count      = 2;
      {0 Q  }8 J  o% {, J8 g  U
  32.         arg.data_count          = 0x18;& S" _3 ]0 c9 N3 C$ u0 I
  33.         arg.e2prom_cmd_sub_addr = 0x290;& r" G% j8 J. G& T
  34.         arg.e2prom_cmd_data     = buf;
    % I$ G0 S5 B2 }+ K4 o- k
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      K1 z0 y: H& ], `2 z
  36.         if (ret != 0) {
    # z8 Y. d% I+ C4 a2 K2 L4 \7 Q/ Q; `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - O; _5 ~( z( L4 a- I% |1 ]
  38.                 return -1;
    6 \+ _& A7 Q3 r- D8 N! x6 y
  39.         }8 b6 i% Z- m1 r
  40.         memcpy(mac, buf, 6);3 M" @8 V; k, q, U1 Q8 ~. A
  41.         memcpy(stbid, &buf[6], 18);
    3 l6 z$ Q) G7 }
  42.         stbid[18] = '\0';
    9 z# {& G  M$ }

  43. ; \% P; U6 x7 U- F  Z4 b
  44.         return 0;7 r0 p5 M9 L$ D+ \1 A' L* P
  45. }
    8 w4 a3 H, m  H8 I$ P# |! K% R" n

  46. ' D( t1 P* Z! q1 N5 K; D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 ]! h0 n0 l5 F5 ?
  48. {; ]0 v- C: l6 o* m9 o1 a  a
  49.         int fd, ret;
    1 E$ [; h/ O! N: E- q$ Q
  50.         e2prom_s_cmd arg;
    : l% n  \+ ~0 g, U% L
  51.         unsigned char buf[0x18];
    7 G" ~4 z5 ]$ P! B5 `, Y- S$ O
  52. ' Y+ ~1 u3 j- a& ^3 G3 h+ D
  53.         memcpy(buf, mac, 6);8 U$ e  {- R5 U# P9 @/ e9 K6 C6 f
  54.         memcpy(&buf[6], stbid, 18);
    8 d# W- j" B+ ?+ v7 o7 T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 Z6 T' D( ]1 S8 g
  56.         if (fd  < 0) {
    , c, M' M- V3 W8 s
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 U8 M$ y+ Z/ |, S) j
  58.                 return -1;$ U$ V' k, Y) ]$ I
  59.         }
    - l/ \) n5 B" O2 Z& V: X) I
  60.         arg.sub_addr_count      = 2;9 p! G* }/ `& ?* C
  61.         arg.data_count          = 0x18;9 ^7 R3 v5 C* h- a- q/ e# j
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( a% N$ d$ y% v2 J! ]
  63.         arg.e2prom_cmd_data     = buf;
    + d3 E/ G, \0 Z$ O' b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# ~2 ]& u+ e! c  j/ F2 [* [  h! R
  65.         if (ret != 0) {4 q; M% H' @. M" M, {4 i
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    8 d  h6 Q3 ?, u- w: [9 x
  67.                 return -1;
    2 j. _) \3 ]5 S# ]
  68.         }
    4 u  }% B5 x. b
  69. 1 t$ I9 B* ]2 n3 g2 x3 k
  70.         return 0;
    5 g3 K3 a5 _+ m. F
  71. }* _) N9 W' T1 t: t! h: M% f! Z
  72.   _* v! c: m* t
  73. int main()% B5 J4 k! a0 K) G
  74. {
    + e4 z! s5 y; O3 J3 t( h4 D
  75.         char c;
    / e# u) s7 Y- g; t6 Y
  76.         int i, macs[6];) U/ V# w: I4 p# q7 s
  77.         unsigned char mac[6];
    0 s3 T( f. O, F  S9 |& ]. j
  78.         unsigned char stbid[256];# i8 P( N3 t" w  G3 [

  79. $ c3 r# c- x5 ~8 s. y
  80.         if (readparam(mac, stbid) < 0)0 c, A+ Q4 x1 [  H- R
  81.                 return 1;8 [/ d0 e8 t5 h

  82. + g3 u& \/ }( _; t6 i# v
  83.         printf("Current parameters: \n");
      D( p2 M1 z1 W) X$ K- y! B
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % s) J4 C* T. {+ Y+ _
  85.         printf("  STBID: %s\n", stbid);. J. h9 I' p; `3 l- z
  86.         5 n+ s5 `1 Q& u2 G! g7 p7 f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 p& X& u6 Q6 v* Y* \4 b5 I" ]
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : w' T+ b* g+ C; c* i% ]" W1 K) d
  89.                 printf("Input MAC error\n");( t* h* u# r4 {3 B3 b
  90.                 return 1;  h1 W: s; U  q" U( h
  91.         }; [) X& J, \; i( J' P$ o
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * y& ?8 D6 s' x
  93.         printf("\nPlease input new STBID: ");& g( Q3 n: _# t# ?2 ~7 i
  94.         scanf("%s", stbid);* p" e) K+ r& u
  95.         if (strlen(stbid) != 18) {
    * W- l' y! a7 y- s. Y7 p9 k. N
  96.                 printf("Invalid stbid\n");
    ; A& i9 z2 J* f" B7 j! a
  97.                 return 1;, A/ @. S9 v; F9 p: L3 N, K* \% N' @
  98.         }
    ! H' t" O0 M+ Q' }) i0 ~9 ^
  99.         printf("\nNew parameters: \n");: a- ^5 U9 \; i' K9 m% B
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. _. u: ^5 Q9 ^3 B9 k
  101.         printf("  STBID: %s\n", stbid);
    ; Y; M0 ]+ n- a2 `

  102. , b' v% n4 B. @; x
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    5 E5 H* p+ I; B  G
  104.         for (;;) {  @& p) F8 X5 W$ e7 h- z
  105.                 c = getchar();
    6 [' _6 B9 L4 D4 c$ Y
  106.                 if (c == 'y' || c == 'Y')
    / v% C$ Q0 A2 L+ u0 j! q2 g4 k
  107.                         break;
    $ [1 M! k( V1 C! d: R8 C) o
  108.                 if (c == 'n' || c == 'N') {8 a% ]( h. g# o
  109.                         printf("\nAborted.\n");
    1 I1 y2 \! f2 `# W8 G6 N4 x
  110.                         return 1;
    $ Z# e+ Z" H8 o8 m
  111.                 }
    * a8 R  Q7 A0 R! q, C+ l! i
  112.         }
    3 n! `4 q$ i# p
  113.         if (writeparam(mac, stbid) == 0)
    ( B& b$ j8 H; H: D& ^. y% r
  114.                 printf("Parameters changed.\n");- o8 e2 x- s1 a. A. Y

  115. : S6 |9 {' j4 ~% |: h
  116.         return 0;
    0 O. B9 }# V: }' J) f
  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
, c6 ]7 l: p: E, [在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

% ~/ n, s: J, t, J( @+ z你用的编译命令行格式是什么?0 L+ \- W% J" `. \8 @" y
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部