查看: 17537|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* E5 a* F* [& l5 r
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 J7 l; {, a; i" e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. T, i5 D7 a+ i. w# s: ^
usage: himr <address> <value>. sample: himr 0x80040000 0x0
2 M, A* b1 b3 |5 ~* B/ F- S; D& l. S$ K# B# Z- l* ]/ [
5 W, c$ t& d* B& ^, t* z. w
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?* D" V4 y* j3 J$ p, ]9 a8 s

9 i- f. H6 F. K* b/ x( V补充内容 (2012-3-8 09:42):6 c9 u3 c7 {. _+ I
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, w3 w" q9 c- W' b7 a3 E
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
( K( W  g0 i" C2 o5 d' p; p7 A( r
' l$ Y/ }" M9 \himr <address> <value>. sample: himr 0x80040000 0x0
! h2 Y+ R: V; N4 w& ^. f
# V' }, F- B* d  ~9 E! F例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, h2 J4 ~2 j) f2 G: j, l! D4 jhimr 0x80040000 0x00
0 ^' A  g! @& F; O5 k$ Dhimr 0x80040001 0x116 v* o! v* X% I0 |2 @' s
himr 0x80040002 0x22, u: n# ?* `6 x3 b9 X
himr 0x80040003 0x339 H6 o  v0 Q* S1 S
himr 0x80040004 0x44+ X5 t4 o9 P- I9 a2 b: M
himr 0x80040005 0x553 x' {6 c% ~. z( }* w; s

3 ~: o9 Y- N8 j/ ESN也是类似。
" Q+ N, N: t7 u# m! C3 P
+ g0 e, M& `# d2 j/ j1 m现在主要是,谁告诉我们MAC和SN的地址?
% y* U, L( Z' X; U! e
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 + U$ t3 h; `+ e7 o5 g' F
一直想找到运程修改MAC和SN的办法,苦于无解啊

1 [9 @# z- [! V! l源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( ^3 K/ I& S$ k  Z# r; P
2 [9 e4 Z% r2 O# Z修改的代码早有了。到今天不会编译。; f% Z* R" R/ [3 I$ P
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ Z7 p8 @: M% t+ u
  2. #include <malloc.h>
    8 j, O( d$ j) K
  3. #include <sys/types.h>/ e" Y3 u; V  ^) f. {) [
  4. #include <sys/stat.h>& q9 s3 j% j5 c: ]" I
  5. #include <sys/ioctl.h>
    # U5 E3 a+ O5 \& Z5 @" b+ }9 Q
  6. #include <stdio.h>) Y% a, @  E& k8 i1 y
  7. #include <string.h>
    0 q/ X& f$ |7 m: {2 ^$ e1 t* q( T

  8. 5 c6 }. `3 [3 n! g( ]: h1 O+ j
  9. typedef struct {
    & l& Z$ E" j9 `; o1 s
  10.         unsigned int        e2prom_cmd_sub_addr;8 f0 @. B# l1 V* k% J
  11.         unsigned int        sub_addr_count;
    8 U2 }7 [/ s' k4 Z1 m. i$ j
  12.         unsigned char*        e2prom_cmd_data;
      K# s7 [  u8 Z; q) m: H8 i9 {; O
  13.         unsigned int        data_count;
    + l/ H( [: O( T" @" ~! K+ e; [
  14. } e2prom_s_cmd;& d8 e7 N: N, X8 v  O6 I; ^* l' D
  15. ' ?) t* i# ~; z( b! i
  16. #define E2PROM_CMD_READ 1
    . f( K& z1 t' @1 S1 X  m4 I
  17. #define E2PROM_CMD_WRITE 2
    + Q- M1 t% k3 j7 T
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"5 ~9 ^3 \; L  t$ K3 q1 x+ {& W6 D

  19. + Y9 j/ @' C! f( \3 }
  20. static int readparam(unsigned char *mac, unsigned char *stbid)) P0 L" `+ e3 I6 N' A1 N7 v" q! n
  21. {
    4 Y: y+ I6 l% S
  22.         int fd, ret;( Z/ h2 w8 I2 a) p+ D. I* w
  23.         e2prom_s_cmd arg;
    ) f% `& M/ |( v+ G
  24.         unsigned char buf[0x18];
    ; `7 P5 M' {  S4 L3 q" I* v
  25. # m" C4 q2 _6 _0 Y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);1 k7 x0 P9 d. ^) r
  27.         if (fd  < 0) {
    " H( |+ `9 A6 m; N/ |# _6 w$ J6 X$ t
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 w8 p$ A* a! M! f( b" J
  29.                 return -1;
    # x/ C& K. R: P# h% N( d. a
  30.         }% F, s' w7 b; ?5 m: n
  31.         arg.sub_addr_count      = 2;
    / L' H! a! c9 n' g+ ^  S
  32.         arg.data_count          = 0x18;7 Q# C, S0 `! h" j0 q
  33.         arg.e2prom_cmd_sub_addr = 0x290;. m5 p2 [; k% n1 L1 \- p6 U- L( }
  34.         arg.e2prom_cmd_data     = buf;
    1 ]0 M8 q: A& G7 s0 J9 R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! [; d2 n0 p9 Q7 ]9 ]: M% i/ ^
  36.         if (ret != 0) {% u1 K8 H9 ]( L% T  O1 m4 F: y; A  T6 H
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ! q" v( [, ?1 M9 O; b7 ^0 ^
  38.                 return -1;) F- Z: Q9 ~5 E! G$ Y% K, Y
  39.         }) a- E+ ?" C2 ~8 E/ [" o
  40.         memcpy(mac, buf, 6);
    $ ]* D# H9 v1 i# ?" ^2 T
  41.         memcpy(stbid, &buf[6], 18);
    * w* W* d' f  f; M- l2 r
  42.         stbid[18] = '\0';
    7 E8 a6 k5 V: o% z& L+ _! S. p

  43. 6 p0 [0 t! N: o4 W" c* n5 K
  44.         return 0;
    ! _& B/ f9 Z8 d8 `5 J& S
  45. }
    ! M9 E; V7 D8 |: ], a0 W1 Q& q" c
  46. 0 k0 E: G3 F0 m$ B4 H. }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
      _6 i. |1 `( q; g8 }9 j3 L
  48. {
    : O8 d! |7 @2 W
  49.         int fd, ret;
    - f: m8 N# J  c: _. |
  50.         e2prom_s_cmd arg;0 \% H2 F0 n2 E2 g  A6 E% X
  51.         unsigned char buf[0x18];8 H8 e7 H9 t8 E1 h3 q2 {
  52. " j( [0 g" }+ V) p
  53.         memcpy(buf, mac, 6);. T1 A: _0 S1 N: _& p; E
  54.         memcpy(&buf[6], stbid, 18);
    4 @3 x7 G  `3 r1 `  v' ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : {9 Z+ @& J3 q2 M0 \
  56.         if (fd  < 0) {3 ?1 N7 g& G' P+ x* y6 V1 M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& f% O% V4 o+ ]6 o9 w& ^' |
  58.                 return -1;
    # ?9 Z$ f" o* v- i! @  j! g
  59.         }! l0 s" q1 z4 ?" S
  60.         arg.sub_addr_count      = 2;
    + g7 v' F+ o8 d' \/ c- k- \' _
  61.         arg.data_count          = 0x18;, h/ G$ q: V6 Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    7 s1 o" h' |9 ^# k/ A. j- G
  63.         arg.e2prom_cmd_data     = buf;
    , `# Q3 ~( A. ]. C4 E
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);3 ?( X) p) b; j7 b
  65.         if (ret != 0) {4 a# j) I- X+ Z7 Q. k/ R! i
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 {8 Z4 ~% [1 d$ w. F& w9 T
  67.                 return -1;
    & S+ C' w; T9 N/ R# D
  68.         }& a; c: [! Z  R, s$ C  W

  69. 5 b$ d" ^. `) s7 E3 Q  y+ v0 m. L
  70.         return 0;6 V+ u8 s1 v, h* S1 U* z
  71. }
    . P5 S. r' ?/ H
  72. 7 H: x$ M3 V8 {% t$ h+ d
  73. int main()" D9 t, J& i! E& ]+ \! z0 ~% X
  74. {% ]  @; Z, \. ^4 O
  75.         char c;
    - y9 Q2 g! P% ~( c' S) z5 `1 k
  76.         int i, macs[6];
    ; v1 V: h4 _4 Q$ N
  77.         unsigned char mac[6];" g& ^6 A8 V1 E  u: o: ?
  78.         unsigned char stbid[256];8 [4 O$ R) T9 u  ~# n

  79. " a6 O( e6 |% Y, ^9 t* b. q4 T
  80.         if (readparam(mac, stbid) < 0)) B+ ]* x8 i8 O
  81.                 return 1;
    2 v9 k6 C8 t- m

  82. & Z  Q! w- Y, Y8 I+ s
  83.         printf("Current parameters: \n");
    , M/ }! _, P9 [" @3 e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 A+ e. U2 e$ @7 F/ k! R, Z4 K
  85.         printf("  STBID: %s\n", stbid);
    - [9 M# O$ }, e% g4 A  ?7 ]
  86.        
    % p" m% b: T4 w- V+ ~  T2 C2 I
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");: j- @% d; s  ~$ O$ g: [" P1 G6 U0 B
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
      t1 o$ [) R$ l3 c6 I4 H
  89.                 printf("Input MAC error\n");! t/ ^! S5 N& j8 q2 U% ]
  90.                 return 1;
    " _; A. `$ ], H& D  Y$ k$ L
  91.         }, n7 u9 h- ?$ U: S- v4 D0 S% v
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) j7 ^8 D! W" [7 J8 _
  93.         printf("\nPlease input new STBID: ");8 a& i) @/ w& o! m" w1 m
  94.         scanf("%s", stbid);8 A" p' I, c( ]
  95.         if (strlen(stbid) != 18) {
    ! i- Q# D9 J8 h: |' {) s# \
  96.                 printf("Invalid stbid\n");
    4 C4 o4 a( S! @9 d7 e$ k, c
  97.                 return 1;4 c, J) C6 i& s8 d) z
  98.         }/ _  f  i) M  S- C0 K5 \( j+ o; J
  99.         printf("\nNew parameters: \n");
    , e  ]  l' l/ y& ]/ J
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 R' }* q6 H* W
  101.         printf("  STBID: %s\n", stbid);+ x; l% s' ~0 w  b% X' h

  102. ( Y, |- C5 A& Q/ m# `2 G
  103.         printf("\nDo you want to change paramemters? (y/N) ");! i8 D8 y/ v; B* E: ^) ?# g
  104.         for (;;) {6 N5 ~% V) w- i$ p. ?
  105.                 c = getchar();
    " J7 U$ p% d$ ~+ m$ Y: j% I! ~
  106.                 if (c == 'y' || c == 'Y')$ ^# [) h* V2 M/ d' ?0 H' Q
  107.                         break;
    ' t# @8 D/ ~5 s  s; y
  108.                 if (c == 'n' || c == 'N') {
    5 t! p! r, @0 G
  109.                         printf("\nAborted.\n");
    + J2 F1 r8 n& j4 y7 a# A- c
  110.                         return 1;. F( j: Z. [  A+ W6 }
  111.                 }
    6 A; W! H7 k5 P  e( ?$ J  ?
  112.         }
    6 ]: @5 s7 U, M; b  v$ t% l
  113.         if (writeparam(mac, stbid) == 0) ; W8 {6 h8 F  f# c3 W# `# k
  114.                 printf("Parameters changed.\n");
      u6 f4 ?  p5 ?0 e- q
  115. - E6 _' z0 @  s3 ^" D, X0 N1 B
  116.         return 0;
    / U7 n+ ~! z, V  |
  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 . W" n# n4 ^! H* {. _" c( ]
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 x) h+ J9 u; L你用的编译命令行格式是什么?# x3 S2 q! _; \4 q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部