查看: 17502|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : z9 w, Q2 \2 |% R
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ \# V. U7 E6 G6 a, _7 @' J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:: O9 b3 C5 M5 L3 H7 W
usage: himr <address> <value>. sample: himr 0x80040000 0x0; x+ _7 w+ n- |8 ~. Z7 z% j
1 [! j2 T% y+ O- ^0 B1 |0 j6 K

# U6 h5 A; I  ?  I不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 V  T  \( ^+ T/ P! Q8 `3 j( E7 p

% p. E7 R/ [/ {' ?9 K! m! X5 o* O补充内容 (2012-3-8 09:42):& M5 }5 I. P3 i& S" h8 e+ |$ M
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* i/ Y. X/ P! Q; M& u* ~这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。+ H: g+ t& E5 t5 g: B& |
) h' f6 H3 M. r  A/ I- r/ o
himr <address> <value>. sample: himr 0x80040000 0x0; q! n7 l0 y% H* L: l

  A9 s* O. N4 K例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* K2 n, }/ _4 i: [9 F
himr 0x80040000 0x003 O7 y3 s' G0 L2 z) @0 r( Z# E+ W: X" a
himr 0x80040001 0x11: ~" x# \  p: N+ S
himr 0x80040002 0x22. l4 r/ m. q3 x5 B
himr 0x80040003 0x334 U5 p- F% W1 y
himr 0x80040004 0x44
1 m+ m' V1 T% f6 I! a  p$ nhimr 0x80040005 0x55' G3 k7 R: |1 H0 W! V
: {* P: B) E1 ~6 A" U0 G
SN也是类似。3 N5 N/ l& @5 I6 l
& a- e) E. W' t) I+ f* T
现在主要是,谁告诉我们MAC和SN的地址?! ~/ B9 a9 o& Q2 M7 D; I  Y
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( |% v, [/ f4 Y4 J' R- Q一直想找到运程修改MAC和SN的办法,苦于无解啊

3 M4 k& q, N9 Z3 C: J. v. k源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 0 k4 o" H) ?' o0 _% e  q( @

6 |& b5 e* f# F) F8 }( c7 Y修改的代码早有了。到今天不会编译。
: [! s5 L, z0 O2 z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
      M% V. b! k: O
  2. #include <malloc.h>6 q' o& h8 h! B
  3. #include <sys/types.h>: e7 l2 ], U0 e' ^8 n6 M5 e; }2 e
  4. #include <sys/stat.h>
    " u% p, E$ `) u
  5. #include <sys/ioctl.h>
    , a* S/ M% r) {/ t& f3 ?) I' M
  6. #include <stdio.h>* _4 e. O0 }2 X
  7. #include <string.h>
    ' w2 E: w) ?: R; k6 _

  8. * r7 h! H' u) j+ N9 M
  9. typedef struct {9 Y  e. f( _5 B6 i# ^
  10.         unsigned int        e2prom_cmd_sub_addr;0 f$ c. v2 v0 l4 p. O  y& b1 g2 ?
  11.         unsigned int        sub_addr_count;- N' N5 s! M; z
  12.         unsigned char*        e2prom_cmd_data;' ~5 m6 s. {! M
  13.         unsigned int        data_count;- P) n9 p4 Q2 U# g3 j7 z
  14. } e2prom_s_cmd;5 g& K# r" g8 K1 ?8 |
  15. 5 U# z* s7 A1 v& f1 a7 Y
  16. #define E2PROM_CMD_READ 1
    4 `! n5 q9 ^. i0 q) d, s
  17. #define E2PROM_CMD_WRITE 2' [4 @' |: A8 \/ C
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    : b/ [  h  h' E% v# Q
  19. 2 e/ y5 ^/ x9 W! P
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    . L1 m, }  y$ r. r: f2 `
  21. {
    ) U7 a$ p6 g7 Q5 q# f
  22.         int fd, ret;
    6 x1 c$ E+ n2 M$ Z* V8 S: h
  23.         e2prom_s_cmd arg;& O% J+ P8 ], d4 _% a1 U
  24.         unsigned char buf[0x18];( ^8 C6 f0 C* w; [% G" D0 V5 ^( l

  25. / L( t9 ~6 e3 u( l; z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + D/ b  q/ q# [8 v
  27.         if (fd  < 0) {1 i& ?( {$ `$ A- l4 g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);! a9 u1 \; j: }& v/ X
  29.                 return -1;6 \8 Z) e, f' b0 ?7 ^
  30.         }; X  k# ^, B( b, h, B+ K
  31.         arg.sub_addr_count      = 2;
    + G, t  J+ x) `: l! R
  32.         arg.data_count          = 0x18;
    : e$ D# h& I, Z* C
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % }% b% {% ]9 }! ^
  34.         arg.e2prom_cmd_data     = buf;" e$ M' `3 D4 F! ^; A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - O. d; ^5 G; f8 e8 ?' B
  36.         if (ret != 0) {
      e, z. m7 v% u# _# [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 r0 f7 k6 p0 P7 }% k
  38.                 return -1;
    8 {  w9 x9 \2 p& w9 q% K
  39.         }- l, a0 `+ ?! t- {! m* D  C9 ?! s
  40.         memcpy(mac, buf, 6);
    $ ~7 F0 Z) B8 V+ J
  41.         memcpy(stbid, &buf[6], 18);
    . f/ S. e2 ]/ J! a8 I
  42.         stbid[18] = '\0';1 S& F* C' B' J9 p$ n4 ^

  43. % z0 i  m& L/ M/ S5 s# o* y' X
  44.         return 0;
    $ y; L% @( F) Y
  45. }. _5 `  P# p0 i+ }8 f

  46. 4 f# b  }4 k8 D$ B8 L9 }, w, `% G9 `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    & h; M$ N- c# {) D, Q$ D
  48. {  ~# a' Z) P2 V0 D
  49.         int fd, ret;
    8 D9 \) @& p/ F5 p) J& F) C
  50.         e2prom_s_cmd arg;
    0 }$ j; Q4 H9 }$ h
  51.         unsigned char buf[0x18];; |7 O8 U4 D# c- G' M/ _8 C- M
  52. $ J# D" l! ]! M6 b
  53.         memcpy(buf, mac, 6);
    + S) d4 j' H# z% E5 f
  54.         memcpy(&buf[6], stbid, 18);! A2 M+ ?2 w2 v- D% j! E; p
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  }) m9 c  n/ C' ?# x
  56.         if (fd  < 0) {
    0 X2 z4 ^& q2 o$ ?2 K* |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);. _% F- r" \: Y% R0 j( p
  58.                 return -1;
    ) C$ v# s3 Q$ X# a- b
  59.         }2 K0 i+ @$ o" Y5 v3 J* j; a7 D  t
  60.         arg.sub_addr_count      = 2;
    ( K" P# b2 h6 O* j6 R6 r* L1 k0 [; K
  61.         arg.data_count          = 0x18;4 P( k! W& Z+ O3 i& q% l) B% Z5 b
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 c3 y) K, m( z* t6 G' X
  63.         arg.e2prom_cmd_data     = buf;
    : D* y! m# q8 h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    & u& ?' o- W% Q9 N, R
  65.         if (ret != 0) {
    ! t' k) \+ w; u; k( T% N  _! }
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    + q" l# a- ]3 z) T" ^* [# ~- {
  67.                 return -1;* l% y& d' B+ w/ X3 [3 p
  68.         }1 |. z1 T4 V( _, m8 t2 X

  69.   K3 O7 U! }2 W
  70.         return 0;
    : u( n- i6 S( s* m
  71. }' x: e: |5 X0 W% `) V- \

  72. + P$ |' Q5 G8 F, J* g; ^
  73. int main()4 F' F, G# P7 o2 U& t* Q
  74. {
    5 ^& L9 E+ q+ D! X, k5 |
  75.         char c;7 g( j, q! i. k$ P% s4 x
  76.         int i, macs[6];0 v3 Z& B2 F8 n
  77.         unsigned char mac[6];: \. }! g3 i$ H' {, x
  78.         unsigned char stbid[256];9 f' ~5 v. T! |& A% q% h; s
  79. 7 r0 j( J$ K" Z! z
  80.         if (readparam(mac, stbid) < 0)6 }/ x5 z8 g+ K# Q/ t
  81.                 return 1;% |9 a2 l) `+ o4 e

  82. 4 U; v# E' Z( U
  83.         printf("Current parameters: \n");
    0 E' j  B5 f% N2 @
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & a2 T1 l! ~9 }  m& z
  85.         printf("  STBID: %s\n", stbid);2 V/ T: f! p8 [  Z6 F3 P- M
  86.        
    $ M) V9 K5 G' A# O0 W; J
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");" {3 `5 g- [, @3 J: Q  O
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . F. ?, P1 q8 h7 A
  89.                 printf("Input MAC error\n");9 }$ ~6 j  u: P- c  [3 `
  90.                 return 1;; L$ O6 u: l, T, V  @6 K9 Y  h0 o
  91.         }
    1 \9 t4 h8 ~7 q- k- f; l2 P
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# `% S: P4 C* f* a6 h$ }
  93.         printf("\nPlease input new STBID: ");/ Q# F; @. B- _* P  t5 W
  94.         scanf("%s", stbid);& a6 W! ?' ^1 i( n" Q$ {
  95.         if (strlen(stbid) != 18) {
    4 Y8 X; S( b7 B* W# }, |/ Q4 j
  96.                 printf("Invalid stbid\n");. A1 D& c# L  R" T2 T
  97.                 return 1;
    6 {! Q' \5 y4 U. U* S  |% c0 o
  98.         }
    & E6 E7 H1 Z1 B! [3 M5 o
  99.         printf("\nNew parameters: \n");' G  H8 K, ~5 ~
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: @1 Z- f% ]. N: r6 I& M- Q0 |
  101.         printf("  STBID: %s\n", stbid);4 C' i# |2 a2 e; w) f  X& C2 J4 j

  102. ) l. i3 N" X( X. t
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    " t+ ^5 F/ [1 I. K& c5 h- D
  104.         for (;;) {. R$ j( _" h" Z* N' B+ `
  105.                 c = getchar();1 `5 N  w, J( b5 t/ p
  106.                 if (c == 'y' || c == 'Y'): j9 ~. i% X* x5 L$ V
  107.                         break;
    1 B! u4 c$ U. u7 G
  108.                 if (c == 'n' || c == 'N') {
    * @2 s% C+ o6 ~# W( u: p
  109.                         printf("\nAborted.\n");8 G4 L! W( V, ?& o# S$ |6 |" S
  110.                         return 1;$ U, P9 v/ `2 a- k. q
  111.                 }1 A0 l. j; z' s
  112.         }6 ~1 s6 g# Q7 Q) z) q, c6 N" _
  113.         if (writeparam(mac, stbid) == 0)
    5 }' u' {+ ?' b" [
  114.                 printf("Parameters changed.\n");6 @' M$ p  {5 ^) X, Z: b( I# J

  115.   I( H8 f9 J% {9 |4 Z* H( n' u) B
  116.         return 0;1 m  ], e  H0 O8 i. K7 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 - Q" T5 I& w; b
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 ^9 t5 K  D: A) O/ @你用的编译命令行格式是什么?
# Q; I" K  r+ A
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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