找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15632|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 M& g' {0 k/ C2 M
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- Y4 u- i  p) a7 u* B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* N6 b1 l2 L/ G3 }5 F! }
usage: himr <address> <value>. sample: himr 0x80040000 0x0  ?4 o$ P1 W2 y7 j  Q& G' l* J# a

9 g, ^) u8 [) x2 V0 M: n. r
7 e( {; i( e( ]- e8 B( A$ k不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?0 h* ]5 i( Y1 S) N

, Y; U2 w( D- u1 u0 v& w补充内容 (2012-3-8 09:42):
7 `* J6 ?  `5 ^* V  O" R# q; a* lhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数2 n6 _) J. n9 h( @5 q) _
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。3 m5 }- \. O! r

( b' s. A4 ?/ C2 P$ g! hhimr <address> <value>. sample: himr 0x80040000 0x0
3 B4 N0 A6 p8 B" B
- N7 f% S2 P5 ~" J: ]3 ^例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: Q: q' F) c7 N, T( thimr 0x80040000 0x00% g, |9 W* F) q/ z8 t; P
himr 0x80040001 0x11) U8 i& f, |- w! v( g
himr 0x80040002 0x22
" X4 C3 R3 v2 w  thimr 0x80040003 0x334 `. O* u0 Z% l
himr 0x80040004 0x44. r8 D  ~. u0 q/ C- L/ l
himr 0x80040005 0x553 {8 l% g" [) @
/ B: e; F+ z0 ~/ |' K
SN也是类似。" n1 W8 n2 y- m# S) i0 @0 m& G
9 V1 `' m2 G# q* W
现在主要是,谁告诉我们MAC和SN的地址?
: c" {& L' ?, {; [
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
4 A' `- B) v( F' j一直想找到运程修改MAC和SN的办法,苦于无解啊

1 N) j0 x) b+ f4 \' A0 ]( w源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
8 S. W  V' u/ }/ P- ?
1 i" ]" H! ?; B1 Y7 {修改的代码早有了。到今天不会编译。' O) Y+ P1 o1 m/ q7 H3 Z) X
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , {. m3 L3 v, P5 y
  2. #include <malloc.h>
    / K# v7 S* k. l( @
  3. #include <sys/types.h>
    : @! p  |( R/ C1 ?
  4. #include <sys/stat.h>
    6 [9 V5 {9 C- W  F& E5 j. ~
  5. #include <sys/ioctl.h>
    + W( F1 {: i7 x- c; f5 _
  6. #include <stdio.h>. \+ n7 ?1 B8 E5 N9 A4 _7 {
  7. #include <string.h>
    7 A0 g! ^: A% R
  8. * U: y( G& R) ]% r& r# b: I7 o! s
  9. typedef struct {
    / E9 c' x/ F" P  K1 K- n3 H8 @
  10.         unsigned int        e2prom_cmd_sub_addr;2 ^  |, N' R# s* y( k$ `, V5 b
  11.         unsigned int        sub_addr_count;3 V7 l9 D0 `8 O- l( S
  12.         unsigned char*        e2prom_cmd_data;
    , G& v- m7 N" m0 ~' {& E
  13.         unsigned int        data_count;
    - l8 w1 k- c  y  e8 d2 x, ^
  14. } e2prom_s_cmd;+ w9 u" {/ |& h( W1 O
  15. 6 [, r# _8 [( M4 A8 I3 u
  16. #define E2PROM_CMD_READ 1
    9 b9 ~; q, x* n  }  D3 ?  j
  17. #define E2PROM_CMD_WRITE 2" u$ C1 D# u  p1 T6 [3 X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' e! V) y5 E5 x+ v2 f) x

  19. . D, I8 C7 E/ j) Z% x! h2 e/ P0 w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& q# _( @" V6 q
  21. {9 t! z4 W% E. `7 d
  22.         int fd, ret;
    3 D6 U6 }) k5 m+ R7 g; G6 q
  23.         e2prom_s_cmd arg;
    7 ?, Q7 {& u: e( u  g
  24.         unsigned char buf[0x18];
    : H4 {6 A6 B* m" n& y/ Y/ g0 f9 i) b

  25. , v( c8 v  w/ O! m4 ^/ F
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ n9 E2 K  n+ x" }
  27.         if (fd  < 0) {
    " P, [  W$ B/ V4 Z/ N8 S& ^8 s
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! ?' \- Y& O: k6 t& `2 X* }0 q5 L$ k
  29.                 return -1;
    ' t; e9 @7 {% Q0 G; P/ Y1 y
  30.         }
    + v6 R6 D- [; ?; O& I  x; X- k
  31.         arg.sub_addr_count      = 2;) |* |6 j4 f3 I5 V& R7 r; Y
  32.         arg.data_count          = 0x18;" {3 ]2 X: S- K% h4 w. Z
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ b! t2 ?. Y% p" M  B
  34.         arg.e2prom_cmd_data     = buf;
    5 [* s7 t% w; H6 ^2 T
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / I7 T, m& B' O. l# W
  36.         if (ret != 0) {
    8 }5 _% Z& Y4 l) F* ^
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    / Q0 B4 h; i2 c  I; \
  38.                 return -1;) n9 x- T; s+ ~% a: s+ q) E# f
  39.         }7 ]* y* i( k& P  n% T
  40.         memcpy(mac, buf, 6);, J4 ^# M" _$ Q
  41.         memcpy(stbid, &buf[6], 18);* R! F  k: R$ l+ P% ]
  42.         stbid[18] = '\0';
    ' z7 [2 S& y5 s1 }7 @) g1 a; T  ^

  43. / C  s. K* J) G8 Y% c0 U# E+ T
  44.         return 0;
    / j  k. s* a5 L. l" ^* c( {
  45. }! F: F" k- V" j8 p
  46. ! Z) Y/ Y3 i$ S0 n* l3 b7 Q, F
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)& M- D( x# l' M2 A" h
  48. {2 m3 ~) S7 b$ h6 \' c; B
  49.         int fd, ret;
      ~  M  c4 K3 z
  50.         e2prom_s_cmd arg;
    ; Y" D" j* q9 l! ]0 V
  51.         unsigned char buf[0x18];. X% ]% @& M* M9 }5 W
  52. 3 ~2 e" F0 T/ q: {  ^2 k
  53.         memcpy(buf, mac, 6);
    8 r( i4 V, c+ \  S; S
  54.         memcpy(&buf[6], stbid, 18);! c8 g8 p' s, h: b# m6 ]0 E
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    + I7 b/ P5 g+ I, M
  56.         if (fd  < 0) {
    2 \- ^' R8 s) a9 j$ `5 [$ r. `0 v3 i4 v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / x8 V. K4 L% L8 {( G! w8 P
  58.                 return -1;: D6 R6 i7 Z/ I: x# _, s
  59.         }& }( p; f$ g' L2 a3 a3 Z2 X
  60.         arg.sub_addr_count      = 2;& M4 L; I  W. |, x7 K  }
  61.         arg.data_count          = 0x18;
    5 V7 h2 ?: h  R5 O9 k
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    , L! D2 t  l8 h1 Y+ ]- z
  63.         arg.e2prom_cmd_data     = buf;3 b. @0 ?4 e9 f6 r) b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ L1 D3 Q9 |; M; [
  65.         if (ret != 0) {
    ; l# x; ?* n) W6 c. f0 u5 m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : Y& S( G; }( C, g9 h' V
  67.                 return -1;9 C4 i9 q; C7 W! D3 q* o
  68.         }9 `7 R5 r4 F. m( _3 l
  69. 4 B" D/ S% F$ O* i( R9 Y9 v4 s: ^- w
  70.         return 0;& E/ w! W/ j" j: C$ `' h
  71. }- k7 D) o; v$ e0 {8 R
  72. 3 y# P7 ]/ x7 G; p3 I7 j' N' L; U
  73. int main()
    4 n, L$ N3 E3 H# C" E
  74. {) Q2 _/ |, x0 t1 x
  75.         char c;6 J1 v! N+ s& i9 C* J  ^" k2 I6 e
  76.         int i, macs[6];4 F5 e5 ^# H, ~/ Y5 \- b0 [0 {
  77.         unsigned char mac[6];3 F$ [- w# S9 W" r' o
  78.         unsigned char stbid[256];% `- O; }# j+ X

  79. . B# Q: o" d; r! i$ q
  80.         if (readparam(mac, stbid) < 0)
    & ^, o1 }! w, Z+ e* q3 |0 d
  81.                 return 1;
    ' x; E5 Q0 x; H! }- r% A
  82. # A( U& _* L  m" F, B; T
  83.         printf("Current parameters: \n");8 p1 F) W/ J0 Y& y/ z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  l) B" F" _+ ~+ ]
  85.         printf("  STBID: %s\n", stbid);
    ! N) G6 A, x7 [
  86.         - G/ \: K1 X) t2 y2 e
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");- `& O1 p7 A$ ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    / c7 |$ Q1 S- w
  89.                 printf("Input MAC error\n");
    8 ~$ ~, H2 ^* U. k# @: m
  90.                 return 1;
    + j6 S' p0 R$ m$ |, S
  91.         }' w! A9 g  p! \" t; s8 K
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 T6 T! ?6 x, ^* B
  93.         printf("\nPlease input new STBID: ");
    ' d+ q/ [, l2 U
  94.         scanf("%s", stbid);
    # q1 Q7 @5 }+ b8 f) i
  95.         if (strlen(stbid) != 18) {0 U2 w* V0 W. \) f: X7 z
  96.                 printf("Invalid stbid\n");! p8 i  j$ M/ _7 [% i
  97.                 return 1;
    ' A) X+ A$ n# H5 Z! T! |7 a
  98.         }
    0 S' O; Y0 s- d6 @
  99.         printf("\nNew parameters: \n");
    3 i/ E' V2 ~4 \) I4 [( J' L1 p  \% |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 L2 y* P) t+ K6 k& E2 _, a
  101.         printf("  STBID: %s\n", stbid);
    ! ~: C7 K) M3 e- S+ d: L: Y6 N

  102. 7 N& @; ?  b7 ^$ |2 W
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 ~' }' a  G- m. |. H
  104.         for (;;) {
    2 I. N" e5 J* e+ }2 }( H0 W
  105.                 c = getchar();
    3 ]+ V. C: ]+ U$ c% @! c
  106.                 if (c == 'y' || c == 'Y')# [" n7 |! E/ h; i2 k
  107.                         break;8 [5 n% D4 i/ R" _
  108.                 if (c == 'n' || c == 'N') {
    ' u4 [& w' x( g# T
  109.                         printf("\nAborted.\n");
    + f- |4 N- S! I; X
  110.                         return 1;: j( _, ^& V- U  S
  111.                 }1 r6 @  |& o1 ^+ W( E0 a9 [" v
  112.         }6 r1 a3 P' R/ }( j
  113.         if (writeparam(mac, stbid) == 0)
    7 S- ?6 w# ^" V% t" q' [+ @
  114.                 printf("Parameters changed.\n");
    * R/ F+ e' P' {/ r5 i

  115. ; J: ], a# t' w! i- w2 f
  116.         return 0;
    5 M! K- o1 C9 X2 K2 [0 r
  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
  H6 e4 @9 W- W, s$ P6 t在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

. C7 U6 J! |3 T5 G你用的编译命令行格式是什么?4 D+ `4 ?4 J! n4 \5 v8 |, K
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-20 10:18 , Processed in 0.025826 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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