找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15227|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr, r9 R  v6 F( z5 |8 V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ D; @) |! @/ f/ j. t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* c! q" h/ d( m+ q8 Q$ U
usage: himr <address> <value>. sample: himr 0x80040000 0x05 g3 D; P! v( e. C: Z; c
7 n& C5 e" J# O. H% `% H

! E9 l  M; F. ?! U7 p! }7 R* P# _$ H不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
6 V* R$ E/ d/ I3 I1 N/ p' f8 l: {8 I9 g, A8 u
补充内容 (2012-3-8 09:42):& K' ]! T; y7 V9 \/ d# C  K
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' ]5 k* K) J9 V7 a8 w& g
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
" K) d# k$ J/ S4 d( v; W+ e* T
, c* _  I+ @# L# t+ c1 K; Z) ghimr <address> <value>. sample: himr 0x80040000 0x00 c% k9 o' g& G; Y" Y

$ W& w, A' Q1 a" {例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
' x, Y! B( v! A% ihimr 0x80040000 0x00, e1 \" @* N' I8 V! G! X' P
himr 0x80040001 0x11; _5 I8 ?2 y+ I
himr 0x80040002 0x22. g* u& T! ]& }- G8 c
himr 0x80040003 0x33( W' f( o2 Y' y& |- B7 f
himr 0x80040004 0x44( b3 P  j3 r1 R  W9 c' ^. a
himr 0x80040005 0x554 g3 ?9 ^, W# o2 E' t/ \

/ C+ T# h$ {  {$ Y6 A0 s7 ~SN也是类似。+ }. h7 ~# m  `- Q' l: u; \& @; q

1 w# {! Z* s- N* N8 l4 |1 h现在主要是,谁告诉我们MAC和SN的地址?$ h: E% c* K5 x; R* W; ]) E
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 b& o: y" o. N, C* J
一直想找到运程修改MAC和SN的办法,苦于无解啊
' k) N4 t& E3 _' m& e; r+ T, E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 % o4 z5 p$ h/ _/ @0 g2 {! f$ ^

) I) g9 K& I; [! A1 n. J! N& O修改的代码早有了。到今天不会编译。5 R8 I0 e- s0 }5 X" P% f
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - I( N, m  A9 |7 }
  2. #include <malloc.h>
    0 q4 k  M0 w1 B, u( Y
  3. #include <sys/types.h>4 t1 D0 c/ G$ ~
  4. #include <sys/stat.h>
    ) C: F, X, m6 u. e; o# j
  5. #include <sys/ioctl.h>: s' o, |. O  \6 z. _/ N5 F* {
  6. #include <stdio.h>
    * C5 @: c6 R7 f5 t
  7. #include <string.h>
    ( X- M) c% B5 }5 C& y

  8. / Q5 |( q1 R% C: F7 s1 W; u7 n6 N
  9. typedef struct {  A1 [7 E( F8 b) z( w& X
  10.         unsigned int        e2prom_cmd_sub_addr;7 y% X' k5 }8 p4 L. a; b- @
  11.         unsigned int        sub_addr_count;
    . m: F( A- d$ t- B% H& \
  12.         unsigned char*        e2prom_cmd_data;
    " Z% ?( K6 ]6 C( M! w' W
  13.         unsigned int        data_count;* e7 Z* l3 V  z6 U. x
  14. } e2prom_s_cmd;% l4 F2 ?% f/ [6 \$ i& e0 r( D5 j$ o
  15. - ]. f' u6 J) g) i
  16. #define E2PROM_CMD_READ 1" T5 n. z) m0 ]  p8 `
  17. #define E2PROM_CMD_WRITE 2( v9 j- h, y+ J$ q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , ]% G3 z5 y. N/ _, C
  19. ( [: i2 n" N6 z0 J+ t
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 U4 `2 Z1 C' S4 l- z; ]( `& g1 W# R
  21. {
    " ]' {' L9 h5 Z% N# K7 I$ d
  22.         int fd, ret;7 v, @& x  B& ~- [$ |2 d* L
  23.         e2prom_s_cmd arg;- [  _8 o. c( I
  24.         unsigned char buf[0x18];
    : B. J$ _' g# K# W3 C. y; A

  25. ' v! [6 R; D/ v2 L% w  l5 x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % j0 v% l+ R+ J0 ~
  27.         if (fd  < 0) {- ]* e3 ~7 Z2 i' R. w
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ t, ~, y% U2 B0 T$ J; R2 s0 J; t
  29.                 return -1;
    4 W  B" N" @: w, V/ E, R% h6 r# A  T
  30.         }  u3 S6 t; d- n
  31.         arg.sub_addr_count      = 2;& ?% j4 P! R8 E4 H7 Y% Z
  32.         arg.data_count          = 0x18;
    3 `; X4 [, Y% N" P" c4 t1 h
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    : f, K' E5 ^1 `) R3 |* v- c
  34.         arg.e2prom_cmd_data     = buf;
    ( ?& R9 _% Y, B6 g1 M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: U; c) M4 R7 f/ m" ^- o
  36.         if (ret != 0) {
    + l7 v5 L; Z; j) ^
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
      u1 {7 k/ O6 Z- W
  38.                 return -1;+ k: K: y7 |6 k% h8 H6 [
  39.         }
    2 E7 h% H1 c9 [' y" C" y+ |
  40.         memcpy(mac, buf, 6);+ r3 r5 x# W4 \8 G
  41.         memcpy(stbid, &buf[6], 18);
    + k; P; V# g6 B( o
  42.         stbid[18] = '\0';( P$ y, p$ L9 y1 y& Y

  43. , Z1 m9 v' s9 t' R
  44.         return 0;
    . S( A3 X$ ]" w3 y( h- X" |
  45. }7 c2 R) J7 I: p* d! I

  46. : x7 E! s& Z% F3 b. x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( M1 y, G9 `$ H! p. h6 w
  48. {; t- Q+ a  Q; E* D! ?( p
  49.         int fd, ret;$ n( C  ^- ^) O( S  s5 U) s
  50.         e2prom_s_cmd arg;
    . Z. r& z* Z3 J5 U# ?
  51.         unsigned char buf[0x18];
    * g' X1 n! \0 I" @$ l) C& y) k* x

  52. ; x& V4 F! q0 L& w9 ?
  53.         memcpy(buf, mac, 6);' p; e+ j% |: P
  54.         memcpy(&buf[6], stbid, 18);
    ) D' ?6 o! d$ `' ?# e
  55.         fd = open(E2PROM_DEVICE, O_RDWR);. S0 q" I3 M1 U, f1 G" }
  56.         if (fd  < 0) {
    + Z2 b9 R8 U5 S2 r
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 V6 l7 r4 l& \9 o% a
  58.                 return -1;( I7 o! n! T1 L. L" B$ ]
  59.         }
    7 d( P; y' z$ C+ h' ^9 ^
  60.         arg.sub_addr_count      = 2;/ W/ r- p0 ~- M- O% c5 R
  61.         arg.data_count          = 0x18;2 R0 r8 @( w4 d% a: s; c3 W! k
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    0 N4 S  Q- O+ F7 Y2 x' H
  63.         arg.e2prom_cmd_data     = buf;
    9 r- }. Y' Y. |8 d& q* D/ [
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 j9 I2 O; c: @0 ?8 P+ q2 m1 y$ p
  65.         if (ret != 0) {
    : s7 P6 t2 Q; J# z/ t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# r* E  c  _1 U6 V2 _
  67.                 return -1;
    , T: X# \# s3 j
  68.         }, s; r1 d+ ~) d- E

  69. 9 A8 E, s, P' p7 B& K& f
  70.         return 0;
    - j7 W6 k" ^6 c9 Z5 {
  71. }3 Y5 N$ W+ W- B4 k
  72. 0 ?7 O9 Q. a) F6 h- r- O
  73. int main()9 p3 E: o" [1 A% W) }$ `
  74. {
    * H& J) M; g3 r$ p9 Z
  75.         char c;
    6 h/ M( S$ s$ q* ]+ |
  76.         int i, macs[6];
    ! l- Z. `  _7 ?% x
  77.         unsigned char mac[6];% l' i* Y; g3 H" A
  78.         unsigned char stbid[256];) Z$ b+ N! O% ^0 {. t& \
  79. ' c* G' i6 F* X: _, [0 R! A
  80.         if (readparam(mac, stbid) < 0)8 }; N( O$ e9 g( }3 u% ?# M; D
  81.                 return 1;
    8 b3 @$ s9 f7 o

  82. . Y; a# `6 z6 H/ \  R: h' [
  83.         printf("Current parameters: \n");
    $ U* m& Y0 Y$ u/ S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& ]- x1 P0 i1 S) v
  85.         printf("  STBID: %s\n", stbid);
    " I% ?' C; V: h. {
  86.         ( `% v7 o7 Z  R) P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");, v8 ?4 U% F  J- b5 g) _* ?0 m& X
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {* N9 ?- |7 i; n
  89.                 printf("Input MAC error\n");! s* ^, X1 Y$ M' w& X0 }1 s! \, ?9 a
  90.                 return 1;5 u' @' U) x  h2 o# c! H% F8 c
  91.         }3 i: L* D6 Y0 k7 l4 p* F, R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    5 M5 S3 c2 f5 V% c4 M
  93.         printf("\nPlease input new STBID: ");. P" d( j+ f9 C$ @# x
  94.         scanf("%s", stbid);
    4 [$ [# R1 Z1 B
  95.         if (strlen(stbid) != 18) {( z% }0 f' t/ l! T+ v( j* y
  96.                 printf("Invalid stbid\n");
    0 ^) l# j% D% r3 u9 a/ U1 y  F% ?" g
  97.                 return 1;
    5 T6 E% b) [6 L) t% c
  98.         }
    3 y1 }% R" B# t8 ~1 j- r' C8 P
  99.         printf("\nNew parameters: \n");
    6 v# f5 ^: I& v3 ]
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% {& z# }+ D' ?, z5 C3 s
  101.         printf("  STBID: %s\n", stbid);
    & l, ]8 j  J2 h5 B7 e' V
  102. 1 Q& A+ {$ c/ P, b' y7 J
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 k5 j& ^( G$ |3 {; [6 G2 B9 P
  104.         for (;;) {7 F6 {% \0 M- J
  105.                 c = getchar();, Q8 c8 a2 o! b% n& b
  106.                 if (c == 'y' || c == 'Y')
    $ M+ {4 g" [# v/ V; i
  107.                         break;7 @6 G6 F. u/ F3 n, ~
  108.                 if (c == 'n' || c == 'N') {
    ; l8 r; f+ W6 @: \2 x
  109.                         printf("\nAborted.\n");5 O3 s2 a. X8 m# E6 t2 X, {; s
  110.                         return 1;
    ) K) F; q6 ~/ t$ [. |9 s& ~
  111.                 }
    5 Z( z* t7 f; T! r* P
  112.         }
    & D# F# K) X1 c8 h- [9 y
  113.         if (writeparam(mac, stbid) == 0) # S/ b8 |8 X/ }- d% i
  114.                 printf("Parameters changed.\n");
    0 x& ?7 a; i8 X+ U0 _- K. ?

  115. 6 e8 U, ~; Y9 a1 k) S: g' v1 N
  116.         return 0;
    4 ^. ^8 ~- g) Y0 w" C
  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
/ {9 ~! X) k8 `8 Z在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
3 D7 c- N& M- \7 @& ~& b
你用的编译命令行格式是什么?
, S" E1 ?/ P* a# l; @& F$ h
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-7 21:34 , Processed in 0.030033 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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