找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15766|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- e7 ?1 f' b. Y7 \) d2 o- h: j* w0 f5 ]; k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' W( a! W  f/ L# p: ]& k) g; |* J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 Q/ H; O. ]5 t. I9 T% M2 p1 ]/ \  \
usage: himr <address> <value>. sample: himr 0x80040000 0x08 ~5 }7 n6 H& \3 U& k
+ t8 r6 P, ]* E) e
8 v+ X& }" v( E+ a* A
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
9 W9 m% i; ~: W. z# T* d. i5 r" W2 ~6 \
补充内容 (2012-3-8 09:42):6 W  M7 U! I" _( Q1 o3 e7 @
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
( s8 v5 c6 V, @6 T6 j6 f- j& e这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
7 o2 x- R4 C4 ^
& ~. Y& ^# j# K: c0 V) Ehimr <address> <value>. sample: himr 0x80040000 0x02 L% r: Q& y. Y' d9 b& M8 O( i& s
2 R. V) u" a0 J6 y- ^& c3 Z! c( O
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ w+ J& c* d& p$ Q
himr 0x80040000 0x00* C3 o$ T$ A# k4 k6 b3 Z  B
himr 0x80040001 0x114 h& g. j) |- C
himr 0x80040002 0x22
' V% F2 q7 E6 }+ w3 H, w# G4 d, Shimr 0x80040003 0x33; G6 B% Y+ [) i! G
himr 0x80040004 0x44
# y7 `' X$ r' F6 Z* K8 k- Uhimr 0x80040005 0x553 [- x) I3 y; P% m0 [: I7 L& y
0 J* j% `" c# W5 w  \
SN也是类似。$ f/ t* z7 r/ w5 v) e
# f8 ^6 `' ?  v' J! H( H- y
现在主要是,谁告诉我们MAC和SN的地址?
/ ]! _( w+ T: p4 m, m+ c
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - V0 K( F5 S% A8 o0 m, B, a
一直想找到运程修改MAC和SN的办法,苦于无解啊
& v3 s  a/ d& ?; k& Y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 ]( r# R% L: K# h' ~& }- G* ]% U( u3 ~/ v" o$ S0 |5 r
修改的代码早有了。到今天不会编译。
( q) |* B1 e8 f; o- X0 b; F需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ d# u3 V8 r0 p* D+ H: ~( F( F
  2. #include <malloc.h>; c: j+ v6 m8 L9 D
  3. #include <sys/types.h>6 X9 ]: k1 t$ Q
  4. #include <sys/stat.h>
    + p0 m( c: C# ^( L$ O3 C6 [9 [* H
  5. #include <sys/ioctl.h>
    8 i; M( M7 U4 C
  6. #include <stdio.h>
      k, i; |9 Z5 X
  7. #include <string.h>
    8 B! {% ~6 Y2 {% f9 N, e2 f
  8. 2 D3 l2 l" f1 v. M- }
  9. typedef struct {
    ; C, i' n6 V( e. M2 D0 ~: Y- Y
  10.         unsigned int        e2prom_cmd_sub_addr;; E* ]% N0 I& I* B6 k3 {+ X# R* H
  11.         unsigned int        sub_addr_count;6 u" P0 t1 ^3 `; x3 M# I1 n" ?
  12.         unsigned char*        e2prom_cmd_data;
    ; v. T" D' m4 w" b
  13.         unsigned int        data_count;' f4 b5 r+ ~# `' G
  14. } e2prom_s_cmd;
    ! `9 b/ v3 E; L. G) T

  15. 6 w/ u3 V2 a6 {5 \" m3 c1 r
  16. #define E2PROM_CMD_READ 1
    . o8 m8 l7 J5 `# t) K8 l  ]
  17. #define E2PROM_CMD_WRITE 2  C' m$ [: T! H9 n/ m
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' N5 e+ H3 I$ }) r. O

  19. * r8 d! z. j/ u- L: l
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 |9 Y' C4 T+ ~& }! I& A
  21. {
    * T  n' r. z1 ?2 o' y
  22.         int fd, ret;
    3 _9 K( o+ j3 B0 _
  23.         e2prom_s_cmd arg;0 M1 z. Q3 A6 M  e8 E7 S& z" W1 t
  24.         unsigned char buf[0x18];0 O9 N% R7 J. A
  25. ! Y( z8 [6 q3 z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 S% F8 a( T* c! p6 C5 C1 S8 E  K
  27.         if (fd  < 0) {
    7 J! h7 J7 v- B8 O1 q) g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- L3 a: S& ^% f" }& _; P  a* n
  29.                 return -1;3 B, U- f9 D6 M3 m. D; f
  30.         }9 Z; q; m4 m( {5 x  ]5 C
  31.         arg.sub_addr_count      = 2;1 M+ n7 V" S" G/ C
  32.         arg.data_count          = 0x18;
    ! E7 ^8 Y) U8 k1 C* a
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    # j: ?' A5 E- e' h
  34.         arg.e2prom_cmd_data     = buf;, n8 ~. D6 A! n
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - Q5 z1 C" [& K7 Q, l8 H& F
  36.         if (ret != 0) {4 X) h7 m4 G7 F7 j; }, n. s
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
      [5 y  q7 L5 ~2 Y; V
  38.                 return -1;
    & s+ s6 u: h# Y% W4 a7 y$ l( d
  39.         }
    ) H! U& y: _0 B. a/ ~6 d
  40.         memcpy(mac, buf, 6);
    * n! @$ q% W% `9 I% e7 x7 e, e, s+ A
  41.         memcpy(stbid, &buf[6], 18);
    0 l: \0 u3 X7 o, ~% {7 h( p& ^  h# O6 t
  42.         stbid[18] = '\0';
    6 e4 g- I6 o1 e4 D1 E' u' f- t$ Y
  43. 4 _( Z; k' B6 L! c+ E" O# s* @
  44.         return 0;* X& ], ^. X! ]: D* K/ ?2 z& n0 x
  45. }' i4 [; o) [3 N% @

  46. / U( H# y. {8 I* h* Q* r. @( u, R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- ~# y( i/ @& n7 g! N
  48. {
    ; q0 R2 F' f9 m# _
  49.         int fd, ret;
    5 m+ v$ F  X* h5 W- Z! R
  50.         e2prom_s_cmd arg;
    $ Z3 |: ]3 p. h. _. E% f+ g
  51.         unsigned char buf[0x18];' L8 ?  A! G- L& E' N# Q& L
  52. 2 \/ `+ j- @/ ?: t* U% X% J7 E! ~
  53.         memcpy(buf, mac, 6);
    , D; \' E1 D% g, ]2 D. w7 W, D
  54.         memcpy(&buf[6], stbid, 18);
    & h. T) O4 t! C( Q  N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 y+ z) C8 {* {
  56.         if (fd  < 0) {
    ! k$ s; ?3 R4 g4 H) q( O, V; `' d
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 L- U4 a$ k5 |! K* i/ H
  58.                 return -1;" M5 Z" Z! a% [$ N7 ?/ [/ f8 E& |
  59.         }
    ' {. A' ~8 P& i5 v8 u8 Q" @5 G
  60.         arg.sub_addr_count      = 2;
    ! z( i: r* L) v, S! ]# N
  61.         arg.data_count          = 0x18;
    / A/ S: @" N" E8 j. J9 n
  62.         arg.e2prom_cmd_sub_addr = 0x290;& I# T$ u( j- N6 j7 M% D  l' U: s
  63.         arg.e2prom_cmd_data     = buf;
    ( R$ v) ?* F$ b. W3 a+ i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);5 M: S- l6 R. c6 z  b; F/ ~
  65.         if (ret != 0) {
    8 i7 S8 d/ E( L) v2 X  u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 R( f1 V. B! `2 l$ k
  67.                 return -1;
    . }$ C% ]6 `0 A  \2 s) [7 M
  68.         }, z* b& M, \5 S4 `
  69. : a: S9 }% z& I& O. v
  70.         return 0;
    , l- ?4 u0 t( k2 b7 k
  71. }
    . M7 f/ g. Q1 @7 O
  72. ; N$ D$ c, v, |8 C2 l* R0 \
  73. int main()
    1 O1 w. s. G9 D: [! G4 s% l
  74. {
    " |) {0 P# K- `6 T1 e: ]# E
  75.         char c;& @6 l1 H) d* e2 S# P) L& d
  76.         int i, macs[6];
    " ?5 g# f- {; R- J9 \% M+ ~# w. H
  77.         unsigned char mac[6];
    - g+ p7 h- R" T# |+ M; G
  78.         unsigned char stbid[256];
    ' W& s  Y  M" w( I. U
  79. " ^: @2 L) o% Z  {3 D& z: D
  80.         if (readparam(mac, stbid) < 0)
    . ]$ j5 H' i& S2 K  }5 o
  81.                 return 1;# x% @/ F3 Y! N
  82. + J$ Z, Z& p) ?  Q3 _  \$ ^8 j3 F
  83.         printf("Current parameters: \n");; d9 v2 A" b5 \3 X9 S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 x1 c$ Y9 m4 X! g( p1 `6 f4 F
  85.         printf("  STBID: %s\n", stbid);
    ' {# C( d* \6 R2 \! N
  86.        
    - o2 {5 |$ X9 Y! i# m2 B
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ) {- N7 H  F9 q" ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" F6 P& ]6 F0 N- s
  89.                 printf("Input MAC error\n");
    4 y+ S. q6 x6 b0 T
  90.                 return 1;
    ) q  r( G8 t1 \; ]) B7 l4 q5 a
  91.         }
    & C9 E# Y- x8 V' Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    8 O& f1 G/ E: ]. n5 H8 P
  93.         printf("\nPlease input new STBID: ");
    1 v; A4 o% Q1 M/ A  `1 |2 k
  94.         scanf("%s", stbid);7 E8 J! w( J  O6 @; h( h6 N
  95.         if (strlen(stbid) != 18) {  l2 Q2 F# H! c* N- ~
  96.                 printf("Invalid stbid\n");3 X2 H7 q* M, v/ M5 M/ D
  97.                 return 1;3 |& w/ E: \2 c6 g! z+ f0 i' @2 W
  98.         }
    " b* I4 t* V0 N: }6 x( j' e* o
  99.         printf("\nNew parameters: \n");
    1 V, N9 E6 n, a9 K$ v/ b
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - R- s7 l- ?3 l8 \8 X, t
  101.         printf("  STBID: %s\n", stbid);% G# v! y/ U. o5 @; ?

  102. / V8 Q% j% r+ Z: V8 q3 G0 l
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 a: ?% m) g# ^/ a% C9 R
  104.         for (;;) {
    ) D8 X! @3 s% V5 N4 k9 k3 o: W' K
  105.                 c = getchar();
    & I' x% Z. J1 u8 @& m  W
  106.                 if (c == 'y' || c == 'Y')
    . E$ j0 Y# [. w
  107.                         break;+ z' v4 d9 h; G
  108.                 if (c == 'n' || c == 'N') {
    , o6 Z3 J& |- [: V
  109.                         printf("\nAborted.\n");
    5 @5 h- s& Q0 I3 `
  110.                         return 1;# ~, o( t* t5 }# p- B& C- Z
  111.                 }& U1 E' J7 D# q7 W( S
  112.         }
    8 h) ~% q6 n. J; t7 ?, E
  113.         if (writeparam(mac, stbid) == 0) 4 ^9 {& h- ?* ]4 T  G
  114.                 printf("Parameters changed.\n");4 |- F0 h  W) ~/ Q# ^2 q) r

  115. ) ~5 z, u4 f/ B  ~. B' V* ]+ z: A6 o
  116.         return 0;
    % _$ y  r' N, G0 W4 V# H' L
  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 / z7 C8 m4 ?, F. H5 z
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 G. Z  }- h" ]你用的编译命令行格式是什么?) G& f2 c4 M7 ~! ]& z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-14 20:25 , Processed in 0.030326 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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