查看: 17879|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , Z6 Q0 p7 `1 |. p7 F+ `
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    3 s! C. ~; |  J& B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ c8 [" Z! \" L) m- j: tusage: himr <address> <value>. sample: himr 0x80040000 0x02 q% O  x  Z8 R; k

* m, E/ q) R; F  T0 ]9 ~
* _! r, |* I0 v/ [不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% Z3 ?3 r# i- m) s' B2 \

5 ]8 ^% E7 o4 V" D0 j* T7 R5 S补充内容 (2012-3-8 09:42):: m2 M7 T- o4 C4 e' s4 l! J
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
# E0 f# W2 h5 W+ y8 H; S. v这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
& W. @/ h' v6 U8 ]8 @5 i: r5 y
) Z0 E5 Q3 Z, a4 }" C' I1 \% ~himr <address> <value>. sample: himr 0x80040000 0x0
$ C1 a3 y' L: w5 q3 J( q
: ~/ U% ?4 O" E例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
" O$ o) W* a& J3 Hhimr 0x80040000 0x004 o/ a0 b0 J2 z# j1 M% ~
himr 0x80040001 0x110 z" b/ Z  l: H  z2 d0 `
himr 0x80040002 0x22
' L8 x8 d- f9 h/ [: j- ohimr 0x80040003 0x33/ ~+ }, C( f" q. i
himr 0x80040004 0x446 A) b$ F' X6 Y  m8 p* F( F
himr 0x80040005 0x558 r* O6 ?, X5 @5 R

4 \1 n! Z1 w+ KSN也是类似。
" E; {2 \0 y! u' X0 l6 Q
5 w! K9 X$ A4 Z现在主要是,谁告诉我们MAC和SN的地址?# K! d9 ]% D: T( _  c8 Q
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 , u: y2 B/ `+ r; y( @; U$ v7 J& y; M
一直想找到运程修改MAC和SN的办法,苦于无解啊
- V* E* h$ x. d$ X
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( Z0 V4 x5 i. o5 D, g* Z3 R

* _1 |+ t  Z4 r8 Y7 q6 y6 t1 p8 V修改的代码早有了。到今天不会编译。: M& Z, d- v; ~. B
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " l) C: [; q8 v( \; y0 W
  2. #include <malloc.h># A. D. j' y/ S+ L* L% _
  3. #include <sys/types.h>
    ' E! l0 j- _; K9 W) t' G
  4. #include <sys/stat.h>
    0 a; f/ k) v" ^/ O' F. G2 x
  5. #include <sys/ioctl.h>$ e2 F3 @" d4 d& `$ z. K% {
  6. #include <stdio.h>6 N, j1 I/ Q$ R6 D
  7. #include <string.h>
    1 W) J0 j3 D  m7 Y
  8. / K; e7 m7 Y  U# M9 l
  9. typedef struct {
    ' |; z6 K0 g# U: t
  10.         unsigned int        e2prom_cmd_sub_addr;
    ' O$ {+ E0 W0 i1 F4 e. h
  11.         unsigned int        sub_addr_count;
    ( B+ @  O2 x" w# Z+ b0 ^/ W' @
  12.         unsigned char*        e2prom_cmd_data;
    0 W! u) w$ q) C& l! ?3 j
  13.         unsigned int        data_count;
    1 Y% G& l0 G4 f. [. [
  14. } e2prom_s_cmd;7 @0 T& m2 T3 f5 D
  15. 3 V" m/ x5 {2 D4 o9 X" f% w
  16. #define E2PROM_CMD_READ 1
    2 |% ?; s* [, e+ v# A& u4 r7 x9 w
  17. #define E2PROM_CMD_WRITE 2
    8 A9 `0 \- `; u/ {
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    - l# \7 J0 z  c. y- u, m

  19. ! Q( L1 U' [/ _
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    , L9 {, x' ^/ x/ u1 K
  21. {# [) S1 u8 w: ?2 O
  22.         int fd, ret;
    & D3 `! i9 u7 s. k& S: S
  23.         e2prom_s_cmd arg;
    ! I& C7 ~7 q; h% P* ?! @+ l
  24.         unsigned char buf[0x18];
    3 R$ q( f1 u# y) h; g
  25. ! W, V8 H7 C/ `: Z7 y6 `1 F
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' i8 T" s  c3 B; d: v8 V) W
  27.         if (fd  < 0) {
    $ J6 f7 H1 \" Q$ F" S
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( C, k. K* }; R" O) e
  29.                 return -1;
    / M/ b2 `. E# Q* J
  30.         }
    ! t/ e( @  N5 j: v0 _8 T6 S
  31.         arg.sub_addr_count      = 2;
    / k/ J; x  J( Y# X* B: x
  32.         arg.data_count          = 0x18;8 s( ]9 t3 ^0 r7 _8 D; U
  33.         arg.e2prom_cmd_sub_addr = 0x290;  B- C1 F* Z# _) G! p
  34.         arg.e2prom_cmd_data     = buf;
    " c8 `) S3 ]% {7 L6 m6 [* A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * u. F- A& e' k
  36.         if (ret != 0) {
    3 c, O( x1 s0 }1 g. p# C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - W+ N5 q* ~3 x* E# P
  38.                 return -1;
    ) G- v3 b: ]) L9 D. q8 _# R4 I
  39.         }  s: G  T* ^5 |- ]/ `- ]5 [7 W
  40.         memcpy(mac, buf, 6);
    : ]& b* N5 b) S$ R) @4 y
  41.         memcpy(stbid, &buf[6], 18);
    0 T. ^* z" z- @; [5 {% q+ l' l
  42.         stbid[18] = '\0';# x" ~3 m( M) l3 v1 y! l" j3 f6 o
  43. 1 H5 T& d) ~; t6 \9 k0 `' F; y& Q
  44.         return 0;8 d* D5 c( c! m5 |+ p2 c
  45. }
    . a3 q& S* E+ L
  46. 2 U% A& `& A$ I/ P& H1 a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)! O; S8 a  }8 g% a1 Y+ C
  48. {
    * P( L; X) d& i5 N  t" P, {
  49.         int fd, ret;
    : y) o! l4 q6 F6 {9 Q$ ~
  50.         e2prom_s_cmd arg;# K5 s; M  d& c9 k' B) G  S3 u+ P
  51.         unsigned char buf[0x18];
      m' V8 x6 h; G3 v1 X  G
  52. 5 i0 e/ ?6 [7 s+ \% ]0 V
  53.         memcpy(buf, mac, 6);( ?8 @6 q6 ?1 l5 g1 f
  54.         memcpy(&buf[6], stbid, 18);
    4 y6 P2 j  H, c# K
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . a9 ^: B4 p0 I) S
  56.         if (fd  < 0) {
    * p) j+ o) }5 @/ |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 I8 J9 g# \, t# n
  58.                 return -1;0 T& _/ }' a0 Z0 i" \6 i) [
  59.         }2 {2 b9 W2 h  {) l3 X4 G4 X, X3 P; @
  60.         arg.sub_addr_count      = 2;( }+ ]8 h" S6 U1 T  @8 Z- s1 P
  61.         arg.data_count          = 0x18;6 N6 S4 Q' }6 D" [3 A  |
  62.         arg.e2prom_cmd_sub_addr = 0x290;  y+ H) P# F1 Q: n
  63.         arg.e2prom_cmd_data     = buf;
    ) Y) M2 L6 D) W* R, K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    # @! C6 Z: P  M4 @0 u- Y# G
  65.         if (ret != 0) {
    * _! k; W% O" B6 ~" v1 y' |& I4 A
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 ]: k8 Z! N) x( R2 q( j
  67.                 return -1;
    : t+ g; V7 @: B
  68.         }: ]' y' ?+ Q5 i1 G# E4 c
  69. " ?) f, m0 D1 |/ [/ t; U/ p* Z( o
  70.         return 0;2 X/ m' v* W* T5 _2 ]' y2 q* u1 ], n
  71. }
    4 s. Z. X% e5 G! V1 z% J' L; z

  72. # ?' X$ q8 h1 _/ z; h) A! M
  73. int main()- F6 W7 ^: l! e9 C) S& a' k
  74. {2 h, A, j& b& t4 x# A" @( E+ G
  75.         char c;  J- z1 F1 K; K. \6 I1 I$ V+ C
  76.         int i, macs[6];* n0 \: y4 |" [8 z% V
  77.         unsigned char mac[6];
    : C8 @6 t! E$ }6 v
  78.         unsigned char stbid[256];
    1 f5 u- y9 Q) o9 N; a

  79. 6 J8 f9 o( Y( P2 ~
  80.         if (readparam(mac, stbid) < 0)
    . N5 r' p! J& ?' l$ J" S' y6 O
  81.                 return 1;
    6 E2 {+ ~, C' l  _& S2 e3 y
  82. ' ?9 M; `! T  z* K1 |8 U. l& {
  83.         printf("Current parameters: \n");$ k. s& V- @# p1 y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % }; |- O# T# [# B
  85.         printf("  STBID: %s\n", stbid);
    9 u; V9 T$ x8 L! _
  86.        
    3 [/ h; E  x6 L' ~: v/ n  d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    0 S" T( W  s; c& p) z* m( S+ [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. k, B! p# r$ i7 c( Q9 b% e& W$ Z$ h
  89.                 printf("Input MAC error\n");9 V4 L- \: ~$ O
  90.                 return 1;, R2 k+ I0 o4 m9 S2 S. ~# @
  91.         }2 H0 Z( W% I; P" a# N
  92.         for (i=0; i<6; i++)mac[i] = macs[i];  X, T, R9 \3 j! j' n- r( _" r
  93.         printf("\nPlease input new STBID: ");" ~. R, U) N& ~4 B
  94.         scanf("%s", stbid);
    2 s( x: ~: u; v* k& k
  95.         if (strlen(stbid) != 18) {
    . \7 _& [8 k( `, U( B7 p
  96.                 printf("Invalid stbid\n");
    4 u, J! H) }8 ]+ B* l$ o
  97.                 return 1;
    & J" j* U1 y: l6 T0 l( z2 O1 B. \
  98.         }5 N( X  P  W. {7 \- Z' C% @0 l. z
  99.         printf("\nNew parameters: \n");( c; `) P) R" i6 B0 b# U$ l
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 X9 A+ z1 [  B6 x
  101.         printf("  STBID: %s\n", stbid);9 e. h# Y" n/ T1 e) P; M

  102. & p- ?6 S% {" ?; W' g' d
  103.         printf("\nDo you want to change paramemters? (y/N) ");+ U+ m* K* X3 @/ L
  104.         for (;;) {% g* k- z9 G& r
  105.                 c = getchar();: q: w7 q- |4 c7 h/ U. |5 g+ [
  106.                 if (c == 'y' || c == 'Y')
    $ o8 E1 h: ~+ |& s  q- B8 u. f$ w
  107.                         break;/ j, v6 b4 A  S( O- L$ ^
  108.                 if (c == 'n' || c == 'N') {
    4 H* F4 G; l+ z: f
  109.                         printf("\nAborted.\n");
    & z  @) |: k7 e8 ]
  110.                         return 1;
    . E, t' Q5 D6 G: \  _9 \3 A
  111.                 }
    " h* I  b- H, ^( M9 x1 ~
  112.         }# T. T  }- \2 u9 F% c7 l  B
  113.         if (writeparam(mac, stbid) == 0) & j9 ]) V0 y9 J9 A
  114.                 printf("Parameters changed.\n");
    9 x/ Q! I+ `* W3 z8 m! {

  115. # b) m; q- m$ F: o" u' w% [  g
  116.         return 0;  A( u# \* l6 t2 g+ i. H
  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 ' M7 _$ r" Q- X
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
( q5 H+ e* Y; E" I, i+ B7 A: I9 g
你用的编译命令行格式是什么?
* Q) w2 i+ D( R2 d$ p3 L) j  i) k
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部