查看: 16835|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    5 }) \. @4 M* W$ X6 ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    * g; W: I: s! \/ N3 L. I3 V$ Y" [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; r! r% y' |) A4 Z$ L8 Y' Q: ~usage: himr <address> <value>. sample: himr 0x80040000 0x0# j: V0 ~6 E4 Z+ c& A# {9 r. Y
5 E/ l9 L: V0 V1 C, K  n; W
) K- j7 r! b3 u- |. w0 ]
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& g' M5 o1 U$ i  V
; X' w. h  y, o% J+ J8 i4 S补充内容 (2012-3-8 09:42):  `, t8 v% P* M, J' h% t( d1 |
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. T& r8 h" f% J- D) B
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
8 U2 c+ D! u5 q) ]6 O3 _6 D+ E% F& ~6 c0 E- F/ Q2 w
himr <address> <value>. sample: himr 0x80040000 0x0+ |. d% |% T: Z( K+ f" V9 s, i
) K9 ?& ^8 {+ d0 w
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, x5 b' ~+ r* N2 a* |9 [0 ahimr 0x80040000 0x00
" x4 W. c) l2 G9 i, Ghimr 0x80040001 0x11) ~7 `4 d1 S3 R4 E
himr 0x80040002 0x220 _' x9 s9 t! h1 T
himr 0x80040003 0x33" W. y& w) _. n: [4 ^. V
himr 0x80040004 0x440 i6 O5 d1 U! J: G6 C& I- o
himr 0x80040005 0x557 ?: w& Q0 m! q; d

! _( ^3 ~6 K* qSN也是类似。
+ q# Z1 T; H% W+ Y" x( Y' [4 p( q- H+ Z- E. P" f/ W5 R$ M1 v! \
现在主要是,谁告诉我们MAC和SN的地址?8 K9 |! A2 T  ?
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
' J$ h! x8 q" J. P一直想找到运程修改MAC和SN的办法,苦于无解啊
3 v4 N& j$ |1 k% a+ M( t+ x5 Y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * l/ h( {6 J0 r% }
; L5 t1 A! f; A% f8 d
修改的代码早有了。到今天不会编译。0 ?* i% ?/ r1 L
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>. o7 M# j% Z8 }7 [
  2. #include <malloc.h>* Y) s4 b- D7 R% S$ e( T
  3. #include <sys/types.h>0 K6 {6 F! v7 h: s. N
  4. #include <sys/stat.h>
      e, s6 {: p/ o9 ]  I$ n
  5. #include <sys/ioctl.h>
    . h2 l/ ^5 K! J5 @
  6. #include <stdio.h>0 K5 B6 H. u0 S
  7. #include <string.h>9 V" x; w3 c/ }* ^; j  t

  8. 1 o$ J2 h, g6 w: V$ ~# X& G+ M1 Q! w
  9. typedef struct {
    : ^0 z+ {' _5 \. |4 y  z
  10.         unsigned int        e2prom_cmd_sub_addr;
    % J" ~9 Y$ w  H! [: \2 W
  11.         unsigned int        sub_addr_count;
    2 {: D& \: R  D- l& D! h; r' a
  12.         unsigned char*        e2prom_cmd_data;
    " I) j+ B' R+ L1 ?' ]
  13.         unsigned int        data_count;
    4 j- c3 d5 S8 x1 C
  14. } e2prom_s_cmd;
    : C' G7 o: q' f- Q: O/ F

  15. . N" [# L/ M+ c' `& N  x0 F/ d0 q! G
  16. #define E2PROM_CMD_READ 1
    0 {) h9 o- y) y. j
  17. #define E2PROM_CMD_WRITE 2. a( w  ]: c/ q2 q0 F' {" G
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % D- Y+ r, D# T9 h

  19. 6 Q1 q" t9 ~/ C* p$ s) N
  20. static int readparam(unsigned char *mac, unsigned char *stbid)' \( }9 W6 P  i! L  O( ~4 H
  21. {
    # z1 A% R* }3 m, E  `
  22.         int fd, ret;
    - O: F- `- S; A  x! R5 T9 q3 ?
  23.         e2prom_s_cmd arg;
    # D/ A( d3 }1 z+ H
  24.         unsigned char buf[0x18];6 G! ~4 e. {5 F  R. w3 M1 o. Q, j

  25. 1 y* }8 t7 \: p/ j0 S1 U, N, y2 m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 c) d# c# X' c8 b& _9 Z3 }
  27.         if (fd  < 0) {0 X  l* f/ W* ?  K+ ~  g7 g" H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) q. t; k! @6 c
  29.                 return -1;/ G2 V9 g2 m) S4 e2 I
  30.         }
    % b5 Z6 @3 A% f3 n% N
  31.         arg.sub_addr_count      = 2;
    ; v* `- @& ^1 Y7 I0 _
  32.         arg.data_count          = 0x18;
    ( h. M) u- }6 N
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 ]% b' F1 k) P6 v1 c4 t
  34.         arg.e2prom_cmd_data     = buf;
    9 T6 I2 |7 u2 D9 ^$ _& S& {1 v, F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    4 p5 e4 V" Z( ?& _/ `5 A3 j
  36.         if (ret != 0) {
    ! @6 R5 v. E( `2 K7 x, X; K9 |& ?
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - F% W0 G8 S- S
  38.                 return -1;
    : w' x- t+ M/ _* X( Z# `
  39.         }* S3 h( D; ]6 Q
  40.         memcpy(mac, buf, 6);
    % S9 w! ^; }3 A, m7 k3 z' G- ~
  41.         memcpy(stbid, &buf[6], 18);  W1 H7 `2 _2 |2 \) ]' i5 @* N9 O
  42.         stbid[18] = '\0';3 ]4 _! ~+ Y7 p8 B& i. K0 U+ g3 A& u5 [" [

  43. / t* d) g7 a, o) {. l
  44.         return 0;
    $ f  a* t; t, i' T% M9 b% ^
  45. }6 t9 f1 s! h# l: y

  46. # R' w0 ]- C' w4 y/ b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : Q# T$ z5 L9 j) ~3 {
  48. {
    ) s2 E& l) ^/ |9 ^3 a) W% n5 A
  49.         int fd, ret;, X8 {; `% J. w+ |8 v3 K
  50.         e2prom_s_cmd arg;! e' W$ A2 S0 ^- {5 Q' W
  51.         unsigned char buf[0x18];
    5 W) s1 f/ v" R9 z2 }

  52. 0 a3 e. H" |6 ^% m1 h9 \4 l
  53.         memcpy(buf, mac, 6);; Y/ g2 t" p  |2 w  }9 i: D
  54.         memcpy(&buf[6], stbid, 18);/ P1 ]- Q3 [* S! J9 H
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! F1 I" a- I& I" D. U% u$ m; W" L
  56.         if (fd  < 0) {
    . S8 q) Q" J; {0 ~9 T) e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , S" t% ?' d; T) ]) A
  58.                 return -1;
    / q8 @! y( _- ?8 q- i6 A# @% F& ~
  59.         }
    ( ]% {" c: E7 t) K& k+ x
  60.         arg.sub_addr_count      = 2;( y" ]/ \  [& f$ a  l; |
  61.         arg.data_count          = 0x18;
    7 u% G+ g) [* f: H
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    * i2 n3 m0 C, m8 \7 J6 |6 [+ _" m! m
  63.         arg.e2prom_cmd_data     = buf;. D: v6 Z1 y, J" B- k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , x1 P- _& u+ L" P4 G
  65.         if (ret != 0) {
    5 F0 J/ g; ]/ t& W# K% A1 A
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 v" C* f8 H# P3 y3 G
  67.                 return -1;
    4 r+ o& Z) ~$ y+ y
  68.         }4 T4 s. n5 J6 H& ~1 {) y+ Z9 v. A0 a
  69. : ]+ a3 o: Z7 s/ i) \
  70.         return 0;, d; G  A, V* w% Z3 H6 t
  71. }1 `- f$ ~+ e! R" ~# c# B

  72. / n8 |- I! L9 }3 q& H5 n* G. H1 n
  73. int main(). i! G" O; @% ]2 g% r2 _/ w4 X- H( W% j
  74. {
    4 z+ B  T/ \: c# I/ Y: X7 z
  75.         char c;
    , I. S1 L% L: d
  76.         int i, macs[6];, I* K' M7 s& \3 b- h: s1 f. [' W
  77.         unsigned char mac[6];
    . O* T6 b' w  u. G8 J
  78.         unsigned char stbid[256];
    & b! t% x# D; v7 F
  79. 7 _) z6 p3 t9 t" E( E
  80.         if (readparam(mac, stbid) < 0)
    1 ]- H1 m0 ]3 H! Z: O
  81.                 return 1;0 W9 X: F& |* N0 x8 G; v

  82. + O" z% h0 S9 [; r7 V# B( r! z' {4 {
  83.         printf("Current parameters: \n");, d/ o& F3 t' W; l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * E" [: P0 Q5 l
  85.         printf("  STBID: %s\n", stbid);7 p, R. Y/ i2 Y% Z( Z3 R
  86.        
    . o' ?  _  s; d# s3 _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    5 h6 h% c6 [# d: a7 W4 R0 E- M
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
      ]/ G7 }/ U/ ~: m9 J' {
  89.                 printf("Input MAC error\n");
    6 N% e* @" T8 a# d% A0 I
  90.                 return 1;# b# m* x" |# G+ L1 h
  91.         }1 d( ], o' d& R+ o+ ]
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 O0 P9 c# z1 }# x( c/ }" |
  93.         printf("\nPlease input new STBID: ");- ~6 X4 a( K1 I0 S- p
  94.         scanf("%s", stbid);
    6 ?4 \4 ?7 K' ~; \% @( m
  95.         if (strlen(stbid) != 18) {3 B( Z1 S2 }" x
  96.                 printf("Invalid stbid\n");
      g. G4 e* U! F
  97.                 return 1;. N5 k9 i, p* v5 l% u8 r& A: L) L+ _
  98.         }$ N: Z  _3 x* e& g
  99.         printf("\nNew parameters: \n");
    7 O# z  c. `' [7 ]4 s: ~$ j/ k
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & h1 [% A% n! w0 m9 ?6 f$ F
  101.         printf("  STBID: %s\n", stbid);& G: w" |; L  q4 q' a
  102. ; }- I6 v# L/ e2 h0 _
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 _8 I4 D8 y# ~% E- e9 |
  104.         for (;;) {3 d8 n$ l& d9 j, r
  105.                 c = getchar();$ B9 W9 b  r( P5 U& v; R
  106.                 if (c == 'y' || c == 'Y')' G# p% j6 R- h1 x
  107.                         break;
    , ~# _3 {9 m8 @: q9 h5 F" S3 g
  108.                 if (c == 'n' || c == 'N') {
    8 \" y) K  S& S' ]" B9 @( |, A/ K7 X
  109.                         printf("\nAborted.\n");
    # }( m3 e2 X) M2 b0 Z; T; c& I
  110.                         return 1;
    # n4 ~, N" ~5 Q% T% K4 d
  111.                 }- C% r: Y! D8 q, X. T) I
  112.         }: A4 p" ?6 N- j7 a* V  D4 T  W
  113.         if (writeparam(mac, stbid) == 0)
    : U' D- C- F8 w5 L) v
  114.                 printf("Parameters changed.\n");9 y! B/ q, h- f  S% L' `, @

  115. 8 u# Y: m8 F* Z& B
  116.         return 0;
    , _+ J8 \. e6 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
' q# ?, X# {/ c9 |在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

  O5 S0 ?  Z+ c6 D- @8 B* U- B& N你用的编译命令行格式是什么?" E. H/ Q3 w$ l- \& i
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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