查看: 16672|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    8 E# t4 v& \7 @2 p2 V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % ], D; \2 i7 b& |3 I
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 R3 N, Q* ?2 N3 k" N
usage: himr <address> <value>. sample: himr 0x80040000 0x0
4 L/ ~5 ]4 @# A( R- t( h! O; a) k% ]/ Z: f) R6 b1 f) d7 {
; A1 a" B8 ?0 j& N1 H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
9 K: b; T9 z5 {: }6 b; p7 M
$ }0 h5 R$ J. a/ \补充内容 (2012-3-8 09:42):5 L/ }7 B  d. K8 v. U
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; W- D/ j  w2 u( Q3 Z$ _9 Z1 z% s: ~这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。6 r7 O0 |3 }. `0 s/ g

* I& r2 N( q: u0 g# [. ehimr <address> <value>. sample: himr 0x80040000 0x0) H$ D% [* B$ S2 O

$ S; S4 Y2 S1 i0 j5 K& u0 {* p6 t例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, ^* f3 _% P( H) l
himr 0x80040000 0x00. ~1 W( a2 j# ]( |, A: Q
himr 0x80040001 0x11
( H% m( H. S8 |/ `  hhimr 0x80040002 0x22
8 S8 T9 H! m. J1 hhimr 0x80040003 0x33# I+ n9 j! m, J& [
himr 0x80040004 0x44
5 J+ x: {6 A7 e% U2 ?7 L0 G7 Qhimr 0x80040005 0x55
/ p  D* N! ^  y+ e+ z+ F$ N$ i8 m  {6 H! j/ J' s/ Q, V4 d6 w/ m$ t
SN也是类似。; j4 @! e! C, W! _. D5 O
& }% n) b' t  e3 U- V& K& |
现在主要是,谁告诉我们MAC和SN的地址?
; M8 f5 c+ a& Q, C+ V. U5 V
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 {" R9 V, J1 E' g& \
一直想找到运程修改MAC和SN的办法,苦于无解啊
: C& M; a5 U0 @- G, C4 a
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
! z, K  \% z" |! q6 t' @/ ]- b1 |/ [* a
修改的代码早有了。到今天不会编译。+ g! d' ?- v  I0 T  ]$ W/ \. t
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>3 L0 F3 L5 A  Z9 x: y$ K( w
  2. #include <malloc.h>5 ]# h# f- G/ L
  3. #include <sys/types.h>8 x0 w' a2 J( X8 p
  4. #include <sys/stat.h>
    0 I: v7 k0 d# x* u
  5. #include <sys/ioctl.h>
    ! @! B& I; k% f
  6. #include <stdio.h>5 I5 n  X# `- N. W1 _+ z7 @7 _
  7. #include <string.h>
    2 ]# D; A( n0 F

  8. 8 a5 T( ?1 |+ M1 t" ]
  9. typedef struct {
    : }/ _) p  L# V* \
  10.         unsigned int        e2prom_cmd_sub_addr;: t6 l- i9 e2 D( _( m
  11.         unsigned int        sub_addr_count;6 D1 @3 n! S- g" d# f6 C
  12.         unsigned char*        e2prom_cmd_data;
    " p" }0 [  |% H5 i" G- l* O% D
  13.         unsigned int        data_count;* z4 n8 ?( E2 G
  14. } e2prom_s_cmd;
    2 ~( x7 x5 _7 ?: L( E+ y: }
  15. ' B4 e8 W7 N. f" E
  16. #define E2PROM_CMD_READ 1
    # ?/ y1 q" @) g* z
  17. #define E2PROM_CMD_WRITE 2
    # M: \4 J2 A- k
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 |& K6 q8 m, q5 H/ S

  19. ! X. R! O6 Y* o' g2 U9 b1 c
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    + ~% k7 V  v. m" z: o: S! F
  21. {
    / v* H! A; Q/ I# ^5 e+ w. p
  22.         int fd, ret;6 w/ w! H9 y( ^
  23.         e2prom_s_cmd arg;
    . P! l+ a: K4 U, V; q% _
  24.         unsigned char buf[0x18];9 Y" l! r- u" S! H5 L" a+ F
  25. ( W& i3 S' L' `- ?+ \. j- C5 q! z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ {& x: |+ r) f2 }- f
  27.         if (fd  < 0) {* p; E5 @! c" i" F- `
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : @: _6 U8 F3 n2 m# o
  29.                 return -1;3 M- \- O/ h9 f0 W
  30.         }: D% r) H& L. o  V- _" u
  31.         arg.sub_addr_count      = 2;
    3 u; b* v" b1 C4 A* `9 \- \9 z1 e
  32.         arg.data_count          = 0x18;
    4 _6 }% U4 k* n8 {( u' n: Y% L
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 p  i& j; r+ ~+ d3 d( g/ ^% n
  34.         arg.e2prom_cmd_data     = buf;( _+ `3 z" i& a: i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);9 O3 o8 t; `3 Z0 y+ ?. k
  36.         if (ret != 0) {2 c- V0 e0 s0 E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( o+ j- Q$ A9 C7 @
  38.                 return -1;
    . J, ?6 U0 e* i& x
  39.         }
    " |3 m5 k) G  Z) h
  40.         memcpy(mac, buf, 6);. A/ A9 G) X- k% h4 s/ f
  41.         memcpy(stbid, &buf[6], 18);& F. o( U- D0 R! V- O* g6 X
  42.         stbid[18] = '\0';0 n, R1 n6 e6 _5 O
  43. ( r& [* y& i( ?" \* I6 D# R9 ~
  44.         return 0;* b8 D! V0 C. g  o3 e6 {1 D
  45. }
    6 u( {0 ]) a5 F5 x

  46. 2 J% `( p+ ^# T: d( R3 w
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)7 Q) V! i( q/ E+ q2 q0 G2 }! ^
  48. {  V5 Y) k, {0 P9 q% B* `; S
  49.         int fd, ret;) @* j" m6 r8 G
  50.         e2prom_s_cmd arg;$ I( {* e" h2 v5 L  y) S+ n0 m. V
  51.         unsigned char buf[0x18];
    ( m9 F9 m+ Q: j% }

  52. ! s: L# Z) K+ n# L  X) T
  53.         memcpy(buf, mac, 6);/ p0 V2 P* ?: m" O3 |5 ~( I" R
  54.         memcpy(&buf[6], stbid, 18);
    " j9 D, z' z* A3 K# G+ s
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 R  W3 V7 t4 @" _0 L( `8 `3 Q
  56.         if (fd  < 0) {
    # w6 H( @( X7 \
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 [, _9 P' p! g6 J' v1 K4 j, v6 v
  58.                 return -1;
    7 l  U8 r- J3 i  x6 O& ?
  59.         }
    # B, g# X- M) L+ v: K
  60.         arg.sub_addr_count      = 2;' s" h, W  F/ V5 w: }+ ^
  61.         arg.data_count          = 0x18;
      T. f7 e9 i, K0 D
  62.         arg.e2prom_cmd_sub_addr = 0x290;: E9 k" t; s6 a( U( C7 e! I! Q, J
  63.         arg.e2prom_cmd_data     = buf;
    6 Z9 l) ~$ s: ~: C- X
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 C- x6 s# ^: ^7 E9 Y( O
  65.         if (ret != 0) {8 u. D+ Z2 A4 s6 m6 k
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : W  _; k, U6 t1 r
  67.                 return -1;
      H" ]  p) K3 o) `* C) }
  68.         }
    - ^- c. m3 _4 z4 V

  69. 8 H( V, q' [4 M0 Q
  70.         return 0;( k  H; I8 Y9 v2 |+ E: B
  71. }
    - H9 r4 ~7 o- O( E% L' t: ~

  72. $ G. M, A# |% i) A1 `& P5 ~! K. B
  73. int main()7 L: ^, z  G! ?$ I
  74. {$ T  s2 R7 ~6 T" N8 z6 p
  75.         char c;
    ) a3 a0 m, |2 T* c2 q+ b8 Y
  76.         int i, macs[6];
    5 A( Q( Q+ J# E: b' h+ p- p
  77.         unsigned char mac[6];
    4 q) D3 {' m* L1 x) Q  r
  78.         unsigned char stbid[256];
    3 U- Y  q: Q0 q. y/ v
  79. 4 H# I, b9 n  t  \3 l$ d
  80.         if (readparam(mac, stbid) < 0). ~8 G% B; Q5 f
  81.                 return 1;9 K! ~2 x+ [$ l# J6 B' L
  82. & g$ k. b# Q" c- v: ?* W
  83.         printf("Current parameters: \n");
    * R2 W* I- {0 p% [* q% u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + X# ~# O. R$ E' G% y, E1 v
  85.         printf("  STBID: %s\n", stbid);
    , ^& u9 m( i1 j- }6 R
  86.        
    ! Q/ Y$ _. }$ v* s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * u5 K) A/ g) r+ V
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( u4 P+ I+ l7 `9 S& `9 x
  89.                 printf("Input MAC error\n");
    5 H7 \: p0 w" w, U9 l: N
  90.                 return 1;
    % h6 [- ~2 _* A! B# [: A6 m. h
  91.         }  q( ]8 k' T+ ?" A
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
      f) D3 n/ I1 M. E# Q0 H
  93.         printf("\nPlease input new STBID: ");
    8 v/ i8 V6 j% N: w- X. B7 z
  94.         scanf("%s", stbid);; c% C5 q" v# d# H) f/ g
  95.         if (strlen(stbid) != 18) {' ]) n3 n1 g- R# M! K. g: [
  96.                 printf("Invalid stbid\n");) y6 B* v& ~4 k1 t) C: ]
  97.                 return 1;* e+ `) F1 T/ B
  98.         }
    / Q8 b: U7 _8 J4 V2 F: D: [
  99.         printf("\nNew parameters: \n");
    % {: G7 C8 d8 O7 @0 _+ J
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 n2 k5 r. Y0 k8 I& Z6 s7 s
  101.         printf("  STBID: %s\n", stbid);
    * W& i" t! ~2 `' X/ w
  102. 0 R/ q7 B4 `2 a0 k- }
  103.         printf("\nDo you want to change paramemters? (y/N) ");: e( f3 A. J! O& |  U
  104.         for (;;) {' e! D) j! o5 f" E# ]8 C
  105.                 c = getchar();
    4 M3 t) J: V2 D, M2 [( ]9 E
  106.                 if (c == 'y' || c == 'Y')* i9 H1 V3 g6 ?6 O1 u' I  U
  107.                         break;
    9 a- }. E4 @" G9 I& _3 k  z. B$ _" p2 P
  108.                 if (c == 'n' || c == 'N') {
    " ?- B9 U0 j; I% [
  109.                         printf("\nAborted.\n");
    - R" T, J, T# W) G0 z% d
  110.                         return 1;0 _% |7 e! H: h, X$ s! u8 V
  111.                 }; _$ ?& \+ N6 c
  112.         }
    9 B! a3 b, A% {! T/ b9 Z  x: i2 i
  113.         if (writeparam(mac, stbid) == 0)
    + s8 v" G/ [2 l/ t& `
  114.                 printf("Parameters changed.\n");
    - N3 d; c! ?9 ^3 H+ v/ ~

  115. ( ?7 O" u  b. C. s0 N& w8 o
  116.         return 0;8 [! o, N5 I* A9 ^8 t. C2 u/ @
  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
* @5 b% x/ u& K在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ Z7 B1 R$ n; M$ M
你用的编译命令行格式是什么?
8 X. G7 Y+ I  `  g1 {7 [
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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