查看: 16750|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr: ]4 l" s" O2 v; \0 ?; ]4 c* a
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    * }( E5 r# v7 H  ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' ?4 D6 }: W9 R% y; z# |7 ]! s- {# nusage: himr <address> <value>. sample: himr 0x80040000 0x0
. ^& v5 M0 R# Q* i0 L+ u4 Z. n$ S- a2 J; K
& A9 r1 l! Q3 R6 I$ o& h
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; y% A1 A+ o, M7 o# c+ }$ K* z0 @
  I7 Y# I0 b% E, @8 m8 w" h
补充内容 (2012-3-8 09:42):
& |4 m) d) g8 _6 b7 M$ y: yhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! E' ]6 T& M: I# ^' s+ L0 ?0 @: q
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。" v& L; _4 S4 @

. Q7 F4 g' d; V2 Z- Dhimr <address> <value>. sample: himr 0x80040000 0x0  [( q# p7 c6 t& b; O* K5 Q8 U
8 r- C9 u+ a3 @- r$ ^9 T
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 O1 R6 z* Z  ]! N* P$ t8 m5 Nhimr 0x80040000 0x00* w: j( O+ ]) n4 P/ G- g
himr 0x80040001 0x11
9 w. ?% n# [% b3 \  rhimr 0x80040002 0x22
% d# Q4 }0 |6 p: ]9 chimr 0x80040003 0x33
1 ]6 N* q  w: ~3 C/ z8 _8 Thimr 0x80040004 0x44
, ?4 q) ^. H' H) O; v6 Mhimr 0x80040005 0x55" J4 }0 I4 X- g" u! x& ?! l' A$ o
" V. ?+ G, W2 ?! g* n# E
SN也是类似。
) E- V8 x$ n0 s, b" C' |) ~3 L& [4 }1 @$ P9 r" J' e' M
现在主要是,谁告诉我们MAC和SN的地址?, d, {" z$ }+ t# f
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
; ~* K3 \$ x' K一直想找到运程修改MAC和SN的办法,苦于无解啊
, h* j+ `- N6 l8 j
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 5 Z( c7 x4 n* D% v' `
" W- J! ?3 F4 n# C: v- d& S. z
修改的代码早有了。到今天不会编译。
' `9 b" e" u6 s" m6 j( S4 x, F$ v2 g需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 Q9 H. H1 O( W1 d( `* N. i8 C& D
  2. #include <malloc.h>
    ; f2 F# {! \1 g1 j  R  b4 ]9 ?
  3. #include <sys/types.h>
    ' B# F5 }5 `# z$ f2 {/ L8 q
  4. #include <sys/stat.h># \7 t2 a- b8 K! Y
  5. #include <sys/ioctl.h>
    . Z( k1 d# `4 @
  6. #include <stdio.h>8 a+ j: K$ k- S8 I6 u  S
  7. #include <string.h>
    $ k* ^5 C  ^* s( I' m4 x

  8. $ j2 _$ }3 ~# W2 ?1 D
  9. typedef struct {1 m4 D' |3 A' y$ u+ ]
  10.         unsigned int        e2prom_cmd_sub_addr;
    " ^9 A* u# B9 j7 g; t
  11.         unsigned int        sub_addr_count;
    2 `% g/ m5 a. C! b  P" r) k
  12.         unsigned char*        e2prom_cmd_data;
    . R* R. z' T1 y. Q3 b/ Y1 C
  13.         unsigned int        data_count;
    . }4 T% `: ?; S8 q
  14. } e2prom_s_cmd;
    ) q/ z+ G0 N, ?7 a1 D

  15. 7 V% L- ]$ _7 s: Q$ C$ @
  16. #define E2PROM_CMD_READ 1
    , J! }# A5 \* s  U# U/ e
  17. #define E2PROM_CMD_WRITE 2
    4 N  x/ |8 K8 ?2 W0 |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . K' f' f* I  g' N' d6 w
  19. 8 S7 d9 t8 i' c3 U& W* \
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 U) q0 o$ X; \& ~* J. b
  21. {' Z  a+ e* u; x& @, t2 R; O
  22.         int fd, ret;) ?3 G! k" p8 v# {
  23.         e2prom_s_cmd arg;$ o6 y% v# Q$ g3 V) h4 ]
  24.         unsigned char buf[0x18];' N! ?  v/ l; U

  25. , c. v- \# \3 y7 h9 x; }) C5 o- S" {! S
  26.         fd = open(E2PROM_DEVICE, O_RDWR);2 X, i7 ^: i" [" n5 V
  27.         if (fd  < 0) {
    : |( r) [. y' _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( c/ t% v; X" F# q$ N, J5 d. A
  29.                 return -1;1 c# A, a) e4 n8 t8 _0 C( a7 P9 O* j
  30.         }# c; p# M9 d- [, }, ^9 g
  31.         arg.sub_addr_count      = 2;
    & y8 D" p. |3 o0 ^# |4 i
  32.         arg.data_count          = 0x18;
    / a8 b+ F% c8 z
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' J( H) T5 r; b( Z/ @' m
  34.         arg.e2prom_cmd_data     = buf;
    5 O( H: l3 W# E1 Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);) n. _. N, a, S1 h* _
  36.         if (ret != 0) {3 O, p: S& n+ I& b4 W1 C% l
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - c- f* v) n; p  {" j& ~( M$ h3 m
  38.                 return -1;
    5 L. d* S- ^6 h  ?9 u) o
  39.         }
    * ?* I$ Y, S  L3 r
  40.         memcpy(mac, buf, 6);
    $ Q9 J' [- T4 r- X9 ?9 ]
  41.         memcpy(stbid, &buf[6], 18);
    " I) U$ U1 G& k' Q" ^
  42.         stbid[18] = '\0';
    0 V1 q% O7 f% v8 Y# {- U# P
  43. ; R2 U8 E& m. D1 t& ~; _
  44.         return 0;
    ' u! z+ F9 h& y! u1 H
  45. }5 [: |9 h, y: x

  46. 5 Z. T) ~, y! E. E" a+ e6 [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 {$ T, v3 {4 }& r& W- e" k
  48. {# A5 S3 ]4 z3 L8 E& X
  49.         int fd, ret;
      }8 a8 F, ]& S% K6 O# Q9 l1 }
  50.         e2prom_s_cmd arg;# Q* \5 g" T/ L( j/ ^  g( v
  51.         unsigned char buf[0x18];
    ) u0 h0 U) E2 e  i% I2 W" P$ j0 W
  52. , v3 S6 W1 ~. E/ a; `3 y4 W5 o
  53.         memcpy(buf, mac, 6);5 n1 H1 W. d. \0 G
  54.         memcpy(&buf[6], stbid, 18);
    " \' j1 H- o/ x% ?0 g: j
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " d. Q6 O! {: l1 ^( n5 _
  56.         if (fd  < 0) {
    " _1 e, E2 b6 V; R- K+ y, d
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( ]$ B% t/ k9 |& @2 \
  58.                 return -1;3 d) o# o: h; R1 D' T0 }
  59.         }% N$ P) Q# q; d8 V$ ]" O
  60.         arg.sub_addr_count      = 2;
    4 ]3 |# m5 e& u' w; I# r
  61.         arg.data_count          = 0x18;2 ?9 @" A7 L& i. }/ D0 G
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    , T+ g$ ^2 b& Z4 @6 N
  63.         arg.e2prom_cmd_data     = buf;
    3 S% Y# Z1 I5 g1 v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 r$ E  y+ _, b1 ~+ E% y" Y
  65.         if (ret != 0) {
    ' N' B, ^* i) U" r7 K1 V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);6 V* X4 Z' H8 b& G7 _# f
  67.                 return -1;
    3 t! X7 }/ k; O' H
  68.         }% S7 s( c; r, j( m
  69. " `/ {5 i( ^; u5 N" H* d  g
  70.         return 0;# w7 m9 U7 E2 N! X  q9 u
  71. }
    2 i) g% I9 Q8 @% G$ [

  72. $ Y' U% X$ |( }7 Z' n
  73. int main()
    - z" @* U/ [, {  J& V  m
  74. {4 [* F2 e1 A" d( m3 O
  75.         char c;
    ' S3 B3 @' S! D, v# X; a
  76.         int i, macs[6];9 {3 N8 Z9 B" Y8 W, A
  77.         unsigned char mac[6];
    ) s+ w/ v6 t) L  T3 q4 U
  78.         unsigned char stbid[256];
    ! p2 E4 D6 ]$ q5 ]% |# B* ?! C

  79. . l% Z% S: D$ _$ }$ V$ M# D/ G) A
  80.         if (readparam(mac, stbid) < 0)- }6 ^' L# z" i; H1 \' C6 z
  81.                 return 1;. c7 H: m& M# |

  82. 8 n8 `* O- B. N" E. a% c
  83.         printf("Current parameters: \n");) S  V3 W+ J$ X+ l& Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. Z3 [; s9 S4 z  |) R
  85.         printf("  STBID: %s\n", stbid);/ b! t/ p% I: J* O! G/ R1 K
  86.         & }& \$ Z$ J0 z' O
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 H6 O  _0 c' z, c1 c& O
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {: e" m) X& {$ w+ W5 ?: M. S
  89.                 printf("Input MAC error\n");
    & ]4 n! S" o$ _/ e/ u9 O/ p3 u0 ?+ z
  90.                 return 1;+ w1 |2 F: _' U& H$ h
  91.         }
    8 L3 a* v- n  V. @. T" R: a' y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    8 i0 \8 ^. I% v9 g% C7 g
  93.         printf("\nPlease input new STBID: ");
    * f0 a: h7 V" g" K7 X8 `" U" m- j
  94.         scanf("%s", stbid);3 D$ d% q& P. p4 F; ^; |" T. ]
  95.         if (strlen(stbid) != 18) {
    2 T$ Y& a6 \5 U8 S5 f
  96.                 printf("Invalid stbid\n");
    & S$ @" U# z& s& F+ `
  97.                 return 1;) y) ~* [/ ?/ v- Q  E% F
  98.         }
    * W" ]$ L& x% Z! e- ~5 _
  99.         printf("\nNew parameters: \n");% |- A2 c% k0 R8 b1 r$ R/ v8 }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # f0 D9 r$ L0 G% p
  101.         printf("  STBID: %s\n", stbid);1 V- \8 E0 @/ g- c  I3 l

  102. 8 Q* q  g1 q# t5 {7 s
  103.         printf("\nDo you want to change paramemters? (y/N) ");! f6 ]- k* T9 u. d' M
  104.         for (;;) {
    7 `: A7 E1 H4 l( S/ y+ X8 M
  105.                 c = getchar();
    1 H8 X( i0 M) y- ~2 {# T) U% Y
  106.                 if (c == 'y' || c == 'Y')3 f' [( n5 H# \8 [, ^2 Z9 U5 l
  107.                         break;
    " C0 k' v: }+ X; U3 A" q
  108.                 if (c == 'n' || c == 'N') {
    ' F. W1 P3 g2 b# O9 Q
  109.                         printf("\nAborted.\n");
      A, b7 F0 F; j* j1 W4 f! W* [
  110.                         return 1;2 C/ n) J% }2 [. I* k( W" V
  111.                 }
    4 _4 ^/ N; f! g  K7 O
  112.         }- D# j8 A+ s. W3 T  R9 s3 ~/ {8 i% ?
  113.         if (writeparam(mac, stbid) == 0)
    ' c3 m, d3 T  ^+ w" Q/ @1 Z
  114.                 printf("Parameters changed.\n");
    $ Q/ g  e$ ]7 ~' Z, S

  115. , }* B  P9 K$ c0 S
  116.         return 0;  j1 {; J" ~& ~8 b5 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
$ f, l( i' M5 F' K6 \0 A在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 B" L4 [# Y( K1 X
你用的编译命令行格式是什么?
$ m! p( ~! N% Q5 Q# v% F
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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