找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15373|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * r/ o! O: |+ Z6 J! S6 R6 Y4 L% M
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 `( ~8 u# H* Z2 @5 l6 y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% }- x7 o( n; L/ ^5 ~( q$ Uusage: himr <address> <value>. sample: himr 0x80040000 0x0+ @( m4 |8 z$ ?" E) Z. D

3 ?4 t$ l1 ^3 S& k, R( {4 [; d- H9 v! v8 W. v' u! b
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# ^9 Q% m+ c7 n1 o- r
: R4 r" |5 a, ^( C! k6 L补充内容 (2012-3-8 09:42):
! M8 F  g3 q) f8 |+ Jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! X3 Z* L' m' p* \- b4 a. P9 A
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
" P9 |) X- K- p2 u* h  o7 @+ u: O! h5 E2 p2 B0 C$ V
himr <address> <value>. sample: himr 0x80040000 0x0
  P% K7 g7 v1 h5 `
) V1 S% O1 k4 B例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
" x, @( a6 X% A3 _6 n0 ?himr 0x80040000 0x00
: B# T) h9 b. r6 f' R! ]himr 0x80040001 0x11/ g" c" J( l5 l1 ~/ ~+ w6 J" k( j
himr 0x80040002 0x22; t- s) \% x, r+ C
himr 0x80040003 0x332 {9 I7 T9 Z4 ~) q( e
himr 0x80040004 0x44) Q6 {: t% e9 x1 n* O& |5 x
himr 0x80040005 0x55$ t0 Z+ m$ _- i) L
5 G9 u4 Y+ o2 p; e
SN也是类似。
5 v6 Z" y# u3 i8 ?( L
6 y+ @8 q/ b+ {* J: t现在主要是,谁告诉我们MAC和SN的地址?! H5 c: @) e9 _) K& O( w' W
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & T* K9 B) k/ M0 z
一直想找到运程修改MAC和SN的办法,苦于无解啊
$ k" A; K* h, ]0 E! f( H) |- E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; y+ ]3 n! |: A# i3 i  y, A5 W% W6 D) {* T; \
修改的代码早有了。到今天不会编译。
" I: E% y0 Y) _4 e/ w7 l# L需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % @/ e7 Q9 a+ Y" m  z5 o
  2. #include <malloc.h>6 C5 q# D1 {- d7 f) l$ N
  3. #include <sys/types.h>. u+ K" X' s1 [9 o+ o
  4. #include <sys/stat.h>
    ( S, ?4 _! m' o5 j# K
  5. #include <sys/ioctl.h>. p9 U) o% }6 O2 ^  }) D
  6. #include <stdio.h>7 c( k% |8 q) [& C4 g. X" Z, u
  7. #include <string.h>
    3 ]& D3 H. Q( B- y& e

  8. 5 X6 t% ?5 x' N# P. Q5 H' W
  9. typedef struct {
    ; z3 D" C, v* g1 N5 y7 V
  10.         unsigned int        e2prom_cmd_sub_addr;
    , g' v0 [; x7 s+ `# b
  11.         unsigned int        sub_addr_count;
    : b- w6 D2 u9 S( h
  12.         unsigned char*        e2prom_cmd_data;; e& B  L: v! p2 U" J
  13.         unsigned int        data_count;
    0 f$ Q- r0 s* o0 {  T  @! V5 g' O
  14. } e2prom_s_cmd;
    0 }" B; B9 t! H/ B! n5 M" Q

  15. & l4 s; O& N! V- d( G6 w/ X
  16. #define E2PROM_CMD_READ 1" D, m$ ~  L4 M" c
  17. #define E2PROM_CMD_WRITE 21 z- A7 o/ `! L. P9 c# }1 W9 N8 ?
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". F$ o/ S. U) _4 z; ^5 L% q
  19. . f& @+ w5 K% x; `* s/ t. y# u& _0 G
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 X5 a( P: u+ v3 l
  21. {2 L9 t  ~) A$ ?1 N; r
  22.         int fd, ret;7 j  p/ l! S& p# `+ ?
  23.         e2prom_s_cmd arg;
    . c9 L4 Z1 i9 S7 n0 G- f  v
  24.         unsigned char buf[0x18];% ]3 C' z( C1 }+ |) ]* O3 E
  25. 0 _4 v1 P. b5 z3 J( {, ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. Q$ k. @2 `8 u, p4 H
  27.         if (fd  < 0) {) i# b9 @  H% t+ L; Y8 Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 c3 }# w8 ~! l4 j$ Z0 j) T
  29.                 return -1;5 F- D1 e4 [+ j" ^4 y6 M2 ]
  30.         }
    4 x2 I' j6 b0 R
  31.         arg.sub_addr_count      = 2;
    . \5 [5 C: _* j& ?2 D- l  O. b" t
  32.         arg.data_count          = 0x18;7 S) s6 l7 f5 J5 @
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ! d7 S0 n- `6 E9 v' p$ L
  34.         arg.e2prom_cmd_data     = buf;1 \& C; \) P: }/ e$ n! x7 L' C
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);- O; B5 b2 C1 _, o2 y0 P5 `
  36.         if (ret != 0) {
    ; Z8 g" ^9 k8 ?9 h" J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 K$ Y- x% M' |
  38.                 return -1;
    % H+ k: y7 R% i- m" m! _
  39.         }
    # X7 M3 S% v/ R% t1 g# B% Y
  40.         memcpy(mac, buf, 6);
    / j4 j9 ^) w9 P
  41.         memcpy(stbid, &buf[6], 18);% X/ ?5 U3 N: k* h' M
  42.         stbid[18] = '\0';
    + e; t$ m0 e, M% W- b
  43. , u1 ]. a1 [& N5 ~& L* s& i6 c7 F, ]
  44.         return 0;/ D9 k# {: h9 n: T9 L8 ~
  45. }
    2 i% d6 ]3 F( Z5 A" I) ]8 e
  46. 1 {! x. ?" S) T# D# L
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    " H; G; d; _, w# f
  48. {
    : H# `3 u( H+ C; L3 ^/ X. W
  49.         int fd, ret;& B+ E' s8 q" s+ p6 v1 s0 k
  50.         e2prom_s_cmd arg;* T- U/ o% ~% @, V- g  G
  51.         unsigned char buf[0x18];
    6 T6 g( E& u7 c' b4 F/ M* H* l- [
  52. 0 J6 S6 l5 a  u" P8 R
  53.         memcpy(buf, mac, 6);
    " p7 l) A  l& O3 k3 N
  54.         memcpy(&buf[6], stbid, 18);8 Q" Z* h+ R* u( Q2 H+ z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);+ M3 e$ P: M4 E: J9 t% I
  56.         if (fd  < 0) {9 S0 d, {) X2 c- c6 P+ |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);. z1 D' e' v- u
  58.                 return -1;# L  m/ i" |3 s% {5 E$ M. Q
  59.         }1 U: W8 S" c7 [8 V6 o1 u/ L
  60.         arg.sub_addr_count      = 2;
    : t# w4 a  P# M1 x0 ]2 L) E
  61.         arg.data_count          = 0x18;
    : T+ a) z" S  N3 Y  ^  t
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & P' _( U; U3 }6 x' x6 W" G# @
  63.         arg.e2prom_cmd_data     = buf;
    7 ?- m; \, j" L$ z  F8 T: t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 {# a" c1 \: T- D" U$ I6 e5 l
  65.         if (ret != 0) {$ c6 @) z) I' H3 K2 n* _& [
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ( r2 Q* c2 G" J- p
  67.                 return -1;
    ' V7 ?' _2 F5 K, s" |+ i- n3 S
  68.         }+ v: \- F5 l: g4 j* s
  69. + l4 b6 Y4 L; c8 h7 F
  70.         return 0;# M5 V& M, e- ]/ s, t0 N1 b; Z' I% T3 }5 k
  71. }
    5 v& P: g5 I$ K. K1 H- @

  72. 7 l1 \+ U- D" x8 H# @$ S& J5 t
  73. int main()
    6 I* G8 d0 y, W. e
  74. {3 d+ q* s/ J" `) v5 I
  75.         char c;" e0 I0 u6 ~" }6 D* D
  76.         int i, macs[6];3 s4 H: k- X, _* c7 E
  77.         unsigned char mac[6];. Z/ y. u- b& i5 m8 m, v9 {
  78.         unsigned char stbid[256];
    3 I- Y4 K$ I' O  }6 Q
  79. ! x+ T0 t$ V+ \+ w
  80.         if (readparam(mac, stbid) < 0)
    7 ?. |  X  y2 z2 R: a6 a% `( i6 r, h
  81.                 return 1;
    % C4 |# d+ d, M# \' l

  82. ' x' k$ C$ ^& T7 L2 w
  83.         printf("Current parameters: \n");6 Y  L! k2 F+ r8 o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; e7 l# ?* W% i( p9 a" w
  85.         printf("  STBID: %s\n", stbid);
    6 X8 p3 o- C! ?  C" |
  86.         6 H  T, G' j! E) l) [
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 I, K) [9 h' [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & o' u, g  Y, Y( z1 l# Q3 ~
  89.                 printf("Input MAC error\n");
    1 r; m( u/ \+ A& v8 N8 L
  90.                 return 1;
    2 J6 }4 A8 m$ h4 ^) I/ R3 r
  91.         }6 C' V5 j5 A: I, U) p" M, \
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) y+ Z7 x9 C, `1 ]( ~$ T" ~
  93.         printf("\nPlease input new STBID: ");
    1 X6 Q- e9 j7 {2 _; J
  94.         scanf("%s", stbid);+ c' O/ y2 }$ k$ N5 L
  95.         if (strlen(stbid) != 18) {
    9 o" ?2 g- |6 E! o! `5 @
  96.                 printf("Invalid stbid\n");, \7 x% F- i" ?
  97.                 return 1;
    1 c8 M9 K' x: s; M* s" R- w" H
  98.         }
    ; S7 n% X7 d8 z, y6 {' Q4 Y
  99.         printf("\nNew parameters: \n");2 _/ H$ v1 s/ W: N1 ^$ n* O
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ D& m- o  y3 o! T# L* h
  101.         printf("  STBID: %s\n", stbid);
    : I2 F% u4 P! r/ I
  102. 9 A$ c& z/ m: ]/ X) I3 k/ N8 [) G' m
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 Y) _5 x$ m& F0 c3 W+ n
  104.         for (;;) {
    4 E; x( j/ d7 M& Y. g# K- M2 k
  105.                 c = getchar();
    % u& B+ D: B6 u- @& ]
  106.                 if (c == 'y' || c == 'Y')3 K# Z5 R  y; m1 U  |1 u
  107.                         break;" |, Z5 q" S. Q9 t; |. G7 i$ x2 Q
  108.                 if (c == 'n' || c == 'N') {1 }) R  v/ g2 Q+ n7 R7 _! X
  109.                         printf("\nAborted.\n");( Z; q8 s1 q4 L
  110.                         return 1;
    . l: M# j3 j: O2 s# W) O  s! _. w
  111.                 }
    # ^; F7 d/ g0 _
  112.         }
    $ b6 V) v$ {. [+ j' D* C' }2 q
  113.         if (writeparam(mac, stbid) == 0)
    : f& o: l! B* F* u( J9 Q
  114.                 printf("Parameters changed.\n");1 [0 ]$ i+ q- E% j

  115. 0 c( }7 Z; s+ ?/ L" D' |/ C
  116.         return 0;) g% x) F  [6 D+ ?2 r- d$ z% 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   v  {" J% O% ?4 E$ e: v
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, p5 D5 T2 g& N. o# Y, b, e你用的编译命令行格式是什么?5 B4 U9 R) d: ]
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-30 13:13 , Processed in 0.023662 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表