查看: 17699|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    5 A* n% i% y# K4 T$ h, ]- ~8 O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / `0 \9 j2 R& ?# n' f. F; B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
* h$ f# Y+ ^: L9 K1 W. R9 J& R: `usage: himr <address> <value>. sample: himr 0x80040000 0x03 ?" X3 N0 U/ Z  O/ @4 G1 P# ^7 m

, o0 E, u' p- T) P7 J! _4 [+ N/ V! m4 V( @8 a
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( R9 t- d; D" D' L5 m9 e
) M6 Z/ B1 J; N# @% d" Z
补充内容 (2012-3-8 09:42):
7 L4 \# `, l4 @  P( T# Chttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数+ y# V* x; _. p+ s$ P% H* ]
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。4 f8 C) K$ O1 v$ M% Y
' V4 ?( c$ g( |9 Y2 r
himr <address> <value>. sample: himr 0x80040000 0x0/ M! h$ s  L+ \
8 f8 Y$ L/ z7 o# V# M
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ d; }0 z  O, v5 `2 ~$ {7 z0 m: Ahimr 0x80040000 0x00! f/ M4 J8 l! V* X9 j
himr 0x80040001 0x114 [% T/ ^. S$ Z9 S( {% c8 u
himr 0x80040002 0x222 b# [3 [) W1 C% b5 Q9 c1 s
himr 0x80040003 0x33
5 @0 B+ `0 y7 r: b& i! Qhimr 0x80040004 0x44
3 p  D" E- z# f) ]himr 0x80040005 0x55. r- B6 ^( l2 {1 ^- r, C9 n- n, L

1 p. N% H% L( A; P% MSN也是类似。- f$ n' m* O( ]! M' G/ M3 R. g

9 a9 k2 x, p0 @& x& Z现在主要是,谁告诉我们MAC和SN的地址?' R0 j8 e( n' s) T5 ~5 |
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
; [7 m' ^* J" S: t一直想找到运程修改MAC和SN的办法,苦于无解啊

: J. i2 J# I# d源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / H+ G$ n' u& D' ]- b! h! ?/ y+ F

3 ?9 e' A7 Z9 P5 g修改的代码早有了。到今天不会编译。
, f( P. Y# d* a5 Y1 N需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' M4 H8 a) P. J; G* P
  2. #include <malloc.h>
    ) M3 m6 M0 C; U$ Y0 ]
  3. #include <sys/types.h># {1 S+ `5 L- F( x* K4 J
  4. #include <sys/stat.h>
    ) N1 I3 i; E( c
  5. #include <sys/ioctl.h>" [. f) b( a6 m5 p# d* I* h4 v
  6. #include <stdio.h>
    6 [: X( l6 y/ G& O
  7. #include <string.h>0 _. U  {0 c$ N6 E) e7 x# f, r% w
  8. : @* y8 S) ~2 N, t. F; ]
  9. typedef struct {
    ! j! k' o4 P$ N" x' |4 S
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 @" [  r  I6 u6 L' p2 J
  11.         unsigned int        sub_addr_count;
    4 S% d  k, H- F2 e+ j
  12.         unsigned char*        e2prom_cmd_data;$ P( T! k& z/ C
  13.         unsigned int        data_count;
      _+ r8 K: I- f  h
  14. } e2prom_s_cmd;0 ]+ D& p6 P$ E1 J+ Q
  15. 6 \% Z# f; K( X7 W5 M
  16. #define E2PROM_CMD_READ 1& D; G# J! _, a" Q
  17. #define E2PROM_CMD_WRITE 2
    ( O$ c8 r) D7 i5 m. R5 X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"7 _* q# H6 \; f

  19. + \5 s) Z# t' m7 y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ; ?% l  ^; H9 s. Y7 f
  21. {
    0 K: S0 `2 o6 K, G; @
  22.         int fd, ret;
    ) D& U/ r" {% u/ V3 S
  23.         e2prom_s_cmd arg;+ P0 e4 G. _0 {: c& U
  24.         unsigned char buf[0x18];
    7 N( v. ^+ p6 R
  25. - z/ x$ y9 P/ X# G5 J. j, }
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 z4 K. `8 Z2 x6 i5 s: ]' K4 g, o
  27.         if (fd  < 0) {
    ) b' c( g0 C8 ?0 z6 K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  V4 i/ l+ ]; X/ l( g5 _2 H
  29.                 return -1;
    9 ^  F/ p( {/ N$ s+ r
  30.         }
    ; b3 o) K/ d/ K& _( U" u
  31.         arg.sub_addr_count      = 2;4 }0 W4 ~, Z- ?) V( I7 J; G
  32.         arg.data_count          = 0x18;1 {$ v/ E5 h; ]9 j7 h% @' t; p
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % v1 X# b5 l  n& T! R. e
  34.         arg.e2prom_cmd_data     = buf;% q; q% w) @$ A* B( I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 f% r- B! ^6 o
  36.         if (ret != 0) {
    + n, K7 _) n8 F9 x/ ]
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    , K5 }. k6 s! i2 Z; |" w4 C  B- }
  38.                 return -1;  I6 i: q; U/ M% j
  39.         }+ @- |: C: t# T2 d( q
  40.         memcpy(mac, buf, 6);4 I3 B+ L# M) L. X
  41.         memcpy(stbid, &buf[6], 18);) r! e- ]/ V/ ?  D) d. l
  42.         stbid[18] = '\0';! H! L- P. G  V1 G) p) n

  43. # k" l( @) U1 j8 @- ~6 O
  44.         return 0;* |/ c/ @0 `: y, W+ W* ?
  45. }
    / I. W5 l6 L' |! ~( z
  46. ) F6 r0 H6 f6 O; }6 D! z" w; A6 |
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( f- N% n, G1 ?
  48. {4 z% X  N8 ^8 D+ r6 S
  49.         int fd, ret;! ?; f  {+ q/ J& w7 o
  50.         e2prom_s_cmd arg;) B2 Q3 ^' X% m7 I
  51.         unsigned char buf[0x18];
    5 y1 t) R/ H- T/ s$ }
  52. / q$ g8 S! d* s  z! H) d
  53.         memcpy(buf, mac, 6);
    0 N& Q* ~% r3 [! O
  54.         memcpy(&buf[6], stbid, 18);
    ) Z6 B, y" L" j. o
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 }2 y- @6 I) c5 A
  56.         if (fd  < 0) {% W& ?3 H' [8 g" I/ X7 B( X+ S! r
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* m$ `, T$ U! j2 K9 e0 N) x
  58.                 return -1;
    0 r: N+ h9 c7 _. p% P+ X2 f
  59.         }
    : L" h; `" V- o4 F# A/ s
  60.         arg.sub_addr_count      = 2;6 V$ ^, R% ?) Y
  61.         arg.data_count          = 0x18;
    % ^+ u' p5 B& ^
  62.         arg.e2prom_cmd_sub_addr = 0x290;+ S) E3 s" d5 \$ k4 Q# A1 @0 B
  63.         arg.e2prom_cmd_data     = buf;
    ) T2 j& x3 o8 N) b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 Q7 `' r- F8 x" Y) R) ?2 |- H2 P
  65.         if (ret != 0) {
    ; {- R2 w6 ?$ Q- x. L. c- l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    9 a& o0 x2 {2 G" M, n5 c! j
  67.                 return -1;( [4 m1 b9 |" @; F, J+ `0 _+ b: s
  68.         }# \+ p9 C& K1 u+ ^6 m
  69. # r4 |7 m0 @2 w7 S
  70.         return 0;
    $ [. c6 \3 {( w# K% o! x& ^
  71. }
    6 E7 J3 k+ w0 @$ x

  72. 7 [& E) z& m2 E* o+ t
  73. int main()$ [; f# s/ Z5 Q
  74. {" C9 I0 ~) |+ N3 n& u; {
  75.         char c;
    0 d( _, k# R. H! M, u. b, G
  76.         int i, macs[6];
    ; g9 F$ b; g3 n
  77.         unsigned char mac[6];6 f9 }; L+ [$ U/ O
  78.         unsigned char stbid[256];
    " B7 h! ^1 c5 B& i
  79. 6 A" h! }9 C0 y: k9 [  F: z  Y4 V
  80.         if (readparam(mac, stbid) < 0); u/ b9 X1 N: `0 L) F0 q; N3 \
  81.                 return 1;+ ?6 m+ U/ C* u
  82. 8 O. O, M1 v3 e/ b
  83.         printf("Current parameters: \n");
    ! P' h+ k3 ^- S3 N
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( e6 K( x/ D, P* S' i
  85.         printf("  STBID: %s\n", stbid);( ]0 o  K, A9 \9 H
  86.        
    % K8 O" [/ {. V1 [: E- E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    # j( M; s7 f6 L: w1 e; \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 Q# L2 z8 a  }  X
  89.                 printf("Input MAC error\n");
    " r$ F0 D' r/ H% l* @- a6 Z/ q
  90.                 return 1;& d5 T' @! V; H0 R' b+ T
  91.         }
    ' t5 ?8 i% f" A6 s% T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 l! F: O- s1 w, U0 g# f( s
  93.         printf("\nPlease input new STBID: ");
    & [2 ?& \4 q1 c; A7 q; `
  94.         scanf("%s", stbid);
    6 I- ?7 a9 G% H, k3 A# B8 g" E+ a
  95.         if (strlen(stbid) != 18) {7 Y6 b  T5 b( j  t. V
  96.                 printf("Invalid stbid\n");
    ! h4 k, S5 i% y' h
  97.                 return 1;
    9 W) C' n! a3 W. @" d1 U$ }
  98.         }
    1 v+ a5 P  d( |' z
  99.         printf("\nNew parameters: \n");/ z6 P* @; Y" r
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 l: @2 e; G' O8 L0 @/ `
  101.         printf("  STBID: %s\n", stbid);
    . @7 f' F0 z) k# B

  102. " s  Z' s# j$ H2 M. @( `; C) h
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; ~4 Q/ g* @0 Z" e! M! j2 L
  104.         for (;;) {9 x3 V8 |2 U  e5 X, o  r$ G
  105.                 c = getchar();
    " c; [% N( h9 A0 a% \
  106.                 if (c == 'y' || c == 'Y')
    0 v: V  E+ t. @' f6 z, |
  107.                         break;" u  p6 q/ r+ z1 ?/ v2 L, f7 `
  108.                 if (c == 'n' || c == 'N') {
    & R+ O! P2 a' m1 @! E
  109.                         printf("\nAborted.\n");
    ' D+ I( J6 B$ W. S2 L) T9 i
  110.                         return 1;& T. B$ Y5 p% c5 l' D& c, J
  111.                 }; Z; U( I& ^, Z1 H, k; C
  112.         }6 m  A4 n5 e+ w$ ]8 ]: y
  113.         if (writeparam(mac, stbid) == 0) , ]8 X* I, v$ O1 a+ m  R
  114.                 printf("Parameters changed.\n");. P; M, D1 o& K" f

  115. 7 d5 _# }$ i8 b2 B- _1 U
  116.         return 0;: U. e) A' G, @$ g# f7 c* z$ ]
  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
% G, v' O  r  T3 E/ i# C在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

. O) X' H' ]+ B$ I7 f# g6 s4 ~' J' Y2 F你用的编译命令行格式是什么?& k4 H% M# G) }" `: 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客服返回顶部