找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14936|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; z: o7 v/ ]4 V! h% O# Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 H0 n8 q, U; K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. I. W3 n2 s+ V3 T. T7 T% l
usage: himr <address> <value>. sample: himr 0x80040000 0x0
$ x% d0 ~$ m! t- h. M  {) I
  V6 U1 g# {5 ?: M/ Z$ ]+ E) y+ e8 e: T; k! x: E$ R9 T6 R/ C
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, I1 G) ?! R2 f+ ?: d- K
; D( ~& ^+ a; i9 g7 t: k" d
补充内容 (2012-3-8 09:42):
% ^" q3 S' Q5 n, H6 N' c2 f9 H+ Mhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 ?+ B$ {: N" k% `$ o这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。( o: E0 U& z. d* z; g9 y" T) F9 X
9 H- r4 n' ^/ {/ {% e6 r9 a
himr <address> <value>. sample: himr 0x80040000 0x0
* O1 v3 |+ q* M% I2 L
1 D( n) e6 I" Y$ w$ f例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 e& I! h6 Z$ Q! M9 ohimr 0x80040000 0x00' `7 S1 O6 Y4 U: K5 n
himr 0x80040001 0x11
9 y) x7 W" e7 O1 P% j* ^4 l9 Fhimr 0x80040002 0x22
, [6 E$ L: m. a9 k: khimr 0x80040003 0x33
; r/ `: H4 i! l3 Ahimr 0x80040004 0x44
% A4 i! o7 C; O, I6 lhimr 0x80040005 0x55
- M( S' s, Q) A, j1 a0 X2 Q1 a+ B" f) V! K& y- e9 C" v
SN也是类似。7 b# E7 h" q) e* U3 r

+ g8 s' m+ R$ \7 M- j  ~  P- Y1 i2 B现在主要是,谁告诉我们MAC和SN的地址?
* H4 r& L0 S4 M4 b( Y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
: b/ w# q" i: |3 d) p一直想找到运程修改MAC和SN的办法,苦于无解啊

& R2 N8 @: X1 L  c8 F源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
3 c) c" `. Y. ~
4 j1 M1 `& X' ]3 ^9 y0 X- w1 i修改的代码早有了。到今天不会编译。
& D8 @5 s8 z5 R4 f9 A: ~需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>2 M% Y2 ~) x0 j/ R5 X8 b
  2. #include <malloc.h>
    3 ~) U0 J. j8 @* a9 H, {
  3. #include <sys/types.h>
    5 p4 E* @7 ~/ Y/ h; b
  4. #include <sys/stat.h>! C$ i5 T/ I: ]# \2 {4 g. c
  5. #include <sys/ioctl.h>
    1 `1 l- C/ l- A1 G3 s
  6. #include <stdio.h>
    % \/ x% a# U9 o) X
  7. #include <string.h>
    ! u% T) y6 t2 I1 A" M; c

  8.   y+ q* s& Q2 l, C0 O) F
  9. typedef struct {
    : }2 ~. N% B% g2 i" s- ], x
  10.         unsigned int        e2prom_cmd_sub_addr;( H1 w+ U! j+ D1 V1 s) Z
  11.         unsigned int        sub_addr_count;
    ! f! S% n" e( N6 [
  12.         unsigned char*        e2prom_cmd_data;3 N' y4 ]* N1 @& k. P
  13.         unsigned int        data_count;
    ' `" d: a$ t! w, Z7 x& l; e, b
  14. } e2prom_s_cmd;* P0 z8 e( G+ M& }) v

  15.   ^  K) |' v% f: @5 X2 d' r" X
  16. #define E2PROM_CMD_READ 1
    0 P5 I; ]! G2 O1 g7 K- C* @
  17. #define E2PROM_CMD_WRITE 2, K; r; b# w  d6 ^' H, o
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 j8 C- `7 F3 z* f8 A& ~# m+ d
  19. * D! e7 @! y$ L
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    7 P) X9 R: f8 L7 T1 J/ K
  21. {
    ! S& d1 |- z! S% a; U5 y
  22.         int fd, ret;
    / ^8 v' ?' G' h( a- ?* H7 l
  23.         e2prom_s_cmd arg;* }: `/ g8 F/ s7 p
  24.         unsigned char buf[0x18];
    - |$ z9 f5 \7 m) |, {  X+ f0 m

  25. ! S, H$ E1 t* N5 k! W& k% I: ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 q7 |" x0 K6 \/ m
  27.         if (fd  < 0) {1 h; u+ M, s, G) @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- a9 v1 s+ v$ `9 O
  29.                 return -1;
    / F' J# q0 |4 ]) _* e
  30.         }
    ; C% b( I8 w& H# ]& d( Z# M8 f4 K
  31.         arg.sub_addr_count      = 2;0 u6 A( C1 d9 {8 k2 \
  32.         arg.data_count          = 0x18;. X2 T" I( N) r' x# V$ d" L
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ; b4 v4 j" u( H4 z
  34.         arg.e2prom_cmd_data     = buf;
    " T7 `# }+ N  j/ `: C. j$ E% h
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ; y( r4 r" u" P7 J/ M/ j
  36.         if (ret != 0) {
      {9 u  B% Y$ Z6 o  ~
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);" e; ^6 r3 H# P7 O* B# g3 ]) P- s' `
  38.                 return -1;4 T1 J2 \; m6 n9 R( k9 i
  39.         }9 T% R, ?3 A* Y8 u. U
  40.         memcpy(mac, buf, 6);7 Z) Q2 x. ?$ O+ `" p( A; y
  41.         memcpy(stbid, &buf[6], 18);
    - G7 J7 [8 x& q+ x+ a4 ?
  42.         stbid[18] = '\0';* m( A% ^! l; r6 e

  43. 0 s) Y+ n  E& K( M6 |+ r
  44.         return 0;7 m, A1 K6 u% Y
  45. }. P+ _8 T" {: K+ \: r2 I

  46. ! s( }9 Q; d1 U8 a* w
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - ]! u) A" R6 c& q2 a+ l- w) S
  48. {$ E7 b) C& o7 j. I
  49.         int fd, ret;( G6 @" K' {+ b" Z
  50.         e2prom_s_cmd arg;8 m4 u5 ?" f3 E! _, S
  51.         unsigned char buf[0x18];
    * U: s. y, }5 Y: x% N, v' m" B

  52. $ C" v' J# c" y* n4 h
  53.         memcpy(buf, mac, 6);
    ( f5 {7 e, I* J
  54.         memcpy(&buf[6], stbid, 18);
    5 S1 T$ W( e1 C( e, ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 V  k8 x( `- u4 W
  56.         if (fd  < 0) {
    7 J, m" A% b% c9 [& n
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . k. e+ G' U* p+ r* ^% \
  58.                 return -1;& H  f. U3 c2 l8 o1 {$ c
  59.         }
      }" B2 r9 d2 f+ [+ G8 W( Z$ y4 O/ s- g
  60.         arg.sub_addr_count      = 2;6 U: P4 ?- f) q5 D1 Q* ]6 [( Z
  61.         arg.data_count          = 0x18;' A% b3 T  {8 s. i& B0 q! B5 K; C
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 _. c9 H; D& v( z! m
  63.         arg.e2prom_cmd_data     = buf;
    " O5 L" _- T5 }, e0 c1 n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);% }) C2 i' _2 Z5 S7 u
  65.         if (ret != 0) {
    1 v1 f! ^2 ~0 G! y' Q( h1 s, q7 B6 x. t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % u/ z  `, R: t( i- h* L2 l
  67.                 return -1;
    ; o' L- G; J* P% R: G& A" L* d
  68.         }
    8 A7 z* L9 b1 E$ T; ]" x

  69. ; d) O6 q) o5 D9 v$ P( r/ `
  70.         return 0;
    , l5 U; U* a: r9 v  {
  71. }
    9 B4 Z6 c0 t3 h$ [% {, l
  72. ( m" v5 l$ D! o4 d9 N
  73. int main()# k1 P  c( `$ x2 V
  74. {1 X! N7 ?) U& F
  75.         char c;, ]) k/ g; ^& I9 Q4 ~
  76.         int i, macs[6];
    % l) p" Y% t) b( ~: `
  77.         unsigned char mac[6];
    5 R) F  w$ F7 g/ k, T+ i) K
  78.         unsigned char stbid[256];0 U) R0 _* z6 C/ t
  79. 5 V+ r/ L- n: C6 [9 a
  80.         if (readparam(mac, stbid) < 0)
    2 `- n) I: ^: t
  81.                 return 1;
    1 ?3 L* q9 Y) v( j
  82. & E1 @2 p% x2 g# l' c3 M  ]9 i# k
  83.         printf("Current parameters: \n");0 A$ D2 k5 f  ]" I/ Y# |+ {' ]/ _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : C8 a3 Q$ p. q) P% z1 N1 v
  85.         printf("  STBID: %s\n", stbid);) m# H+ c" p1 X
  86.        
    & h& c& C8 ]0 X# P, I
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    % u. V$ w! n' l% M/ g, ^. c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {% X1 d9 H8 Z/ Z1 C0 U. O4 q( j
  89.                 printf("Input MAC error\n");) {7 F' l& p' ^9 G# r
  90.                 return 1;
    , H* h$ `0 y% J0 o* Z- v5 N( @
  91.         }
    0 _1 q6 e+ v- S6 M. `9 h
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' C$ }! f& O; d& a# L
  93.         printf("\nPlease input new STBID: ");
    9 Q; u/ k% ?7 f1 {
  94.         scanf("%s", stbid);' |  w8 U' K- X2 N( J8 `" R
  95.         if (strlen(stbid) != 18) {
    " O: D3 n2 j- e* r. }# P0 C/ {7 x4 G& v
  96.                 printf("Invalid stbid\n");
    # E( a* s. o1 w9 S; Y
  97.                 return 1;  Y9 u2 I) g6 k% O. X& D
  98.         }
    , `2 \/ M) _4 _  X* `. \
  99.         printf("\nNew parameters: \n");
    9 X' F/ z' n3 q/ d7 p+ i3 _" \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 }) d7 T) i+ T* g% y- f  |+ {
  101.         printf("  STBID: %s\n", stbid);
    3 W6 H( Y' C  T" g

  102. . m7 J7 D! P1 Z6 }
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ s0 F" w; `' |% d% X
  104.         for (;;) {1 d" h& m4 k8 p7 j/ B
  105.                 c = getchar();  ~3 _  W: `8 U7 E
  106.                 if (c == 'y' || c == 'Y')
    - ^7 P( b! r, s& B4 J
  107.                         break;
    , ^' Z. O3 ~5 \- {9 X
  108.                 if (c == 'n' || c == 'N') {
    # r: ~* r5 H/ G3 b  B
  109.                         printf("\nAborted.\n");: x' D& v  C2 b, a3 b
  110.                         return 1;
    - X0 a! `0 S  t. S9 J
  111.                 }+ X, Z" P% x% U( H" f' O
  112.         }
    " [" x+ W9 p% }% s# O$ h
  113.         if (writeparam(mac, stbid) == 0) ; _7 i" r# [( P
  114.                 printf("Parameters changed.\n");# H( Z9 R% h1 U; O* G

  115. 3 \/ {1 x: d2 o$ a! ~2 @4 E, G6 m2 W" @
  116.         return 0;
    2 Y0 A" K4 b" u  p3 n- H
  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
& N5 ?: c* }3 ^% T9 h# S' l在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 A3 p, X# n5 d8 A$ L( d你用的编译命令行格式是什么?
% L. X% Y/ }( [. Z2 S. B% n/ {3 H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-1 23:15 , Processed in 0.031608 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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