查看: 16650|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) P" s) j' c" o) X' J! G% Q$ x" O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    & q3 N6 Z9 c) f5 A6 d+ s' L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 e/ D) e: X; d  j7 l# e0 l
usage: himr <address> <value>. sample: himr 0x80040000 0x0
9 O1 _1 w; J( G* H1 Q, F0 g
! T* g) g# d( t7 F" X  j0 T: H  V0 x
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?$ |* G7 a  Z+ B' d- ?% ?* r* x

/ U# g$ M* Q$ y+ P补充内容 (2012-3-8 09:42):9 Z, _9 e1 F& z: r  ^
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数5 {! N6 I* k9 u+ T( }- I+ L% N
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。* G( D- {$ _% `0 A3 V9 `5 b3 _
: b$ S# l: r! @
himr <address> <value>. sample: himr 0x80040000 0x0% z. k8 |6 N- g( |4 I

% e* D8 v5 m& C9 n9 t& B" g: Q例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ n7 u* y, V1 V! l0 r
himr 0x80040000 0x00
, C' `% A' g0 H# E/ ?6 Bhimr 0x80040001 0x11
# ~0 k, B( e5 @( g; qhimr 0x80040002 0x22
9 U$ ?& c1 b) p# `himr 0x80040003 0x33
- k' L. C+ p' x5 O! j) Z9 @himr 0x80040004 0x44
3 b& o- H2 U3 M" b) d( X/ ?7 {himr 0x80040005 0x55# X' D& x4 x/ C& L$ f
& T+ x* L# I9 W/ i
SN也是类似。
) H: d4 Y# f; K2 D- `. Y+ p
& m6 V  ~) Y" w$ {5 x; Y现在主要是,谁告诉我们MAC和SN的地址?' [% m* ~" C# M. o
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
# m7 k& y3 v/ k* ~一直想找到运程修改MAC和SN的办法,苦于无解啊

5 ~. Q+ U& v+ l, P8 o: f源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
  e- ?- s# S) p+ \
; x6 E( C( h; E3 X修改的代码早有了。到今天不会编译。9 B. `) H" ~3 p: H& W3 H
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + G0 d5 Q9 t9 i$ o/ D6 [
  2. #include <malloc.h>0 f+ L- X; j8 {
  3. #include <sys/types.h>
    " D; ]0 d2 g; W% D4 ^# e3 `9 `
  4. #include <sys/stat.h>
    % n9 a7 i6 ^+ |
  5. #include <sys/ioctl.h>- I, w0 A! O2 ?1 ^/ G( v  K
  6. #include <stdio.h>5 `, p6 }8 O- Y7 ~1 o; |
  7. #include <string.h>0 Z( G: n3 ?% h0 ?& K! o# d

  8. 9 {8 W4 h! V; M$ r
  9. typedef struct {
    . C, d* v* u6 P+ a! U
  10.         unsigned int        e2prom_cmd_sub_addr;
    * T; p0 U, N' u% k- C7 O' f6 T) Q- Q
  11.         unsigned int        sub_addr_count;
    , C( V+ r( M0 S$ Y. _0 c# u
  12.         unsigned char*        e2prom_cmd_data;$ V4 r7 c4 a) ^' P9 {/ }' G
  13.         unsigned int        data_count;
    ) |* J0 v9 O( Y9 _$ N; X
  14. } e2prom_s_cmd;
    $ b+ d6 L; ~) H  H' T( \; Q" z; ]
  15. / r5 H) p/ o9 Q. O! S" O
  16. #define E2PROM_CMD_READ 14 Z1 f4 }8 t' j5 f
  17. #define E2PROM_CMD_WRITE 2- E  n9 C2 J: u4 T3 f/ \' Y1 ~2 R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ! a; R+ N0 L; L* [% M; f5 i" q. k
  19. , P" }! E/ K1 m* K' |3 g/ \
  20. static int readparam(unsigned char *mac, unsigned char *stbid)3 L9 {$ `( h- e, z
  21. {5 {9 i- b, Q  h7 p" H
  22.         int fd, ret;
    " R2 R- q1 W9 S! p- z% j
  23.         e2prom_s_cmd arg;) d8 A; c, p1 j! _* e- }+ ?
  24.         unsigned char buf[0x18];. f% X% u! O7 h- f* S; c5 x
  25. - p8 A% I/ F8 v8 U6 s. V) f7 D
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / W' O# w% f! w5 j6 K  @. @: a+ x7 J
  27.         if (fd  < 0) {
    ' I% Q& t; G& \7 i  E) k+ f( q, p
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % r5 E3 a' h2 I
  29.                 return -1;
    ' o; C; |7 i4 d7 b- m, l& v2 w0 B0 Z
  30.         }0 Y0 Z% s) m" N1 Z, j
  31.         arg.sub_addr_count      = 2;% P7 f# p  c3 b% N  k* N3 ?! o
  32.         arg.data_count          = 0x18;
    5 `2 a# I8 p# t
  33.         arg.e2prom_cmd_sub_addr = 0x290;+ T/ E" d* k1 J0 Q2 C
  34.         arg.e2prom_cmd_data     = buf;' J& j2 u  c2 N9 O4 i/ A3 r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 f9 |4 a& t' u8 c6 L
  36.         if (ret != 0) {
    * {7 [" K4 ]% c/ Z1 z7 L3 i1 m
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 J! r' q7 t: t, l) u8 M4 @# {4 J
  38.                 return -1;
    4 A- B/ m# M* o1 \
  39.         }
    : m! v% ^$ {& s! k5 x6 L1 U
  40.         memcpy(mac, buf, 6);
    - g1 g( d2 k( C! K, x
  41.         memcpy(stbid, &buf[6], 18);  h, d6 ~2 U7 }. N6 F0 X
  42.         stbid[18] = '\0';
    * e4 T+ B& K8 j  X

  43. 2 x8 m! o! B" n# B. R) K: d
  44.         return 0;
    3 M' s  x  P) I# H( X
  45. }
    ( Z2 n2 z" x( V7 v/ m# \$ s" D8 U, }

  46.   N" C; F: o8 a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% }9 n) r; ]" o" b
  48. {
    8 R" |( ^+ ]& |- t
  49.         int fd, ret;
    , T" y5 _7 v' }" I# v! V! V
  50.         e2prom_s_cmd arg;
      F" p! y" T" J
  51.         unsigned char buf[0x18];" v1 [+ |6 y' ^$ h2 F* _
  52. , s6 C$ K0 x0 a1 [& A. S
  53.         memcpy(buf, mac, 6);
    ( d% N+ I7 l, c: N
  54.         memcpy(&buf[6], stbid, 18);, e; s- d. e: E+ n
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ j1 R/ _% ?) U8 ~: C0 L; _
  56.         if (fd  < 0) {
    + r7 Q" `  |, g  w# w4 s3 J: q4 }
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 I% I1 r- W5 Q6 a
  58.                 return -1;
    9 ?) p% j6 T/ L8 f2 p) s
  59.         }
    ' Z. d' U# V! I: C, t
  60.         arg.sub_addr_count      = 2;
    6 f* |. d; J) R0 t4 [
  61.         arg.data_count          = 0x18;; |) A) o; @2 K" M# Y9 A% K  E
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' q! r: n9 u& S5 O
  63.         arg.e2prom_cmd_data     = buf;7 S3 s/ C1 v5 e0 }. Z. S" f
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! u' ]6 c. z9 ~- k  x. G: I
  65.         if (ret != 0) {6 K$ J4 n$ |* a/ [3 `% {% V8 i
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* q* C' k' n% H' ?
  67.                 return -1;
    * a  L' A4 l2 L- E' p5 [
  68.         }
    7 Q  H* P0 ^! I! D$ G" H2 r

  69. # {% q6 w4 |3 m* }) X1 i+ B
  70.         return 0;
    8 z% ?" ^# o* m
  71. }
    4 @0 l* b7 t, y) B
  72. 3 [* m5 \" q8 @9 Q0 z. ~2 O
  73. int main()5 K0 ]5 h) m7 J7 v* e( o
  74. {
    - n2 C: n0 I: d. X3 E
  75.         char c;
    * f( ]+ X; N8 ~0 C) {
  76.         int i, macs[6];
    " ?- ^( \1 W6 y6 [0 S
  77.         unsigned char mac[6];
    1 {# ?: O; `- n/ U
  78.         unsigned char stbid[256];+ r! z1 S) K+ j% G1 {$ M# O

  79. ; @  j! |- Q( x) F8 g% w
  80.         if (readparam(mac, stbid) < 0)- d$ H/ a) Y. O
  81.                 return 1;: {6 ~7 D8 i& ?( y. ]# [' O! O
  82. 3 u! O' {3 s! }  I4 J/ ^( t4 ~
  83.         printf("Current parameters: \n");
    / I! [1 r: M/ |  |# a- l. R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 B, I- W9 t% S
  85.         printf("  STBID: %s\n", stbid);
    8 v7 u, n! z6 s, O9 D2 K/ t5 Y
  86.        
    2 r8 ]- A8 v) D; `4 k5 }
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 r7 I% e+ |) C; G  q4 Y9 K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 n. i4 O& n* R7 Y4 H& o4 ?' D& E! V
  89.                 printf("Input MAC error\n");
    : @* a. I( G3 y" ]; y
  90.                 return 1;: L: }* Q2 L8 b3 ?3 Z$ V/ J
  91.         }* [! l) F! D+ E' {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 F4 B5 g) k- j0 R
  93.         printf("\nPlease input new STBID: ");
    , h$ ]8 v; _3 C( l+ Z% A1 e7 m
  94.         scanf("%s", stbid);
    ! R& J8 T3 t6 i* C+ n
  95.         if (strlen(stbid) != 18) {# M: `4 W& k0 D1 y# A. T- l
  96.                 printf("Invalid stbid\n");: w% O1 H0 H: D' P! X: E' z
  97.                 return 1;
    * z! T2 i. ?% z  R: f. r+ L+ S" [
  98.         }
    $ u" ?5 p8 n0 g2 Y% b, B
  99.         printf("\nNew parameters: \n");% k+ d9 O! s2 L" T7 Z# q: z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ c: J7 n3 K% l  }
  101.         printf("  STBID: %s\n", stbid);3 ]0 O5 f) y) F! v6 ~

  102. ( S3 K1 w5 N9 c/ d
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    6 N# c7 j# O$ D, C; d: ~
  104.         for (;;) {
    : x8 p) i8 ^8 C6 M( R5 m7 n
  105.                 c = getchar();
    6 q9 x' X2 K/ {+ K! \7 |7 h& W: M
  106.                 if (c == 'y' || c == 'Y')
    " A* N* `5 R% s1 B2 D% z1 G! y! T
  107.                         break;
    8 c; m4 n, j# B3 @8 F) |& R9 O* N
  108.                 if (c == 'n' || c == 'N') {7 e/ b5 M3 l4 b9 m% w6 q2 S1 b
  109.                         printf("\nAborted.\n");7 j# D( k+ S5 J4 k; A# r' ~
  110.                         return 1;% q* P! x# u$ Z, p
  111.                 }
    $ [' j1 A4 ~! h) y3 [3 i6 Y( ?
  112.         }
    " i0 {0 r& F! ?/ |$ V* T! U! H
  113.         if (writeparam(mac, stbid) == 0) . }1 f3 ^7 y. H( x% L+ d
  114.                 printf("Parameters changed.\n");
    , ~, w" h( I8 l7 l. ~) c3 q+ m

  115. & t) t/ C  c( o1 c8 A' u- A- k
  116.         return 0;( Q8 A3 J6 ^3 b
  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
5 `. e7 L8 v7 G在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" i# y9 W  ~  T  O/ x  U) p' f! D你用的编译命令行格式是什么?9 T% y# Q( T0 B" A# \* l% S
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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