查看: 16391|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 N0 o  a4 [. p
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    7 c% R5 @7 y! l+ _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
5 m! |# ?$ t% v5 n: }usage: himr <address> <value>. sample: himr 0x80040000 0x0
2 R0 `4 U% J4 h/ J; @. O- R
& k3 G5 W! F  b, ]( Q* L: |( s9 g7 J& M) k
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& S  Y1 \4 u8 W( F0 ^# b
& S9 E7 @% ^6 o9 p7 O
补充内容 (2012-3-8 09:42):
- t* {7 k! p: E3 d1 V! @http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* S5 r3 G* X# n( N' O7 r1 M/ q
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。+ b- j1 l+ {3 i8 F/ Q) h

$ c' l; m3 @: ^  W; L( `himr <address> <value>. sample: himr 0x80040000 0x0
: S; A& H- h: Q9 A( M
7 {4 a! ]. H& T5 N0 N! E例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 A' c1 f& M/ f0 L: w- _  |) t
himr 0x80040000 0x004 w' O$ \  T$ V2 p$ n& H( |, @( `
himr 0x80040001 0x11
6 B: ], ]& ^/ a1 y( T7 P3 ihimr 0x80040002 0x22( E& d/ b* }/ Q* ~8 I0 h: N! m
himr 0x80040003 0x33' H$ B* |+ g  t8 {/ }* ?% f% H
himr 0x80040004 0x446 ^( y; f) N' j' N( u2 ~" f
himr 0x80040005 0x55
# U0 ~- s6 V8 q) |
3 h  c- {& ^! S1 \3 v  CSN也是类似。
. Q/ l0 u* T" m: q( N' c$ {( C; R5 L) h* W" G1 C9 y& }* H8 y! w. `
现在主要是,谁告诉我们MAC和SN的地址?- D4 v$ [0 U+ K
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 B9 a2 m& K# e) h1 j. n
一直想找到运程修改MAC和SN的办法,苦于无解啊
% S9 b* @4 U9 ]& b5 k' s, o
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / e0 }; U  p: ~

' ^( C8 ?: A$ C修改的代码早有了。到今天不会编译。$ C9 S) n4 n) K" i
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>% Y4 @- {, O$ n2 t. P
  2. #include <malloc.h>, I3 _' k# Y, N4 H
  3. #include <sys/types.h>% h4 w6 e9 P- J6 f0 s
  4. #include <sys/stat.h>
      A" |( W6 {6 u1 q
  5. #include <sys/ioctl.h>
    9 L. e9 Q" d: F: |# B$ N
  6. #include <stdio.h>
    + u1 k. n  n% w3 E* Q; O
  7. #include <string.h>, @) [+ }* C; a$ s; B; H9 P9 f, _
  8. 8 r" ]! ]2 f) L0 ?# R. N
  9. typedef struct {3 |  R7 U- U5 R
  10.         unsigned int        e2prom_cmd_sub_addr;
    / `' H5 u+ e/ `; A9 a) \, `
  11.         unsigned int        sub_addr_count;; d- ?7 ^+ l9 a3 _" Z; M) Y) C
  12.         unsigned char*        e2prom_cmd_data;) @9 l9 g2 ?5 }* v2 c( _5 g& M
  13.         unsigned int        data_count;$ f# J9 N3 ]  x! ^% n% z- ~8 \
  14. } e2prom_s_cmd;# X% n  r$ i8 G
  15. * X' M+ R. r/ h9 o/ D/ E
  16. #define E2PROM_CMD_READ 18 {  U# y$ h1 e! G" B
  17. #define E2PROM_CMD_WRITE 2/ K) T2 X4 t  t/ {) z6 g
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# ?$ S" g1 K6 w" H0 K4 ?6 h7 Y

  19. + I9 i8 m6 e$ s" X% X  B# m5 i4 L
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 r$ k3 O. y$ s/ w6 y
  21. {
    , O$ \( w% V  c( i' A/ p
  22.         int fd, ret;8 Q( m) ^1 A2 ^
  23.         e2prom_s_cmd arg;0 ^" z8 D* F1 V- r3 j: x+ A
  24.         unsigned char buf[0x18];" R1 P2 \& D/ f( A0 t5 J, O
  25. - Z' j. }4 ^9 x$ s+ [0 P1 S  m- A$ ?1 X
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 e: L$ s0 e/ n- y! i
  27.         if (fd  < 0) {9 p- l, {$ n' M8 X( X
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - P- b% }& O. I& X8 w- d
  29.                 return -1;
    6 g- p" |/ {8 J, i$ t
  30.         }
    8 p' @( W. h( k2 t, m2 R
  31.         arg.sub_addr_count      = 2;7 V+ G7 y% y* V
  32.         arg.data_count          = 0x18;) t( c# x1 r4 \3 z/ K
  33.         arg.e2prom_cmd_sub_addr = 0x290;& d  E: [5 r5 C% Y8 h  Z( U
  34.         arg.e2prom_cmd_data     = buf;
    " j) ]! D7 c0 X& e) x# Y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    . j* e* u$ z7 w0 ]
  36.         if (ret != 0) {. `4 e" N* P) A4 i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);3 Q( J# k" ^" d& ^' [2 o
  38.                 return -1;
    * O6 o/ W( [. d$ @
  39.         }
    ( c; }. i$ G# [( b
  40.         memcpy(mac, buf, 6);
    + d# {! I4 {/ ?% m
  41.         memcpy(stbid, &buf[6], 18);
    ; B% d  z' ~0 ]4 M+ j* Z' a
  42.         stbid[18] = '\0';* P6 Z! m5 U2 J- O' w/ x: Y: I

  43. 8 o4 d. L; A2 N: I" m( x* L
  44.         return 0;
    + y6 |/ A  k9 M1 y  m7 s
  45. }
    6 R# \& H! |: g0 z- U& Q
  46. . _% ]3 Y" r' |4 e0 |" N' }8 f
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)+ p$ b+ ^/ _, N! z* ?
  48. {
    . A3 B$ P) W$ V, r$ l; T; u
  49.         int fd, ret;- R$ }' f- F: Y; s! \5 \
  50.         e2prom_s_cmd arg;
    . l, W+ s+ s: d4 U( E! z
  51.         unsigned char buf[0x18];
    % V9 _. A! d3 }- D- F# D

  52. * y6 `( {" |5 l+ K/ A- T
  53.         memcpy(buf, mac, 6);
    " e9 I: `# _* D, G# p' Z' M
  54.         memcpy(&buf[6], stbid, 18);
    " \6 w9 [% d+ z7 M) ]0 }
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( H3 m0 ]: Q: `' J; K
  56.         if (fd  < 0) {, S0 ^( }: @/ H  ^$ i
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* |' ?3 K8 g5 b  `
  58.                 return -1;
    " X# M8 n0 K  w1 U
  59.         }2 K2 s* i" U) {1 Z/ e
  60.         arg.sub_addr_count      = 2;
    , n, s' B$ ^8 R8 D4 q
  61.         arg.data_count          = 0x18;; B( h- I! D# u0 P
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( A" Z6 V7 {1 j  m; U% P' f
  63.         arg.e2prom_cmd_data     = buf;
    : n! T' v% V0 L4 N0 g' G: C
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 E8 G8 X3 ]/ k* C. A1 ^3 P
  65.         if (ret != 0) {
    , }& a) h3 _# ^* m: b6 t+ W& A
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% ^2 U& {# _% s+ X2 X0 |% `
  67.                 return -1;0 f& T) T3 d+ w1 I8 h; d
  68.         }
    2 b+ n5 Z3 {% H& }

  69.   Y' X- K# J* r) E: [' M
  70.         return 0;9 F  W/ Q! F2 I7 O
  71. }9 ]" e8 _0 d$ x* |9 l: z+ W9 Z+ P

  72. 1 V% `  ^0 T, k6 F3 A! x0 x. t
  73. int main()
    6 U, C1 c- j6 Q5 v8 Z* c! g
  74. {% S) e! W, i" `1 T8 @6 i7 n
  75.         char c;
    * y: {$ a! u' a( j' `
  76.         int i, macs[6];: O" f6 w3 ^: k% n6 z9 T! F
  77.         unsigned char mac[6];. U$ b. p8 [$ N& `, K5 q
  78.         unsigned char stbid[256];
    : b: y/ m6 z& B; R% N6 J

  79. 2 y: r1 t# l1 \' j! z4 n: L6 a
  80.         if (readparam(mac, stbid) < 0)( o+ P' y6 P2 Z# U  o2 v
  81.                 return 1;7 m! B1 ]* R- e/ z2 S

  82. . u* [5 m' o$ c& D7 Z0 F
  83.         printf("Current parameters: \n");
    , |2 h1 n6 v" v$ w: i- T$ f6 F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- j1 t+ m. E9 |- m& B
  85.         printf("  STBID: %s\n", stbid);
    ( r; l7 K5 u+ ]$ i
  86.        
    ) R$ o, r- w8 R/ @, f4 z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 P3 Z8 ~& Z! _6 \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : J% _4 o% L1 A. c/ d
  89.                 printf("Input MAC error\n");5 C. E$ }, T+ J) z( O9 n- }9 P
  90.                 return 1;4 @3 v+ `* Z' T, W
  91.         }. m9 q& f* ^/ {; j1 {% k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' c1 c* L# `: N6 v. t0 g
  93.         printf("\nPlease input new STBID: ");; m  D- G9 T! V
  94.         scanf("%s", stbid);
    % I4 }* T# `: o* p
  95.         if (strlen(stbid) != 18) {
    , E) H! a- m4 L. h& S8 c, v; A
  96.                 printf("Invalid stbid\n");; a8 L+ O/ _! z, d( h
  97.                 return 1;" b  Q; O# M+ `8 V$ j2 }7 F
  98.         }( l, I' P+ E' P- q) j
  99.         printf("\nNew parameters: \n");& F) a+ G: m2 p' }4 C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 N+ V; Z3 V5 h/ Q1 Y& ], [
  101.         printf("  STBID: %s\n", stbid);
    ' o0 q3 d# P8 u- S
  102. * C: t9 j! d2 i2 |8 I( |. V
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ) r0 Q$ E; w& s! |
  104.         for (;;) {
    $ x# `: R/ `+ K: x& l- p% L
  105.                 c = getchar();7 x4 r0 @( D) v4 k
  106.                 if (c == 'y' || c == 'Y')
    ' R. V5 P( Y; @9 M+ h
  107.                         break;
    : U7 `* {/ n) n/ L+ S* q3 |/ ~& v3 Y1 f
  108.                 if (c == 'n' || c == 'N') {
    / P% h; Z) _$ b
  109.                         printf("\nAborted.\n");
    # }6 ]5 T4 Z. s3 \
  110.                         return 1;
    : r% T- s* m$ E# z& ^; O8 U
  111.                 }
    . T9 q$ g2 u4 k6 B( t; c/ ?
  112.         }0 I8 ], i! J; |. A
  113.         if (writeparam(mac, stbid) == 0)
    ' T) i( C& a% a, c
  114.                 printf("Parameters changed.\n");0 c" g8 U8 A/ A* r" p( {7 e5 ^1 `

  115. . r- q4 O& c/ I: T2 w
  116.         return 0;
    7 H5 O9 y! E1 C2 K
  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
# c. m: M/ z* r+ D: E( v0 i7 N8 [在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ u/ E. O) ~' T% D# @9 Y" }* o, t
你用的编译命令行格式是什么?
9 ^8 N  I) j: A: h' ^$ d9 B
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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