找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15736|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- @- }! n& A$ Z7 K# Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 M8 L! M" Y  _8 n) E, }! Q: \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" O( H- @$ z4 L: H# ?
usage: himr <address> <value>. sample: himr 0x80040000 0x0
+ Q" j& V, H# X1 H9 {$ a* B, T, b; b7 \- _/ b

9 x5 Y9 q& \; o+ n* h2 v不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- K2 C. a- |% i4 p
8 s1 C& Y! P+ `补充内容 (2012-3-8 09:42):
" ~$ Y. v  O  Ohttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* A( d8 ~. o  f; p  M7 v
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
4 ~" O. H+ G& B& l/ Y+ B" \
& K; ~$ N3 s, e& `# o7 |) ehimr <address> <value>. sample: himr 0x80040000 0x0
4 A4 Q, N) n* x
- V. V, p' T( Q5 ]4 F- g0 _6 L/ Z. p例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。& V. M1 P3 `. _: u0 f( d% d
himr 0x80040000 0x00
4 n+ ~! L1 {# h7 g8 B0 k3 z0 Chimr 0x80040001 0x11
5 b8 \% T3 B5 u, U! J1 M# Chimr 0x80040002 0x22
$ z% S" W( ]; a8 P# H7 o7 `himr 0x80040003 0x335 P( C/ ]: r0 W1 {  i
himr 0x80040004 0x44
9 p, W, q6 B7 v  G, R3 I6 nhimr 0x80040005 0x55
3 i9 i# W! z" V2 M8 |1 Q; O$ j1 I1 L
SN也是类似。
& L1 F7 m$ k/ I: u4 r: {- y8 o0 q% M% u% F3 B, G7 F$ h$ ?
现在主要是,谁告诉我们MAC和SN的地址?
5 A! Z3 {/ `% o4 ?
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ; a1 D4 U3 A- b+ X' @" n5 E& d
一直想找到运程修改MAC和SN的办法,苦于无解啊

& ]5 X9 |! u+ h  g2 F源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 6 P2 c0 g6 c) I  s2 I( b+ T5 n1 f) g

' v" B$ |0 F, T7 ~# H! ~4 M修改的代码早有了。到今天不会编译。1 {4 K; `- Z% H" c8 P
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ U7 P0 i: ^( o% E. E& A/ ~" J* E$ W
  2. #include <malloc.h>
    # n+ E0 O0 n% r
  3. #include <sys/types.h>
    $ S  \" {: D9 K7 v  b" Q
  4. #include <sys/stat.h>
      a1 R5 C7 _- Q, e, j+ d
  5. #include <sys/ioctl.h>
    + C) _' j7 q" O, Q$ J, U
  6. #include <stdio.h>: G% a4 c' `1 V, {1 ?5 B9 r
  7. #include <string.h>' b3 `9 b" w9 v* Y& E& b: X$ a
  8. ( {/ r6 [& @2 D9 m; q% v
  9. typedef struct {$ y0 k; Q* o$ P- e4 L" k
  10.         unsigned int        e2prom_cmd_sub_addr;  o8 G' o3 G6 _7 ^+ n; @
  11.         unsigned int        sub_addr_count;
    7 b" v9 B* _) {6 d
  12.         unsigned char*        e2prom_cmd_data;
    / g- _, A% L" j5 S9 k' e/ N
  13.         unsigned int        data_count;
    ( e1 I/ u7 P* l
  14. } e2prom_s_cmd;' Y  T$ B: O  f' j
  15. * t. N& c" ]1 `
  16. #define E2PROM_CMD_READ 1
    ( K" f5 t* `; b: m3 G
  17. #define E2PROM_CMD_WRITE 2
    7 K, K. b) M$ `- x' B) M& D
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 c' h$ v# M  N9 k" V3 f) j

  19. ' D6 ?4 I; H- c$ ]& |! Q0 S+ p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)/ H( ^) c9 c/ d1 H
  21. {
    & q% c9 j- H' X5 i* Z& e4 @) d" ~
  22.         int fd, ret;
    . g. F7 b6 ?1 A6 o
  23.         e2prom_s_cmd arg;
    - }! |1 q% W! L' Q! w1 p) M/ y
  24.         unsigned char buf[0x18];! [1 Q5 e6 |) \5 ]- _  H; F
  25. - E! h& ?& h$ Z+ g. X0 `9 @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( o  l& _) C6 i5 A; E
  27.         if (fd  < 0) {* G' k/ p/ _* i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 J- Y4 ]+ X/ T& `6 e' l: n' j
  29.                 return -1;6 m+ w& p( D" T0 I# p: e9 }
  30.         }
    " z* g9 m0 j7 M
  31.         arg.sub_addr_count      = 2;; N0 k5 M/ Q) G7 Q
  32.         arg.data_count          = 0x18;, j" b# G: {3 |0 p
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 i% k7 d$ F1 g5 k) R# x% d1 H
  34.         arg.e2prom_cmd_data     = buf;
    . E: C0 r: R8 `) M7 [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ j. e9 s% M- C/ D' i) R6 b) u. {/ o
  36.         if (ret != 0) {
    ) J" R7 f6 t7 b+ S, E% Y1 ]
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    , G4 R; V8 R- a8 G" c8 E) b- ^
  38.                 return -1;: p8 ~- P: q/ h& k& n. }* @! g& J
  39.         }0 }( a  u( x* B2 m4 f, U
  40.         memcpy(mac, buf, 6);: I1 [0 K4 P# @% Z7 G
  41.         memcpy(stbid, &buf[6], 18);. K; H4 f% a) n' T; c
  42.         stbid[18] = '\0';
    & y) V2 z% K8 u& T, y8 k, h
  43. ! }+ Y5 {! A+ _  p( h, \
  44.         return 0;0 s, l- ~8 q  @& O  \
  45. }
    ) k0 F' A1 N: w! p& L9 K2 g$ T5 q

  46. 2 C* u% ]8 j" M4 L! j& u/ J1 ^3 ?
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)) K8 d( W8 P/ c% [/ L# J# v
  48. {; y; _5 j3 p6 r# [  l! |& c( Q
  49.         int fd, ret;0 U! M  ~8 X; [* N! Z2 {
  50.         e2prom_s_cmd arg;
    - m% ^* a( t, p% {  N+ s
  51.         unsigned char buf[0x18];
    # |1 h# `1 f& t

  52. 5 ?0 w& C" l# Q5 H, Q4 w
  53.         memcpy(buf, mac, 6);% C( n" c' U  y3 P
  54.         memcpy(&buf[6], stbid, 18);
    8 {5 h% V( p) y" |
  55.         fd = open(E2PROM_DEVICE, O_RDWR);: `: A, s5 O  t9 Y% q" G0 j5 H
  56.         if (fd  < 0) {0 l7 S/ M% A+ E: @# v3 N  ]
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ W% `3 Y& f7 q* K! {3 V
  58.                 return -1;5 v7 k$ z; ]7 ]( A1 O: v" X: n# I
  59.         }5 v6 Z5 k# Z# W( m& q& ?0 Y
  60.         arg.sub_addr_count      = 2;# d$ p  d( [; n1 H
  61.         arg.data_count          = 0x18;
    3 b. y+ B1 Q7 F9 y  D
  62.         arg.e2prom_cmd_sub_addr = 0x290;3 H9 z1 ?7 k, v4 J9 C7 Q
  63.         arg.e2prom_cmd_data     = buf;# h- l0 x7 u0 p: k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);. p4 q4 h+ ^9 q7 Z2 p/ m
  65.         if (ret != 0) {" @/ F. D; k; D7 G1 _6 j
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* k$ t2 l- k; f" X0 e
  67.                 return -1;
    ' T8 L4 C: \1 x
  68.         }7 ^, T0 S$ g. m' T5 l1 ]
  69. 7 d6 [+ [2 y3 g/ W( S& v8 ~0 N
  70.         return 0;
    6 ~5 m' w% B3 e, H2 s
  71. }
    ' p: Z: ]4 j! Y5 G) g

  72. 5 _2 [# A" w9 _' s$ z% _0 {" s7 c$ l
  73. int main()
    ) _7 h3 M1 z7 q* ^+ O) K% g
  74. {
    3 s, `1 z1 O4 z' Z6 ^# t7 Q2 G% y
  75.         char c;3 {4 h( p) Y  ?
  76.         int i, macs[6];- k& f6 s" }: l
  77.         unsigned char mac[6];
    ( w* i# C! i/ Q1 l
  78.         unsigned char stbid[256];' I# J% }1 A$ g. ~

  79. + G+ ]3 |6 o7 p$ J" n- w
  80.         if (readparam(mac, stbid) < 0)1 R# J' u1 M3 @$ `- W
  81.                 return 1;% a) G- ~8 l- W& x9 D
  82. 2 o4 F6 u- H2 g3 M# r0 U( P) F
  83.         printf("Current parameters: \n");
    9 y/ X! f$ A! |: j2 r7 a" U3 {! L
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; W  K0 v5 ?) _% J. }, h
  85.         printf("  STBID: %s\n", stbid);
    # U! ?  x. i# ^, i: ]
  86.        
    . i" Z) b0 d! u- V6 k
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  B% |" o. b9 W# d/ }7 p' t
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {- X5 S' M/ i2 t/ M
  89.                 printf("Input MAC error\n");! W& O. s2 w( @, M$ J
  90.                 return 1;
    3 X9 W: \: E2 Y. |
  91.         }( J1 D% R# u7 W1 z: r! T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: g( ~$ t* N7 U) D& b& j
  93.         printf("\nPlease input new STBID: ");
    6 _5 C+ x4 x' K$ p# p/ |3 c
  94.         scanf("%s", stbid);' T1 N# D& O6 \& I% c. @" u) @
  95.         if (strlen(stbid) != 18) {
      ~' c0 T) X' h/ p
  96.                 printf("Invalid stbid\n");* _; o# l! g6 q  h: v
  97.                 return 1;
    + f+ i* o6 B1 b$ S" t; F
  98.         }
    % c' H" w7 H2 |; @& r: ~
  99.         printf("\nNew parameters: \n");
    # t+ b' `8 I; P6 i; `! q; h$ E
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, C7 Z3 L& _! c5 @+ a$ F$ G. G
  101.         printf("  STBID: %s\n", stbid);
    5 h+ i! H& o5 z+ G! J: H8 y% X# p7 _

  102. ' w( ^- K1 X% t6 U# C$ T
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ' S. `8 r3 d" w0 N
  104.         for (;;) {# n# z' w+ F, A$ ^2 ^. g
  105.                 c = getchar();
    ! C6 C/ V- K# q8 n5 V+ g' q
  106.                 if (c == 'y' || c == 'Y')
    & M8 w, i! A. C, B
  107.                         break;  T) {  p1 P, A  A  r
  108.                 if (c == 'n' || c == 'N') {8 v% W! I9 e0 y- b2 Q$ P! M# S1 b5 G$ c
  109.                         printf("\nAborted.\n");
    2 u* D& m% y: n
  110.                         return 1;
    8 L! [/ w7 D8 r7 C
  111.                 }
    2 @/ W. ~1 y6 ~" u5 K
  112.         }- K8 I- v. K8 V+ \2 ~* `  x
  113.         if (writeparam(mac, stbid) == 0) 8 H% p" w# i, k8 e% `" U0 i3 Z9 j
  114.                 printf("Parameters changed.\n");% u8 Y4 p' r( O3 j5 E
  115. " h$ S) B; E: F. F0 A8 [+ _+ a
  116.         return 0;
    % r" Q) J5 t# W& H/ t( O, ~
  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   k4 p" P& ]; D3 B
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 N) {( a: E/ {: e  [' X你用的编译命令行格式是什么?
( _6 V. ~0 Y5 R  n' Z$ t/ ^
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-7 06:17 , Processed in 0.025538 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表