查看: 17294|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr& ^9 \, a3 P; t3 G" l% m  S/ _
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 _5 ~/ X9 U5 ?. R' L2 e4 u/ s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
. N: J' `1 V6 O3 Husage: himr <address> <value>. sample: himr 0x80040000 0x0
# m% Q9 u! K) ]
/ S9 A/ V2 L9 }- c: M) w$ ?$ I- Z4 @7 g4 w6 J! E" t% I/ d
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, d  H& t% M* o, k, H1 U7 n9 A& s  H5 \) C' U  B+ j
补充内容 (2012-3-8 09:42):) Y$ m7 y- @+ u* Z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* I0 x6 K& e+ ?: d" y% z5 Y- ^2 e
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
9 ]. `  v& y  l0 A* T- I* w0 D. `
himr <address> <value>. sample: himr 0x80040000 0x0
& n% Y# e0 j4 _" C' K; E% Q9 E1 _* I2 ?* [9 W9 J
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
$ [: @4 T0 e, Y* _! u8 B. C8 ]himr 0x80040000 0x00
3 _& F' ^$ p; b" N$ B  \& @himr 0x80040001 0x11, ?$ e; u; z8 a; _
himr 0x80040002 0x223 }( C( m+ v- O7 H  v1 Q( Z
himr 0x80040003 0x33
7 n+ ?) e' D. v& Ehimr 0x80040004 0x44
3 s' ]+ b9 Z( j# _' }himr 0x80040005 0x55
8 P0 q# C* d# E. ~. s) `- q2 u
% Q# P7 y3 n7 o1 P6 oSN也是类似。( _1 \, ~, A% i/ |& ^

& \+ T% K5 ^- b0 i6 t1 u现在主要是,谁告诉我们MAC和SN的地址?0 i9 n9 b0 ^& O4 w" F, `
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
) a* t/ Z( Q$ K4 J' t2 c/ J8 }9 ~一直想找到运程修改MAC和SN的办法,苦于无解啊

# s  [$ j5 w3 h7 J4 E8 \源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / k7 W& O* _/ H% T$ P
# `3 [2 }" R* _- a1 z. H! I1 ?
修改的代码早有了。到今天不会编译。/ F1 x' P% H# w6 F; i7 _
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ b5 R/ |7 k5 ~" T7 a
  2. #include <malloc.h>3 d. I; G; j4 _* J* N9 Q# H
  3. #include <sys/types.h>
    5 A% n) E. o0 g2 p; K( x$ U
  4. #include <sys/stat.h>
    3 F6 l& I5 `5 z) d
  5. #include <sys/ioctl.h>
    4 @1 s- V4 x2 n6 ~0 E/ }
  6. #include <stdio.h>
    ! T7 S" Q- m* {; g. p% D0 N
  7. #include <string.h>
    + X# I& {" u/ L  ?
  8. 7 ~8 G& f% _  \3 @. ?% d/ n9 R! p+ N
  9. typedef struct {
      x1 B$ ]- j, v) M, r+ h( u9 O
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! a) T( x9 U% g  a
  11.         unsigned int        sub_addr_count;; f' d: c0 i# ~/ v" g: Y
  12.         unsigned char*        e2prom_cmd_data;% b  g# b7 t5 Q* K& h
  13.         unsigned int        data_count;( k3 J, G/ J1 U2 k  A% o3 |
  14. } e2prom_s_cmd;0 R' B- {' H# t, M- D

  15. * L- o' O/ k/ {) ^5 e8 I
  16. #define E2PROM_CMD_READ 1$ f# z% a: x( S  i. [7 j
  17. #define E2PROM_CMD_WRITE 2* W9 P" C1 u. D( m- o/ z3 M
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"- g* ^& D. m$ j( \+ k

  19. 3 ~! d* s+ n+ i4 `: O
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / T/ B) j6 s' S6 j
  21. {
    8 [6 f0 K  u- t
  22.         int fd, ret;
    4 _8 C, m& K0 w8 {
  23.         e2prom_s_cmd arg;8 F! d5 P9 j' D6 I$ a
  24.         unsigned char buf[0x18];3 S. N" o) `8 t, J
  25. 8 g- P3 \5 |" P" ]$ s
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 `& d! {: ~/ s( K3 F* ^3 v
  27.         if (fd  < 0) {
    5 |/ J: m5 B! \2 B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 Q* @! L6 a9 q! D) s( R% Q
  29.                 return -1;
    - T5 d) l, x: }# E2 G! t8 [
  30.         }
    - W4 I0 Q6 a% O/ q
  31.         arg.sub_addr_count      = 2;
    # t: C1 @4 h* a* m6 y
  32.         arg.data_count          = 0x18;  M2 Z% i6 P4 ?; S/ u" n* v2 U  N
  33.         arg.e2prom_cmd_sub_addr = 0x290;+ d9 Z- ^* C1 l
  34.         arg.e2prom_cmd_data     = buf;. m" l5 o4 t: }3 o9 r' L" ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ! _2 p' p& N3 K$ a" Q
  36.         if (ret != 0) {
    7 W3 t$ k! A2 K; O0 h2 [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);! G; k+ G! i8 E. ?8 s
  38.                 return -1;
      e9 A- o- z! {' @6 t: z- [$ J# L2 f
  39.         }9 \, M8 a& a8 `8 o
  40.         memcpy(mac, buf, 6);
      [4 v3 m" N: z, c  w+ G
  41.         memcpy(stbid, &buf[6], 18);. [" f! S% r. O- H1 x
  42.         stbid[18] = '\0';
    . f; B6 f* X/ I  `# A

  43. 7 y7 X$ ^. ~6 B0 j  M) U
  44.         return 0;6 I- y/ l& u3 v8 c, u
  45. }
    , N5 m. E6 N7 W" r1 j8 W7 b
  46. ( G7 V8 ^3 W( o- p
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% P& Y% w* B" B! W' {! }. L3 _
  48. {
    - O. P6 \: D% h) D0 K, z
  49.         int fd, ret;+ R2 U* Y0 \. \- L+ T  L+ T
  50.         e2prom_s_cmd arg;) N: Z5 N2 I9 ~2 H; n* p: g% |
  51.         unsigned char buf[0x18];
    / @' n# M% f7 h% G7 d

  52. , ^( _! g; ?8 G$ u' C6 y
  53.         memcpy(buf, mac, 6);
    ' E1 O/ |: u$ y& x5 S0 ]
  54.         memcpy(&buf[6], stbid, 18);. n- N" ?/ F- \: g$ G8 T" @3 }
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" _2 n% Z2 f2 f' B; r8 a
  56.         if (fd  < 0) {! Y( O, }' ~& M; n
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 r! q9 b( d9 J4 l5 l( }
  58.                 return -1;. v* C+ ^+ Y7 {7 v( {) p
  59.         }
    ' {5 k* V9 a- ~) R; s, J
  60.         arg.sub_addr_count      = 2;
    1 M2 O6 N) a* G$ I
  61.         arg.data_count          = 0x18;
    1 h& p# a  `/ j# Y- r
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 o( {6 h! p/ V" a7 G" \
  63.         arg.e2prom_cmd_data     = buf;
    ) p6 {1 C" n. m* ]! _; ^/ z9 f
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);% I2 R$ B, ?1 E  r
  65.         if (ret != 0) {( i8 `1 x2 U+ C3 T
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ I0 x& M3 t: \8 E: S% j
  67.                 return -1;$ ?' x0 W/ |3 _4 {! a
  68.         }
    2 ]. S% j% N/ m  Y" u0 s

  69.   i7 M) K0 o7 t0 _5 y* A
  70.         return 0;, y  W9 n% a! ^! [) e
  71. }
    ! u; Q& r" r2 h5 i! A

  72. 6 N  X5 q" E8 g' i! C3 \! p
  73. int main()  [# m+ {# Q% B3 v
  74. {
    2 m2 u. X: q! H) L% e$ V* x% q5 D7 R
  75.         char c;
    8 |0 S( B- S, a; I# g5 V
  76.         int i, macs[6];
    6 {8 d' A/ X' O8 y5 i
  77.         unsigned char mac[6];. N$ }& p' l2 g% j
  78.         unsigned char stbid[256];
    - f" @) @/ N9 g( |; e

  79. * [# U8 m( N8 t7 {: x( \
  80.         if (readparam(mac, stbid) < 0)
    * j4 |; l" c9 g  z, Z" Z
  81.                 return 1;: L  n( E2 k; m
  82. % l# x5 w$ {" Y! ?3 s+ K0 v4 v
  83.         printf("Current parameters: \n");
    : d1 i" r3 K  ]. m: D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * b* \5 g' k1 h$ W0 B
  85.         printf("  STBID: %s\n", stbid);4 L; c& n8 T  R
  86.        
    2 l% r+ E8 S9 r+ k' p# C( l; ]- E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    $ N" N/ f* n$ h* W# ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + o& ?8 F6 O! ^+ A
  89.                 printf("Input MAC error\n");
    - k+ B3 v$ l6 H9 }! m+ \/ t
  90.                 return 1;6 i( A+ d. S0 N' H
  91.         }
    / Z6 k% T) o2 K( K$ x9 f
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * j$ j3 Z  h9 i" C4 \4 q# o
  93.         printf("\nPlease input new STBID: ");
      i" f& c& k* v* N0 u* i
  94.         scanf("%s", stbid);' j. [1 `9 Y8 c" \6 N
  95.         if (strlen(stbid) != 18) {: [+ H$ |; p/ z  n" {& E
  96.                 printf("Invalid stbid\n");
    , m: a. E5 m1 R2 y6 L; |/ b' Y
  97.                 return 1;
    : g& h  a  P7 L& X" U6 |* d2 n
  98.         }5 f  ~; @  F5 e2 r
  99.         printf("\nNew parameters: \n");
    % e- a- q- w: M" x0 {) T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# Z- G& q; l1 c) f( s7 e$ V
  101.         printf("  STBID: %s\n", stbid);
    4 w; H5 h' D% P

  102. 5 j/ ?4 j1 S, }; K( U
  103.         printf("\nDo you want to change paramemters? (y/N) ");1 ^/ Y# X3 ^+ e' m8 Q
  104.         for (;;) {4 K& R  ^, E: X' d* D' {
  105.                 c = getchar();; Q6 A' a3 J' \) H
  106.                 if (c == 'y' || c == 'Y')
    # F0 A% W8 i( N; u( y5 \, ]
  107.                         break;' u  m1 k" i6 {. o0 z* Y
  108.                 if (c == 'n' || c == 'N') {# a9 ]% E0 w1 ^
  109.                         printf("\nAborted.\n");
    / _2 D; C* A5 k" ]4 {; M( d& H
  110.                         return 1;
    ( q* M9 w/ E: R& p7 N  j, R: Y$ q1 c
  111.                 }% [+ x5 \! v! ?) o
  112.         }) H) b+ [. k! F6 w! h# j0 Z6 U
  113.         if (writeparam(mac, stbid) == 0) & k. P, C: g. H) }% ?
  114.                 printf("Parameters changed.\n");' j! `/ B$ b7 Q3 P+ K& p

  115. 1 g5 w1 @, p/ k& C% C1 X
  116.         return 0;: q. x3 p6 m' `) _+ 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
4 \) U% [, j8 ~; }- K/ e在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' O* a  K5 D8 X, V% n5 D
你用的编译命令行格式是什么?# j; `& F2 g8 C9 N8 T
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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