查看: 16574|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; ~% [+ e4 ^* r
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 h! m# [5 e, F5 X' r+ J8 v( f
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
" ~! ~& N$ m1 T4 Iusage: himr <address> <value>. sample: himr 0x80040000 0x0
4 A* k& g$ V/ N! S" g7 g
+ k( C2 T5 l0 p# Q3 x9 s
. E' I3 B1 X  {. D$ Y7 R2 T不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) `' V9 O, p5 s; r+ A8 D- o* A# B' l0 s1 k9 K7 P: a
补充内容 (2012-3-8 09:42):1 Z9 q' I% P( P1 B) v
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* ^# ?# k' Z% g; R+ a" p
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。+ p" P, b2 x" {% j, k% H( [( v
1 ^7 e, `) m5 v7 i: E$ e, m
himr <address> <value>. sample: himr 0x80040000 0x0+ T- V: r2 Q3 _- J. x& w1 w  N  b
& r, |( q: V$ v8 l
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) a. f0 y1 k. Q
himr 0x80040000 0x00
0 \) C, U4 d, l9 @himr 0x80040001 0x11
$ u0 K$ |, {' I$ ~) y1 k, Phimr 0x80040002 0x22
! j% f8 l" I) l, Dhimr 0x80040003 0x33% G% k" [) r& f; V( F- i8 q+ |, ~
himr 0x80040004 0x44
% u4 a7 Z0 ]4 J  h$ t: Q) k; B9 Zhimr 0x80040005 0x55! u7 R8 k5 J! b% V
1 v. I+ H8 z& E: u
SN也是类似。
+ Y+ Q/ h% t; Y9 A$ g  O6 D! U% v3 H. h" y1 Y3 }& z
现在主要是,谁告诉我们MAC和SN的地址?: t. r& q1 F! L; a3 K1 Q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
/ a, z1 |( {- }& a一直想找到运程修改MAC和SN的办法,苦于无解啊

5 V. z# F4 f1 v, W& w0 s源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( ?- F; i* ?: h# |, N: G5 z4 `  _! }% `5 m! b6 m
修改的代码早有了。到今天不会编译。* f( k* N0 t; e' c3 r1 z
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( S, Z  E% Z0 x$ l) p
  2. #include <malloc.h>1 S1 a( j# z# A1 q- Z0 _8 _9 ^. L
  3. #include <sys/types.h>
    / {# Z; j6 v! j$ B# K6 h: l
  4. #include <sys/stat.h>8 q( V  z/ e( ^* R+ _# _' B
  5. #include <sys/ioctl.h>
      G, l$ w. R! M1 [6 t/ o: p
  6. #include <stdio.h>$ k" p9 `2 ]9 d. L0 B/ Q3 ~
  7. #include <string.h>
    + ^, b# u6 @; O/ a$ S
  8. 3 I7 t& \4 ]3 U6 s+ n4 s3 q
  9. typedef struct {
    ( _5 n% {- {) N  I4 |7 r8 V
  10.         unsigned int        e2prom_cmd_sub_addr;
    ( U) D2 b8 [  A2 G2 X* ~/ v% z7 `, S
  11.         unsigned int        sub_addr_count;5 I3 q' R# \" b5 [8 g
  12.         unsigned char*        e2prom_cmd_data;3 ^9 R: t: w3 l4 M" Y
  13.         unsigned int        data_count;
    ) s4 G- N  ]( m! ]! A' C- x0 {
  14. } e2prom_s_cmd;
    . l/ a# t9 h% E* D% t
  15. 9 y8 D7 C: X  d' d
  16. #define E2PROM_CMD_READ 17 ^/ q2 H" r4 K3 A
  17. #define E2PROM_CMD_WRITE 2  i' i0 T9 P- a6 H* V
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 t' X# E; r. q4 @7 T) K8 R. e

  19. - N. j$ X$ Q4 x) m$ O1 D2 V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 l( F# p9 B4 @4 f6 C" m
  21. {
    / x3 I- B4 K) J
  22.         int fd, ret;; o' W# I9 |2 V& x
  23.         e2prom_s_cmd arg;
    $ }+ e! b6 m- U1 f* @! x* x! Y
  24.         unsigned char buf[0x18];" I8 ~4 D" f# c6 [/ M/ f

  25. 1 d# I& k  F/ C3 i8 h7 f4 P4 J
  26.         fd = open(E2PROM_DEVICE, O_RDWR);, Z" s2 K3 Y2 K+ T- I; D
  27.         if (fd  < 0) {
    * S6 P0 l$ L" Q7 w, J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " j  x  ?) C$ N( ]1 u
  29.                 return -1;4 k0 y1 U  j* J7 ?
  30.         }
      W' V( l* Y2 W; _/ v' S: T. o
  31.         arg.sub_addr_count      = 2;
    ; _- m9 R2 z( G9 b1 d1 Q7 v
  32.         arg.data_count          = 0x18;0 s  T0 U+ }/ `8 B
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 `( ~& F. d; r3 h) g2 n2 h: E8 k
  34.         arg.e2prom_cmd_data     = buf;
    ) Q8 O( C0 z% P% d7 L$ [) ]
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    4 s' M. n; l2 n/ K$ g0 e% j# {- M: [0 g
  36.         if (ret != 0) {
    ) w5 x  ?9 S# b, s6 E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; D# ^; ]8 t+ l' @
  38.                 return -1;" Z7 c; W2 p& |: ~# l* [
  39.         }
    ! {* k: s7 G6 O* Z* j
  40.         memcpy(mac, buf, 6);2 S: d1 ^2 J$ v, ~9 X; G& n! {
  41.         memcpy(stbid, &buf[6], 18);0 h' W' i9 F$ U$ P' O' I( n
  42.         stbid[18] = '\0';  U+ R0 {# L) x  ]9 H4 q
  43. . y3 h$ i) A+ I. a. {: D
  44.         return 0;* f- D" t% j6 M$ s
  45. }; |% z8 `8 m! S
  46. 3 a  W+ M' A. F, }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ; d% g$ l9 z) I6 ^1 S4 }
  48. {; [( \: N* I' D' r
  49.         int fd, ret;/ L/ Q  N" ^4 V" g( W4 Y+ R4 i) b! J
  50.         e2prom_s_cmd arg;
    + n; T9 O5 @# ?% i; c9 ]; _
  51.         unsigned char buf[0x18];
    * x7 g) n$ H1 d! q

  52. - I3 A3 p* g$ j% ~
  53.         memcpy(buf, mac, 6);0 {2 T, l- {) G* t' L: E" ^
  54.         memcpy(&buf[6], stbid, 18);
    # `  T* O3 t" r. J# C2 t
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) y. i# I3 m* y0 y1 t
  56.         if (fd  < 0) {3 I, N6 K6 B2 R) Y" o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& k) J; Q: g& C8 B+ N8 {2 b
  58.                 return -1;% f# Z. e% G9 v5 }4 Q
  59.         }8 i+ _4 j, K' j! Q* m3 S' ~" q
  60.         arg.sub_addr_count      = 2;1 P3 S) f1 S0 C0 H+ m
  61.         arg.data_count          = 0x18;, E3 X) i- B* s/ O8 N5 y
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 `- C& n" @! `2 Y' Q) a* @
  63.         arg.e2prom_cmd_data     = buf;$ D& C1 z- k1 G6 ?+ M/ F+ C
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 k/ l. |2 M4 q+ ]
  65.         if (ret != 0) {% t2 H' J6 t9 v, ]+ O8 {
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% z" n- R% C/ k  J
  67.                 return -1;3 Q  g( N: \: f, Q2 |
  68.         }
    ' g" M/ q' Y  v3 [+ s- L& I( `2 a
  69. % Y0 W1 n/ B. B% H/ j" X
  70.         return 0;) N, z7 |% X' Z' W  ?
  71. }
    4 y1 X6 \, I& P( }  {' M

  72. : _: M! _" c1 F
  73. int main()- E9 ^# T- X& V- u3 L
  74. {
    ) u  ^! y5 K+ c! k7 L
  75.         char c;
    : a5 u/ p5 F$ y1 A0 V2 \
  76.         int i, macs[6];: I* t. Y; G6 @- ~  t
  77.         unsigned char mac[6];
    1 w2 i. E9 n/ n8 t. ~
  78.         unsigned char stbid[256];! L+ A- Y* \" l/ ]
  79. 3 Y7 d$ u7 Q: D) s6 x- h& R( E- i% c
  80.         if (readparam(mac, stbid) < 0)! t7 e2 t( e" A$ r  y
  81.                 return 1;1 Z7 \; K4 B" o- z4 q: Y

  82. " |, [7 ^' K. U; F7 {4 o
  83.         printf("Current parameters: \n");
    2 r8 N* U  h  n0 t2 ~0 |$ z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 A$ E& G2 J2 c7 O
  85.         printf("  STBID: %s\n", stbid);
    & R# J7 {7 M3 c/ a5 `
  86.        
    " x7 K! z3 W& ^, v0 j. Z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    & u3 u" K; C6 I# q  G: M% h
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {1 R" @+ C! }! L+ W$ K7 H6 {
  89.                 printf("Input MAC error\n");- [% E3 A3 s% W- z7 x# E8 D
  90.                 return 1;9 p- k% C2 _6 a+ _# b" T
  91.         }
    . u  P9 U$ N* R9 m; y9 X5 I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];" h6 F5 q, |, i$ c  i# N, s* N9 m
  93.         printf("\nPlease input new STBID: ");
    $ X" X7 L3 e, `% @$ _  R1 x2 b3 P
  94.         scanf("%s", stbid);5 A' ?9 S- w& |" n1 I
  95.         if (strlen(stbid) != 18) {9 {: K* Z$ F6 w6 S+ I  b6 u
  96.                 printf("Invalid stbid\n");* p; r4 t. W' d- g6 Z) `, v% o
  97.                 return 1;
    ' l1 R6 z$ t9 Y- v+ k: b  Z  K6 t
  98.         }
    - A9 {/ w$ J! q# K& {8 ]9 T
  99.         printf("\nNew parameters: \n");, X5 u3 m  }8 S' H0 H# t5 L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / g" I$ x  L! u% d% |2 ?
  101.         printf("  STBID: %s\n", stbid);
    9 d# s# e% }  {8 k6 ]# _8 Q0 v  j
  102. - i) ]8 O2 R) x6 d3 v0 g
  103.         printf("\nDo you want to change paramemters? (y/N) ");# P2 x! O& V# M' o
  104.         for (;;) {2 a8 C5 Z, O& J0 K8 N
  105.                 c = getchar();( y" E$ I$ ]2 H$ c  ~
  106.                 if (c == 'y' || c == 'Y')& v* D* S/ i& B
  107.                         break;- m0 K9 |( Y% c9 R. P' R5 S
  108.                 if (c == 'n' || c == 'N') {
    % p& X7 r9 v6 h0 `+ P( e/ Z/ S$ s
  109.                         printf("\nAborted.\n");3 S) H6 p0 }2 _
  110.                         return 1;! F' U: r7 ?; m. }
  111.                 }) U& U- m7 J- @! U) g
  112.         }
    . z% a7 p2 f1 @$ \7 E- k) m
  113.         if (writeparam(mac, stbid) == 0)
    # A1 s) W- T; |, `' Q3 D
  114.                 printf("Parameters changed.\n");' i  q" S2 a* _  a6 M! |2 @
  115. 1 @& i( ^" N) u5 _
  116.         return 0;- p2 Q4 ^8 D, z7 n2 }5 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 ( W; y8 u2 s2 x0 d- M
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 l( }# Y$ K& P% C8 B+ M  p你用的编译命令行格式是什么?' N% k" r2 l& A5 y: t. v0 N4 ]
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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