找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15395|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + b$ t* [: |: X6 l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / D& X( K% p* |9 Y( t- j
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% s  X7 x2 Y$ h3 r. P3 I: ~usage: himr <address> <value>. sample: himr 0x80040000 0x0
8 r$ Z7 P$ u/ g( T# {' K4 e8 [5 H2 e9 U
  [  z8 O1 B  c0 y0 b% i
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; a8 @* x6 T" y- p. T2 K6 Z7 P6 S
, ^$ G& g5 @) x
补充内容 (2012-3-8 09:42):
  h: F6 w" A# X, x0 M; l4 M4 _http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数: U& F2 f+ a8 \- U% y
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
6 s9 @1 f' Y  Q( d. S9 H# [+ }8 A+ [: h  ^* c+ V& Q
himr <address> <value>. sample: himr 0x80040000 0x0( s. z9 }7 ?. {

0 A1 l8 f; i3 ~: p+ J, d' T例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  F7 b" L# Z4 z& _himr 0x80040000 0x000 n6 y+ b$ M1 }# H
himr 0x80040001 0x11
) M/ V+ L. ]+ o8 @* S' lhimr 0x80040002 0x221 v. Z: ]! l: a: P. G1 [
himr 0x80040003 0x339 T& z; x5 I8 w+ k: \  v
himr 0x80040004 0x44
  y( i: i, E1 C2 Jhimr 0x80040005 0x55
/ q6 ]/ t4 V# q" A# h9 e2 F1 p; ^1 \& d8 Y+ c
SN也是类似。
$ [6 n. T) s0 {' t9 Q' ^. o8 E$ b! e+ k! e1 A
现在主要是,谁告诉我们MAC和SN的地址?
1 L' y' p; a+ ]# H6 N
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 1 c( G! F* a$ ^& x) }! B# B
一直想找到运程修改MAC和SN的办法,苦于无解啊
- o) w1 O+ b' L- X
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 8 s) |( n. N/ N
5 l+ T+ g  E4 {( C7 o7 [% z
修改的代码早有了。到今天不会编译。1 _! ?2 d# A  m1 H" W+ ^3 N0 ]
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  B8 a; j# a3 w  p
  2. #include <malloc.h>
    : f- r$ h9 B/ u) \! V
  3. #include <sys/types.h>7 N" ^/ L' O' A0 `) C
  4. #include <sys/stat.h>/ i! F7 z$ ~3 Q; g! u2 A+ f2 S
  5. #include <sys/ioctl.h>; Z5 X2 ~6 R4 M) ?8 b
  6. #include <stdio.h>
    & B- M/ I/ g+ u. U
  7. #include <string.h>* ^, V$ V: }% r2 h# M

  8. + [% y. \5 g# U
  9. typedef struct {" s+ V5 g9 p; M2 U% j' \6 v  p
  10.         unsigned int        e2prom_cmd_sub_addr;
    " ]5 Y6 m+ f6 E0 j
  11.         unsigned int        sub_addr_count;) A2 g+ }+ p, a/ l
  12.         unsigned char*        e2prom_cmd_data;& j' j- a2 g8 ?5 o
  13.         unsigned int        data_count;0 A, a. R; C, l/ I
  14. } e2prom_s_cmd;2 L: k2 Z; p* z  Q

  15. % T+ ?& c5 }. [  u( k# h' f. C
  16. #define E2PROM_CMD_READ 15 ]1 k! e# T# O# N
  17. #define E2PROM_CMD_WRITE 2
    5 e  \* \, Z, R9 X3 W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"8 N$ K" Y8 T9 H/ N
  19. 5 m( d2 U) U! n/ \8 _6 ]- f
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 w2 `) s$ A/ ~6 J
  21. {, \- d4 x6 I1 ^" k, e+ x
  22.         int fd, ret;
    7 W1 i4 b& j/ g7 d) c7 D8 h
  23.         e2prom_s_cmd arg;
    3 N- ^0 O# ^7 n2 P
  24.         unsigned char buf[0x18];
    5 }7 B4 p0 O5 t$ y
  25. 3 E6 Z- f9 \4 O+ m: X  j2 ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " Z9 I4 ^2 c5 o
  27.         if (fd  < 0) {+ W' F+ E4 u6 |
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ q; J6 h. B: N8 ^# I
  29.                 return -1;% X+ t6 I0 b( F8 b# P
  30.         }
    0 q) N) H) s1 g4 X" z+ f. B
  31.         arg.sub_addr_count      = 2;7 L/ Y# c2 z8 N$ g' U2 v7 C
  32.         arg.data_count          = 0x18;
    $ `+ D; A0 C( c1 y! l$ D4 y
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 \9 @- m2 f& J: J$ n
  34.         arg.e2prom_cmd_data     = buf;
    " }: _9 P  a# k% \! x8 w, ^; r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: w/ o* N, C) @
  36.         if (ret != 0) {! U' Q! Z9 m6 u' B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 z# X3 l4 X6 g5 N4 Q
  38.                 return -1;
    8 X' L) U: w+ z; M! g1 z# {* u5 M
  39.         }
    9 D8 |5 \- S, ]! Q$ ^+ g& D
  40.         memcpy(mac, buf, 6);% w+ V, F* W2 ?4 V. }; O
  41.         memcpy(stbid, &buf[6], 18);8 g2 S9 h7 D8 G  v% W
  42.         stbid[18] = '\0';# ?$ m$ m. N; W

  43. ' M8 w/ B& |# b) S
  44.         return 0;
    / U: t& d3 U3 Z/ f
  45. }' r; R) J. b/ c8 X9 q: I7 a

  46. ( H0 F: Y# F" n" G( ^( _+ T7 _
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)5 M( ~) s, c: P
  48. {
    : x+ }' l* A, d( X, s
  49.         int fd, ret;
    5 F. f( L6 _/ `' c* I& j0 u* R7 g$ E3 d
  50.         e2prom_s_cmd arg;1 N  t6 ~- w' F6 q' s
  51.         unsigned char buf[0x18];
    % W* z9 g% @: H6 t9 H

  52. % [# M1 G8 t7 G' E
  53.         memcpy(buf, mac, 6);6 I6 I2 I: ^, @3 I6 b& i# Z9 m
  54.         memcpy(&buf[6], stbid, 18);
    $ f5 c$ ]" d! U2 S; m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);: ?6 g4 F- J, V% D' l
  56.         if (fd  < 0) {7 g. M1 s2 [+ o2 K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( Y' b1 B9 @9 D3 P; {: b
  58.                 return -1;
    6 ~5 k/ {  ^7 P, _+ y9 @3 c
  59.         }
    0 |$ @6 i( G; o' j' v. G9 t2 g
  60.         arg.sub_addr_count      = 2;4 C. C- _$ @/ K9 x& w! A
  61.         arg.data_count          = 0x18;
    + [4 u# [) w9 q+ L. v# Q1 n5 `$ p5 c* q
  62.         arg.e2prom_cmd_sub_addr = 0x290;% i3 e4 P" q2 x4 c, ^' M4 y" S
  63.         arg.e2prom_cmd_data     = buf;
    8 D9 K3 g# t+ `- X# K4 ?  p9 A2 f! w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);) w# w! k1 r! P- W
  65.         if (ret != 0) {/ ]' O' T% y, o6 b& M& z6 H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ( h5 d/ r6 z1 i
  67.                 return -1;
    ( u7 J' b( \  [) w+ c4 f
  68.         }
    3 t: K7 F. ?% l' |6 M, r
  69. ( |/ u' Z- h$ `5 ~: V" e
  70.         return 0;
    # ]* E5 v0 ~$ I2 y# W5 S
  71. }3 O# Y7 a2 ]/ ^

  72. 9 }$ E+ v" r* h
  73. int main()
    : B7 a6 w8 |5 D* u
  74. {
    4 E% r8 d5 h& B: X$ O
  75.         char c;
    . T3 s1 K# V) L/ I" X5 O: A
  76.         int i, macs[6];
    ' x9 d- `, y3 G# q" ^9 p* _
  77.         unsigned char mac[6];* ^( T, S, W$ r2 X
  78.         unsigned char stbid[256];
    + U5 I: y# |4 x# X

  79. % b* n$ y7 q0 v! y, ~4 t4 q$ i
  80.         if (readparam(mac, stbid) < 0)
    1 Q6 G: V  Q( B: }0 w9 b; L- E
  81.                 return 1;  A0 A0 L# s- \3 ^

  82. " `4 i. X  m0 m( Y" y
  83.         printf("Current parameters: \n");
    0 y8 p& Q8 q! E, u' T8 A3 |
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 y4 B9 P- ~. D' O6 I" T  x
  85.         printf("  STBID: %s\n", stbid);
      y4 B( ]# ]+ b, @$ }4 ?! e
  86.         + Z2 [' s* Z2 {2 s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 N' Q- M5 N" x8 L6 }; i2 K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    , P' z% k4 [! _
  89.                 printf("Input MAC error\n");
    4 m9 n9 z1 k' ^, V+ f! \/ q
  90.                 return 1;
    ) I2 K  I8 ]8 Y# }0 j
  91.         }
    & n. w( e) C+ J" p( J$ _  U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 |  a) {6 i  G: u% o0 K
  93.         printf("\nPlease input new STBID: ");
    4 u% e" o& ~/ {" v7 x
  94.         scanf("%s", stbid);$ G7 T9 V1 @5 C
  95.         if (strlen(stbid) != 18) {
    ; N! L# X$ _3 x+ Q4 [3 u, x
  96.                 printf("Invalid stbid\n");
    * n; {  ~! ^) j/ S
  97.                 return 1;
    3 @/ Z  n7 F& F( K2 L' \
  98.         }. c$ Z, _! F% ^$ J* G" L5 r
  99.         printf("\nNew parameters: \n");6 W; x4 G- A. x' I) G- o
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , D. {4 f( {' [7 I  ^) y, i
  101.         printf("  STBID: %s\n", stbid);
    ; l4 T4 a0 O. O$ G
  102. 1 \+ A3 p7 ?! M; H7 V
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ) P0 R1 k- p8 m4 R9 |
  104.         for (;;) {; a2 U3 N6 x' b- @
  105.                 c = getchar();$ i$ \0 V; H  z; ]6 T' c
  106.                 if (c == 'y' || c == 'Y')/ k$ y7 ]5 y6 r! g' _- @$ ]: i
  107.                         break;
    . u2 V  Q2 b4 b' `
  108.                 if (c == 'n' || c == 'N') {
    1 l  R/ E: |7 R9 V) i7 F: O+ O
  109.                         printf("\nAborted.\n");- M# _- L3 s1 r5 \
  110.                         return 1;
    . F& H) j) R2 I6 ]0 g9 D# P
  111.                 }& D* Z% J# z& H3 @: _: P* P3 d; p$ H
  112.         }
    8 p8 e2 N. h2 u
  113.         if (writeparam(mac, stbid) == 0) 9 }/ n! ?0 r4 T' C& y
  114.                 printf("Parameters changed.\n");% i3 B% W! V6 I! N

  115. 6 l0 K' y" |2 z8 T) Q! t% B8 P6 A
  116.         return 0;+ T  Q  L7 Q, k% V3 g4 `
  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 " y- a( G- ^- }* e, P  K
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 C/ L! k$ z, M0 h' s+ U9 M# p, i
你用的编译命令行格式是什么?. K* [8 b/ A* i7 v. D" R
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-2 04:29 , Processed in 0.024567 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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