查看: 16307|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    7 v  d* r" u" n% i
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* ^8 s4 E, e7 s! f. W2 W
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
/ K( k2 X! K* \0 a9 w6 h9 v. |4 @usage: himr <address> <value>. sample: himr 0x80040000 0x06 A+ H& f& V$ i& c5 j

: z: ]2 |" h5 U  e' l3 _8 N
7 M. b1 |' y; r( ^+ `8 k: E  Y" y不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ k8 q* h( Q6 Q; j+ i, v+ Y) |+ w2 e
补充内容 (2012-3-8 09:42):
/ T3 O4 J5 i- o2 _) ~$ Bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数+ T# A( @7 n4 Z5 M% H
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
- a2 j  ~9 r6 E% i/ U0 y) d
( V% q7 Y7 X: \. Yhimr <address> <value>. sample: himr 0x80040000 0x06 j% `% K# Y6 G9 p6 d
, U0 o# H6 R" \; d" x
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  ]. Z! N% H! N' I8 Phimr 0x80040000 0x004 s' e' C/ d  F, Y
himr 0x80040001 0x11& U  [7 y: }! w  z
himr 0x80040002 0x22% [' }: G, ^# g& X6 K* F1 W4 A* B
himr 0x80040003 0x33
9 O# F7 a5 |9 {2 Uhimr 0x80040004 0x44
  ^( m) m: K" D! vhimr 0x80040005 0x55
. a  j2 M8 w/ J5 x& `1 c
0 p6 C& P. Q. oSN也是类似。5 D9 G6 p" E3 T; c
  b: f# l! K" C6 H7 A! w
现在主要是,谁告诉我们MAC和SN的地址?1 C2 K4 Z4 e5 }0 R- p6 m, N
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
; Q, w3 g! z8 W* s% A/ F  P1 y一直想找到运程修改MAC和SN的办法,苦于无解啊

% z) N+ Z  ]$ ^+ H源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
8 m$ S! L) K6 J/ z% A& h$ P. G" w. d5 `) ]
修改的代码早有了。到今天不会编译。8 N  J$ ~# {* ]' |
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " E% V( N& C: c) ^: x1 u
  2. #include <malloc.h>% p5 F# Q2 R! h! r1 ?7 d
  3. #include <sys/types.h>
    , q5 n2 C3 n" z
  4. #include <sys/stat.h>& ^; S; l8 f& r. h4 d
  5. #include <sys/ioctl.h>( U# V6 b# m* }5 `2 o3 g' x5 P4 ]' Y
  6. #include <stdio.h>
    0 L8 Q& R. _% {: }8 ^5 X
  7. #include <string.h>( h) {( @) G9 D

  8. , {& n# z2 t8 H/ \" M+ P
  9. typedef struct {. F; H" F, k/ s7 `9 F( H8 O6 j- W
  10.         unsigned int        e2prom_cmd_sub_addr;+ ?3 N! O3 Q! g& s& t
  11.         unsigned int        sub_addr_count;5 W3 r; a( ^8 z  J8 Y3 q
  12.         unsigned char*        e2prom_cmd_data;
    " g) t; y5 j4 z9 R
  13.         unsigned int        data_count;7 ^$ {8 C1 w; A$ \" q) y8 Z
  14. } e2prom_s_cmd;
    $ P: d  k& ^! O/ v# l* O2 O. f9 m
  15. ) F6 K. q% Q6 ~: J! F. J7 w
  16. #define E2PROM_CMD_READ 1" }) O4 L- I4 g1 h% ]
  17. #define E2PROM_CMD_WRITE 24 ^% j8 B! [2 v+ [+ S( E% |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* m1 N- U% A8 }0 L4 \! ~* `4 q; e
  19. 9 M# @8 w6 x/ }$ e6 \, H
  20. static int readparam(unsigned char *mac, unsigned char *stbid). I7 m; O' Q* g4 ^
  21. {8 P% W+ K- K( o0 N$ J3 a
  22.         int fd, ret;; a) C' t8 {  L7 A
  23.         e2prom_s_cmd arg;
      |9 x5 l6 A2 }
  24.         unsigned char buf[0x18];
    ( r: r- e. q# M* w

  25. . A9 ]( l1 m. g, _
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' \3 f6 ~8 m+ L/ w8 }% y; e- @" o
  27.         if (fd  < 0) {- e8 Q3 ?5 n% g$ m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);: S' ?; v% t7 v8 n1 y; O
  29.                 return -1;* K" v& h1 U/ s
  30.         }
    / d3 E2 C3 w  \! D
  31.         arg.sub_addr_count      = 2;2 f  I# H) _4 N* `! R& w
  32.         arg.data_count          = 0x18;
    0 @( X+ {, P! s" w# Q- _
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ A: N. Z+ p& S- ^; T, ^
  34.         arg.e2prom_cmd_data     = buf;
    ; P7 L( L1 G. h" ^2 D2 P
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 n- o/ z8 |- _
  36.         if (ret != 0) {5 ~) q& ?* B3 I, }; P
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 ~: y: ]2 p7 Y) ?+ X! w
  38.                 return -1;6 J) X' Y  ]9 V. \
  39.         }
    " ?; Z$ u; y8 ?3 i# b
  40.         memcpy(mac, buf, 6);
    * J6 Z8 f  g/ @0 F0 L
  41.         memcpy(stbid, &buf[6], 18);
    . s! E. x# {, t( `( r9 T
  42.         stbid[18] = '\0';1 O/ p$ X$ n) v' ]

  43. 5 l# o/ t% X7 D0 B2 A! |
  44.         return 0;& K3 l) i! u7 ], P# T/ E
  45. }
    ) L& x' z0 y* k% `

  46. & c, c8 c- ^5 q7 c  g0 M8 C; m
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    8 e4 Y2 p3 Y' A5 U
  48. {
    * r% ^& k0 F1 |! S
  49.         int fd, ret;1 M$ L0 g" u) o0 [, a
  50.         e2prom_s_cmd arg;
    : h& a/ [" h' W5 F
  51.         unsigned char buf[0x18];4 G# x2 t. i2 ^* g) c

  52. ) K/ |1 [: t3 F" t8 B9 c/ R
  53.         memcpy(buf, mac, 6);9 _: u0 e7 {* m) w
  54.         memcpy(&buf[6], stbid, 18);0 r% L& L6 K7 x4 d
  55.         fd = open(E2PROM_DEVICE, O_RDWR);' M* C5 A% A- w
  56.         if (fd  < 0) {
    ' J7 J8 j3 c( x! l7 w, u
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 X: u1 t  |. ]7 |) A- C
  58.                 return -1;
    8 A$ A8 w2 p0 f+ A4 e
  59.         }( J1 O9 s3 @$ f/ q  c
  60.         arg.sub_addr_count      = 2;
      }% ]* g% L( t( f
  61.         arg.data_count          = 0x18;; a$ n. t$ C7 p& [( q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( n* W# A! D4 u- Y0 v- V( e
  63.         arg.e2prom_cmd_data     = buf;  M0 H- H- T$ y, G1 q5 o* o
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " x2 y# Q6 ~" o# z. d6 P
  65.         if (ret != 0) {
    0 [2 ^6 k7 Y7 ^% ~$ g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    9 a* Z$ J8 U( J9 X$ @9 e. j
  67.                 return -1;( x' j& W; ]3 q0 J1 T% @
  68.         }5 }  r5 ?! H# F9 r
  69. + O8 n) ]  H( f( k, {$ b  h
  70.         return 0;
      O# r* b8 Z& V, ?
  71. }
    . M! Q' W# e9 Z6 t6 ^
  72. ! F, t5 f( \' h4 ?8 L
  73. int main()
    5 E; {0 z; L! r* Z) y$ Z- l5 O
  74. {
    : w3 [7 i- s0 q- _( y- w
  75.         char c;
    % `- ]+ Q0 _; Y
  76.         int i, macs[6];
    2 v# K. k0 [0 _/ k! G  T
  77.         unsigned char mac[6];
    1 q9 p& }& |" }7 B! g( o
  78.         unsigned char stbid[256];, \1 T* \7 x; r2 W  C

  79.   l( {. |# ~. b( B5 w
  80.         if (readparam(mac, stbid) < 0)
    " i1 R% B+ D' _5 p$ T1 D+ ^7 r7 q
  81.                 return 1;4 g+ H% m5 w  q9 |. D5 V
  82. 6 ^3 t. i2 G1 [8 K3 @
  83.         printf("Current parameters: \n");
    $ K( O7 B, t0 S7 b, z5 \- W
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  T# @. G) |0 b0 b) P+ d
  85.         printf("  STBID: %s\n", stbid);
    - r; q4 l& z# k5 B+ Y8 [! |
  86.         : Q; _+ h( i  y( ?$ ?, x
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; I( H3 C3 g0 y( T/ T8 r; g5 z, N
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {# n1 a4 t3 [9 |$ ~: ]' ^) ~
  89.                 printf("Input MAC error\n");
    3 {7 @% O7 i0 q; l
  90.                 return 1;
    ; e' Y3 }- L& s' k
  91.         }
    ' X0 J( ?8 q7 @. x+ J8 @$ }$ Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    8 X- x( X1 `# q  }% Q1 G
  93.         printf("\nPlease input new STBID: ");1 q% L1 G3 d9 h8 ~  [
  94.         scanf("%s", stbid);
    " _/ K) F- c* T, [: M$ g6 w
  95.         if (strlen(stbid) != 18) {3 c+ @( J, S( h; ?% z+ o. D
  96.                 printf("Invalid stbid\n");
    / J& w9 G% m7 j
  97.                 return 1;
    ( Z- m" Z- ^: B' A( Y
  98.         }6 ~+ }0 n; a2 P6 Z7 {4 x" \6 a
  99.         printf("\nNew parameters: \n");8 a: a) r% g- |6 G& S- w; R
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 l7 m/ K6 a2 s
  101.         printf("  STBID: %s\n", stbid);7 e: j- r3 j# l) G: ]2 ^% p* ~& x

  102. : q9 Z" y4 ~+ a
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 u* o/ ?4 ~; d) E
  104.         for (;;) {9 E. `) g' u! R% ~
  105.                 c = getchar();; _( f6 l7 _& }8 [
  106.                 if (c == 'y' || c == 'Y')
    8 v9 _4 e; r, Y  `6 y5 M" w' n
  107.                         break;
    ! f8 g/ j" A" q8 u
  108.                 if (c == 'n' || c == 'N') {2 m& Y' b& R3 [$ i. Z
  109.                         printf("\nAborted.\n");
    / a, Z7 u+ R5 \# I: C; R. t
  110.                         return 1;6 w. K# H; l4 ^' w& ^6 K  B
  111.                 }
    1 b2 P3 g9 \+ v- Y
  112.         }, @' G2 U. B; u# f
  113.         if (writeparam(mac, stbid) == 0)
    9 K, q8 f' @+ V2 I! M% G
  114.                 printf("Parameters changed.\n");2 u7 X( G; q% P

  115. 1 c# _( }3 a, T8 Z
  116.         return 0;) j' N8 n0 T& T, a9 [0 ?9 x" p
  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
1 T* |5 b0 G. g6 d9 `在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ |- U+ H# I$ J" @; ~& s& |" M
你用的编译命令行格式是什么?" ^9 R% @8 h5 q3 C& 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客服返回顶部