查看: 17589|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 C& W. M! Y0 ~) j. i; ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig, [( A/ g' C4 X4 V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:8 p. z6 r) J: C( _; g( U* ^, a
usage: himr <address> <value>. sample: himr 0x80040000 0x0
: n( M" C) s  {7 H8 U3 g
3 h0 Y6 i$ |' i0 s( c3 M! o$ H1 f/ S$ v6 h% H# |
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 V3 Z& E- Z! w, x; @
# k% T/ c% E; [7 j2 c: i( O1 A1 {补充内容 (2012-3-8 09:42):
; K3 D& i: o, [6 p" Shttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
9 D( e* R' G' {( o0 A这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
8 S3 u8 j6 b' n# d5 e$ w/ X8 M; W( C/ n
himr <address> <value>. sample: himr 0x80040000 0x05 P& O2 Y$ k3 w1 I3 s
, W8 K$ n. A+ `. B0 ^
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。: v+ R2 Z& `% p$ O: o& {( `& R
himr 0x80040000 0x00: V8 ^0 v( T- d) ^
himr 0x80040001 0x11
3 |+ C8 B% @! K& Qhimr 0x80040002 0x22
0 \3 }' X0 W; o  H5 O% M# Dhimr 0x80040003 0x336 p' K( u+ K6 B" _  U  `9 Z
himr 0x80040004 0x448 j1 F" b( k* r4 _2 ]; l6 ?* L
himr 0x80040005 0x55+ v- r% c- ]! s5 ?

4 ?! }) j/ i5 QSN也是类似。
' J5 w( U! W3 J" j* R1 ]7 Y% g" Y+ ~7 j- }- K. I0 q4 l; m
现在主要是,谁告诉我们MAC和SN的地址?
4 F! ]) ^5 K; o' G7 R* E. h, P
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 C  L; z2 v% V- X3 k  |一直想找到运程修改MAC和SN的办法,苦于无解啊
# H) V. t& a' r# a2 w
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 D) n, a" r) j
$ v: u& R3 n& b, U修改的代码早有了。到今天不会编译。
  J* p3 Q* k  R" |: P; o+ @需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + \8 {% R! N  I0 U# k
  2. #include <malloc.h>
    6 B! i8 A; b. |/ |1 D. b
  3. #include <sys/types.h>
    / e2 O3 `; q8 K" i2 W( |
  4. #include <sys/stat.h>; D6 F4 D0 r  C
  5. #include <sys/ioctl.h>
    2 @! `8 b& W; @; r( \  R0 b/ G6 n: P
  6. #include <stdio.h>
    ) ]) g6 {8 [0 b+ Z4 D" d
  7. #include <string.h>; ^- R) Q: j6 w7 x# V( V4 K

  8. % s6 r' c& Y3 W* A, `
  9. typedef struct {4 r7 ?! j6 K7 [: ]# O
  10.         unsigned int        e2prom_cmd_sub_addr;
    % ]% `+ X! Y' `
  11.         unsigned int        sub_addr_count;
    1 ^! h2 V% w! `, V3 N
  12.         unsigned char*        e2prom_cmd_data;/ }0 \; R' v# R& C+ E3 H
  13.         unsigned int        data_count;% m0 l8 |" j% [( p
  14. } e2prom_s_cmd;1 {1 T; e: `% S+ Z1 v, K
  15. ! {; T' g- @4 r# S$ c
  16. #define E2PROM_CMD_READ 1
    - S7 v3 [. [, A( t$ w  ^
  17. #define E2PROM_CMD_WRITE 2
    % k3 d& [/ o, |3 }/ Z. ?- T! e6 T
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . X$ e$ [5 z% M( l0 n0 T

  19. 8 @1 i# a3 y: K& V0 Z: c0 m
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 B8 A+ a" N' `: b
  21. {
    , D: k8 \+ m# _
  22.         int fd, ret;
      I) k5 T$ D7 B" y. Y
  23.         e2prom_s_cmd arg;3 ~5 l- Z' I5 N9 E" B
  24.         unsigned char buf[0x18];3 W, h1 j9 q5 _& \
  25. 3 {( Y6 x4 ~3 \/ I6 E0 m6 [. C+ s2 ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( w/ G/ U8 ?! e% P3 Z
  27.         if (fd  < 0) {9 \5 E( D% M* t8 Y4 e+ h1 r
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 ^6 u% {% p8 w3 F: M6 b
  29.                 return -1;. o  B1 i& X0 H- a
  30.         }
    ) d( b2 q# |/ Z& h
  31.         arg.sub_addr_count      = 2;
    / e: z. U9 t; t0 ^) C. I
  32.         arg.data_count          = 0x18;
    6 d- E9 J+ k, A6 v6 b- t( {4 F
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 q6 Y# ~$ B  `& Z4 |/ S. B1 B
  34.         arg.e2prom_cmd_data     = buf;
    - o' @) ^% [4 H: z- |( n8 k: b0 h
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 Y2 @: F# G7 U' q6 w
  36.         if (ret != 0) {
    $ i2 t" w2 ^# l5 s* i6 f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 {: R; ^1 U% T, `( n8 ?
  38.                 return -1;; O2 M  e4 k0 B8 w- d: ?' ?
  39.         }
    - [) n" u$ o+ h( e6 B# h* y
  40.         memcpy(mac, buf, 6);
    ! @9 e! m5 }: Q, g( J  [
  41.         memcpy(stbid, &buf[6], 18);
    5 i" J) m' H# n+ }9 o7 i
  42.         stbid[18] = '\0';
    ! Q9 k' ?, M* p+ t; a6 v9 K
  43. . y: i9 P+ y& z9 R+ f& m
  44.         return 0;, ~2 A9 H! u% e  j+ C
  45. }3 a7 }$ }- r- X

  46. * \& h2 ?) F' y: \5 H( Q# p' b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) f8 s& Y4 K' `9 @
  48. {7 J" b% O. G/ S1 H- O% O! s* `
  49.         int fd, ret;) K+ z( b6 b9 I. e% X
  50.         e2prom_s_cmd arg;9 M9 O# \  P5 S6 A
  51.         unsigned char buf[0x18];: }0 X* @0 z1 O1 S
  52. 9 I5 W) T$ M7 B0 r/ E
  53.         memcpy(buf, mac, 6);' D3 V. z) Y: J5 c" K4 m) I
  54.         memcpy(&buf[6], stbid, 18);
    : u! J" R( r/ f$ U$ x
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, M  u$ C3 m7 h$ h9 N
  56.         if (fd  < 0) {
    - k: j# K5 h$ K# G1 N
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) w6 c3 Q% u- f9 j
  58.                 return -1;- b' x9 i5 q* H! Q
  59.         }
    8 @3 i% U' h- T- ?+ S* i0 @
  60.         arg.sub_addr_count      = 2;' @1 J# Q/ v8 Q9 K- f
  61.         arg.data_count          = 0x18;0 E+ Y" A) S8 K# ]8 J) ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    7 o; a$ n& o: \/ ?4 T
  63.         arg.e2prom_cmd_data     = buf;
    $ y7 w0 ^, G. W8 B5 _2 D: o
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# z$ t1 ~- M) L  n" f
  65.         if (ret != 0) {
    0 h& E4 x4 J( X2 i$ M
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 M( T: S3 S% g- O( M; U! ?: ^
  67.                 return -1;" V/ _7 b/ ^7 {* T( W
  68.         }
    3 k3 ]! x) A# @$ I

  69. 8 g# D, P8 Q$ Y2 m1 T3 I
  70.         return 0;9 \6 }* b, X1 d1 r
  71. }: }: ?* {0 a% |, E

  72. 7 x3 m5 o0 n2 N0 Q
  73. int main()
    " n  Q" R: q# h  X: w0 D
  74. {, l$ ~' A0 C4 h: U) g+ U5 ^
  75.         char c;
    # k- p/ T( H5 A, ^5 s: K5 j
  76.         int i, macs[6];
    2 y+ ^7 g& _, E8 E  Z
  77.         unsigned char mac[6];5 Z. i4 A( L- X0 G
  78.         unsigned char stbid[256];$ b: X5 a2 E3 ~: N  Y- }  |( g
  79. & J2 J; ?' ^  Y" [3 W1 o/ L# f3 S
  80.         if (readparam(mac, stbid) < 0), F7 ]0 F4 a) G) n  D! w6 V4 I
  81.                 return 1;5 g2 B+ E3 @$ d3 |* S  x( }; _
  82. 6 q( m- e1 C: [! Y% O" `3 M( c
  83.         printf("Current parameters: \n");* R& a. G- n9 f1 K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 x/ O( g7 A* {  G. `$ \+ Y+ V! A
  85.         printf("  STBID: %s\n", stbid);: G+ A  W% \6 o+ @: c$ W
  86.         / F8 j1 x" X, S) E" F, W+ n5 f- X2 ]
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    1 H  Q1 {6 D* v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! `- q/ W5 G6 j( B  l1 }
  89.                 printf("Input MAC error\n");
    : J5 M- y  F2 V. ?8 B( ^) Z( {
  90.                 return 1;
    , W, Q$ e2 O2 v. j) ]
  91.         }
    + X& a! Y; L) J. B, P0 b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    $ P1 \; j" e* O' r* ]6 |# C
  93.         printf("\nPlease input new STBID: ");
    2 l" N7 [4 I# h5 J8 S
  94.         scanf("%s", stbid);
    # C! \7 f& m, S; L  R# L/ W
  95.         if (strlen(stbid) != 18) {( e+ }  i% M' c' m7 W4 S, W
  96.                 printf("Invalid stbid\n");! i0 R1 f; r4 h! k: F
  97.                 return 1;
    + T+ _" I$ U- _. x( M' [5 f1 `
  98.         }
    7 @' n# `" @: Q) n2 h
  99.         printf("\nNew parameters: \n");6 W: a4 }$ Z$ N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: z  f, u6 c3 ^
  101.         printf("  STBID: %s\n", stbid);0 T  C5 `  G; r! Q5 z+ n7 S% G' e
  102. # s, v' L1 |  M: Z1 H: d' Y2 B3 U
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / Y' B3 Q, B. @* N# S* U) J( z
  104.         for (;;) {) {# z; d& V$ t5 ~4 c  |+ M4 s7 B
  105.                 c = getchar();
    & x2 }4 t8 M8 ~
  106.                 if (c == 'y' || c == 'Y')
    7 B4 |5 |# t1 \! a
  107.                         break;
    ! B8 F. H$ `) w6 b4 T
  108.                 if (c == 'n' || c == 'N') {; {" Q# U: z. H, w
  109.                         printf("\nAborted.\n");# [# X# l$ s" A2 J( o; F0 ?- k
  110.                         return 1;
    3 Z* l% E, r) F$ V6 ~
  111.                 }
    / R8 Z+ T, M# {  _% c) B+ ]
  112.         }2 j+ P4 l! U: @, p7 N& {# \
  113.         if (writeparam(mac, stbid) == 0)
    $ _4 \5 h4 M$ N5 v( Q5 ]+ q
  114.                 printf("Parameters changed.\n");" ?) T; e! P4 u0 Z7 n1 H/ I+ T
  115. 9 o8 u* ?/ T$ d, A2 M0 a; F* c
  116.         return 0;
    ; [, x, C% n( M2 m
  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 + O* k7 n& V0 U! j  b' ]7 b7 D; e
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ D7 {/ [+ @, d9 o, p) D你用的编译命令行格式是什么?# y2 F4 P( T: z
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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