找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15430|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    & i6 X8 |% F% E, k; o+ {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) @! f9 c4 ]4 k4 p! F3 D) H
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; }/ q+ v5 x5 V
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  s$ D3 ^5 [2 h
4 J: V3 i9 P! W5 H% `$ n$ L. ]2 W9 W5 ]6 y: r+ w. b3 W
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 C, X. C  u8 q- i9 P
/ q, {& C2 D8 E/ M- d; \补充内容 (2012-3-8 09:42):
( U* A  r' C4 V7 H5 }# Dhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 R. m6 |0 m) V- F" n1 [7 Z这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
( z+ k6 c+ d$ T) t  L2 J, b2 X& j) V9 p. R0 g) T
himr <address> <value>. sample: himr 0x80040000 0x0. Q6 G& F+ T0 H7 J! q: E1 Q# N# ^

! J% Q/ y- L. Z9 r7 h例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ f; @- J  K2 q! Qhimr 0x80040000 0x00
. F) A  |; P/ g* h. N: Jhimr 0x80040001 0x116 O7 i2 v; `" [+ G4 y- X" f* l" {4 l
himr 0x80040002 0x22
# D0 l& a" ~' x* G9 X3 Thimr 0x80040003 0x33
) x* F9 {, H, F- \  hhimr 0x80040004 0x44: p+ V" f, O" g" }' K4 \
himr 0x80040005 0x55
& g! W% j) k9 [& t' k* |
4 G+ o9 f$ W2 {) g. z+ t& B6 rSN也是类似。& l7 [$ ^' o0 W
6 w% U& F1 X( [, U! M* ]- F
现在主要是,谁告诉我们MAC和SN的地址?1 Y9 ?: v' A& e8 K
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 5 A1 d" F' ~$ Z! Y# n/ X
一直想找到运程修改MAC和SN的办法,苦于无解啊
. A1 F, W' {" O
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 5 A/ z! O1 t& O0 D* v

7 o, l- B$ ?: h+ w* g. i修改的代码早有了。到今天不会编译。9 z0 \7 M5 x) D1 Q  B
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 V3 M# t2 c* W* |
  2. #include <malloc.h>
    3 _7 h7 D5 h; [5 e* z1 F& X
  3. #include <sys/types.h>  G7 e8 z/ b' q" z$ H( N
  4. #include <sys/stat.h>* A% I: r: W3 b0 W& z, C
  5. #include <sys/ioctl.h>% s6 S% T" q. J8 D4 _& U  u: r! C
  6. #include <stdio.h>- ]1 ]% s2 B4 y1 [: y! Z
  7. #include <string.h>6 ^- V: ]( m- ?

  8. ! F' G& f9 V* ?* ~, V
  9. typedef struct {
    ' q5 \, J+ U8 n* W" X2 m
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 y. V. j$ q3 [  X: l5 |
  11.         unsigned int        sub_addr_count;( M+ z# |8 V5 I4 M& @1 ~
  12.         unsigned char*        e2prom_cmd_data;9 d6 w% A3 f0 H6 R( V( {. ?
  13.         unsigned int        data_count;
    $ q: r* M5 O  H2 L7 d; J
  14. } e2prom_s_cmd;3 G1 F) Q; l8 }# m2 t. I

  15. - \0 Q% a% j  x* U. s, G+ W
  16. #define E2PROM_CMD_READ 1
    5 |5 X0 j3 b% \+ _. k
  17. #define E2PROM_CMD_WRITE 2/ X. t: J0 ~3 u% U) C
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( A- ^, M. X5 g" l. g

  19.   C! `" f5 e! `' t5 L+ [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    + Q* h! c8 w3 k$ B1 j6 [
  21. {
    ! o$ S: v; e2 v3 X8 m/ \$ j
  22.         int fd, ret;$ O4 X/ _: }2 p' a
  23.         e2prom_s_cmd arg;1 L3 h  V+ r: U. c8 ]+ L8 G
  24.         unsigned char buf[0x18];
      D/ Y+ L8 ?8 }9 ~/ g
  25. * ?& P/ X9 T) \  @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 u, D+ D( C# o, Y8 p: G" x' Q
  27.         if (fd  < 0) {# {& N9 B0 k* u
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- |, v# C6 h' R5 Z) B/ I  p& b
  29.                 return -1;) y' ~) `5 e) U2 k2 D
  30.         }+ r9 A' f: d, F; I/ I/ u' G
  31.         arg.sub_addr_count      = 2;
    2 [- d5 n; E; r) u6 ?
  32.         arg.data_count          = 0x18;  W! S$ P' ^9 i. D9 F+ a
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    3 f5 d4 Q( K. S4 N: x3 u, \
  34.         arg.e2prom_cmd_data     = buf;1 E- [9 }% L7 |! K5 B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : ?3 P% @7 C3 ]3 A1 l5 X. O/ p
  36.         if (ret != 0) {
    9 r) _- k( _) ~3 J2 k  k
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 h2 Q9 I5 z) k( V) E; W
  38.                 return -1;4 Y8 M, M* x& W
  39.         }6 f- X  ~8 h5 n7 [1 N% ?: e
  40.         memcpy(mac, buf, 6);
    ! D5 P: p) w7 G+ U5 G
  41.         memcpy(stbid, &buf[6], 18);
    / e9 E, X, h" }# W1 Y  T
  42.         stbid[18] = '\0';$ P: n0 u, _# q. d3 _7 S! a  r7 P8 Q

  43. # C$ A4 n/ G2 x# ?. C; `7 X* {
  44.         return 0;
    ; s% }& x# s: J. T
  45. }
    # }  z/ n7 k& c, r
  46. 8 Z) ~, r. {7 C
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)& Z" V+ s, k' h7 {- i5 T/ R( j) S
  48. {! `3 d) S4 z% m/ h+ j8 y9 F
  49.         int fd, ret;
    5 a+ k; T. \; v( v+ b7 C; D
  50.         e2prom_s_cmd arg;
    ( @. j% U2 b9 d5 m+ U8 p8 L6 U0 g
  51.         unsigned char buf[0x18];- c; D+ S# o1 R% R6 x7 \
  52. ) \% f9 F9 L5 N- q7 G& N
  53.         memcpy(buf, mac, 6);
    3 D# a. E/ T7 j" A* ~
  54.         memcpy(&buf[6], stbid, 18);
    , a& B- {. \, {! X; R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 T- k: g6 `" H- w
  56.         if (fd  < 0) {
    9 o/ [- ]. |: ~; K6 A. Y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( H9 A: I; y- U: Z
  58.                 return -1;
    0 U" n% U5 K- C
  59.         }& K2 k% q# u5 q; N# J6 q
  60.         arg.sub_addr_count      = 2;; ?5 R% N$ {  Z  [* {; Y( M1 Q4 M
  61.         arg.data_count          = 0x18;
    / v, p9 V3 O2 L1 m
  62.         arg.e2prom_cmd_sub_addr = 0x290;$ y3 e3 f* g, A
  63.         arg.e2prom_cmd_data     = buf;; m8 d  T+ q# K- |$ U. @& d+ \
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 n4 e" o+ A  q9 z
  65.         if (ret != 0) {
    . i# k$ Q) }( N' r4 q1 a7 x8 h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # d4 _) K& |* V5 P0 v7 ?0 b( Q8 f2 n3 V3 U, U
  67.                 return -1;
    - ?7 H& g. K. V& e8 t3 ~, M
  68.         }5 I2 Y2 Z) |* B/ Y  _4 E  D
  69. 1 j: t' E4 c& K) K. D* {
  70.         return 0;! g5 t6 ], v1 E4 U) h* y
  71. }! C5 D2 Q( Y- L& q- ]

  72. - r9 o' [' ]0 [! ?6 x
  73. int main()* R' r+ ?; d. k
  74. {
    3 w/ V. A. e2 C5 S
  75.         char c;
    ( v9 X) s0 Y/ h/ q( q/ S
  76.         int i, macs[6];& r& B& Q$ e4 r; k1 w0 E
  77.         unsigned char mac[6];
    0 D- i1 ^  p, |) C% }1 U' I# [! U4 L
  78.         unsigned char stbid[256];
    - F" W" c  |3 }

  79. 4 Y( h9 c9 |" M# ~. x
  80.         if (readparam(mac, stbid) < 0)
      n6 x* M9 ?7 g: Q8 h, g: G! F
  81.                 return 1;
    ; Z/ I6 Z! N. F' d

  82. ) G: P" c9 U4 h
  83.         printf("Current parameters: \n");6 b0 E+ D& O/ x# b- O. c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% o) u' S9 J; n9 g8 Q
  85.         printf("  STBID: %s\n", stbid);8 E, g7 p. ], t. x# P3 c6 K: I
  86.         ' p3 t; r1 {6 R: N4 `$ _- I
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! o+ z4 E6 P1 u, X$ E$ ]5 g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    # r- @  d0 G. o5 K, V9 f" k
  89.                 printf("Input MAC error\n");) b& x0 y; Y0 }6 o9 K
  90.                 return 1;9 l8 p# [4 C1 J. C
  91.         }
    0 B0 ]; L& [6 J; c, k- u* Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 K- ^. F) I% C
  93.         printf("\nPlease input new STBID: ");
    % C$ f# r7 a, |* [
  94.         scanf("%s", stbid);2 @9 J4 S$ Q5 _! H" W$ d
  95.         if (strlen(stbid) != 18) {3 R) V; r- Y% d
  96.                 printf("Invalid stbid\n");' y6 [  y) Z* p! r! e
  97.                 return 1;
    / ^, m/ ~; y9 W# x# r
  98.         }  v  x" N) e9 \& x+ O0 b$ _2 ~" Q
  99.         printf("\nNew parameters: \n");- T( ]/ B, v4 ?' B% m7 H
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& `, S% O% k- S4 C
  101.         printf("  STBID: %s\n", stbid);8 J4 z/ y8 T$ _7 G0 l+ n
  102. ; p& f) @6 W) K1 T1 A4 N
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # @4 n" F8 w" N! `3 I
  104.         for (;;) {, M) r) V  f7 R: J' h6 {
  105.                 c = getchar();; U6 q% e, ?- e1 `3 l
  106.                 if (c == 'y' || c == 'Y')
    * N% Z+ A- y; S3 v% {4 p$ i
  107.                         break;
    3 W# R7 Q% k5 p9 \% S7 a
  108.                 if (c == 'n' || c == 'N') {
    8 F) @" m8 P, `
  109.                         printf("\nAborted.\n");% A/ o% j" g- W# V8 c, ^5 N; |5 L
  110.                         return 1;
    $ ?7 p# W% J2 Y/ v# P1 Z4 W/ z, j
  111.                 }
    - m1 s& |+ X/ `$ d' U- c
  112.         }0 d' V3 ]& s( Z
  113.         if (writeparam(mac, stbid) == 0) ) `% }* L4 {4 K  x* i
  114.                 printf("Parameters changed.\n");5 V/ m( F5 G8 R- t4 v! l- q6 w

  115. 6 X( q9 H* e5 G4 w* p7 `
  116.         return 0;' }" }# \+ U) j: k# v" Y5 P2 M* A
  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
. M8 N0 F& D7 H. \: d在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
  k/ C9 ~% Q* q$ ?- s3 ~
你用的编译命令行格式是什么?
0 F9 \( j1 K$ ?1 e! Q# N0 X
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-4 14:10 , Processed in 0.026226 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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