找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15397|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    - m" h! h& h% |
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    + V+ h% }: j6 c1 F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
5 T. Q1 {. T% [* c1 P( u: uusage: himr <address> <value>. sample: himr 0x80040000 0x0
) b! t5 _4 o- x4 v( ]3 e, B- C  m4 j$ a* a4 r' D

* M- g# h# E7 d, o$ o+ v8 {" g不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
0 C+ v! b' ~0 @! M# [& C# A9 ~- k0 `/ ?1 U
补充内容 (2012-3-8 09:42):9 x: l; _. ]- |/ J: d
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- D# n& M, R4 H/ s* ~% X这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 Q+ l  h1 R/ U- Z' K6 |1 }- y4 s$ p' f( g. ]3 k
himr <address> <value>. sample: himr 0x80040000 0x0  g4 F9 G# B) c5 N
3 l4 B, E; k% s9 [) T
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, Q5 P3 Y; q+ D/ ghimr 0x80040000 0x008 f, E" u" x  p! j7 q
himr 0x80040001 0x11
3 c& y. U. }7 d- ^; X+ ahimr 0x80040002 0x22
" _& k* r: T; Ehimr 0x80040003 0x33
& A/ `" G7 _% R- Ahimr 0x80040004 0x44. F5 C5 X1 i9 W
himr 0x80040005 0x55% C' ?5 E2 k3 i* x

+ M3 b1 h2 v; M4 E+ aSN也是类似。
7 b$ c5 P6 t& g# J; W- ]3 y" k% B4 d9 _$ R* V; P- p* ~1 v
现在主要是,谁告诉我们MAC和SN的地址?0 s6 `% d/ F& M6 [4 d, u
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 u8 W) j. y3 \+ b一直想找到运程修改MAC和SN的办法,苦于无解啊

- e3 S1 N+ B. ^0 ]" q源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ v; A3 T" L4 _" z
* i9 [" e) ~3 f0 z修改的代码早有了。到今天不会编译。- j5 A4 W( s7 A8 I7 T, G0 m3 |
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 X  L% z" Z+ Q4 o: q2 k! S
  2. #include <malloc.h>( A3 u) e* ^9 u% C1 \1 g/ A
  3. #include <sys/types.h>& B) Z$ M7 t& M4 ~
  4. #include <sys/stat.h>6 c( @1 ~0 o4 \4 @" M9 u! r
  5. #include <sys/ioctl.h>6 w: Y; P4 X' T) V3 s! |
  6. #include <stdio.h>
    ' b0 s4 b, Z( |; S* G
  7. #include <string.h>
    ( g* F4 y7 y. n
  8. * @+ l) x* p% \* A
  9. typedef struct {. C1 _0 t  {3 S* B
  10.         unsigned int        e2prom_cmd_sub_addr;& ^& m: Y) c, H/ G# ~
  11.         unsigned int        sub_addr_count;
    , b9 V% l# E6 x1 _; t
  12.         unsigned char*        e2prom_cmd_data;
    * J/ ]3 G! s8 w0 _5 ~1 h
  13.         unsigned int        data_count;5 s0 e0 ?9 P% t, v+ K- X! F4 T1 v
  14. } e2prom_s_cmd;
    ( @: |6 v# \1 t2 B" k0 t

  15. 9 L; _6 r7 o( e" G7 F
  16. #define E2PROM_CMD_READ 1( l1 ?# T7 N: r* Y
  17. #define E2PROM_CMD_WRITE 2
    9 T. h, Y/ ?/ T; _% d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"+ w7 J9 ^: H  x! n
  19. ' A8 Y6 n" k9 g1 J) R, S6 e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / E* G( D% ?2 k9 g: H5 ?
  21. {# Y9 ]* i2 N  L. `4 `" r% d
  22.         int fd, ret;& u* ?0 ^5 S7 M2 v- s
  23.         e2prom_s_cmd arg;! \1 {) r3 b0 d9 F4 m; `3 |6 |
  24.         unsigned char buf[0x18];
    ! H3 g9 M  \' X$ x- g) U. r. ?

  25. , K0 b# G/ }3 _" N' u$ K% K
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: D! ^- w3 j7 X5 G. `: l
  27.         if (fd  < 0) {" ^$ v7 Q' ^* g6 O- m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 ]; ]  L) G2 Q2 ?/ o2 N% f0 q' U
  29.                 return -1;
    ; F4 w0 F& z: R# m' O! C
  30.         }
    : s( D. i( G+ [. m( k; O8 M
  31.         arg.sub_addr_count      = 2;
    % ], ], d2 {+ {9 c# z: t* }
  32.         arg.data_count          = 0x18;- i1 X4 h2 ^, Z
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 i# \1 L; {. f+ {! v4 ^  J
  34.         arg.e2prom_cmd_data     = buf;% c3 H5 J( e3 l5 B% l4 e; z% u$ R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 n8 j, T! q9 a
  36.         if (ret != 0) {! I4 J: B: Q$ R% U# C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 d2 j$ A( B2 X2 M( _
  38.                 return -1;' H: r# S4 x9 P8 \! j  y
  39.         }) F3 j6 z4 R* ^2 ]6 E$ X& e$ J- a
  40.         memcpy(mac, buf, 6);1 O! V% C5 _5 T6 U  @- g7 z3 O' ~+ U/ u
  41.         memcpy(stbid, &buf[6], 18);* p, p; k/ {1 C! a2 A4 {3 V2 n
  42.         stbid[18] = '\0';
    - z- a+ E2 \* }- k' k: C
  43.   |. \8 @* J9 N5 }5 j  R
  44.         return 0;
    # v$ n+ F) W; {9 u
  45. }
    1 T; N# I8 ?( H

  46. 5 b/ W; R1 Q0 q' x! J! B* @
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): P9 F" N& E0 |2 Y( i
  48. {
    . P  s! w/ g, P* L4 n7 d: \
  49.         int fd, ret;( a! `2 a7 ^' s; T$ s$ i, S
  50.         e2prom_s_cmd arg;
    , l0 A$ ]$ d6 q2 h: j1 G% J3 a
  51.         unsigned char buf[0x18];
    7 I; K, G7 T( k

  52. 2 }  Z/ t: S7 w% N3 |9 n
  53.         memcpy(buf, mac, 6);
    % B. K1 t& n5 D% u. _
  54.         memcpy(&buf[6], stbid, 18);
    " o0 V1 c8 z5 e$ d* c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& a* l& T( V: a0 O/ h* b
  56.         if (fd  < 0) {& C$ E1 r! Q3 `
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);. d8 Z) ^9 P. U: R9 u2 [' z6 {
  58.                 return -1;
    ) f0 L- L! U9 t! n4 d
  59.         }1 P: F, R" W* V. m
  60.         arg.sub_addr_count      = 2;
    6 x5 p! V: d3 M4 P# r/ q
  61.         arg.data_count          = 0x18;
    0 B1 Y- }/ Q% T/ w- \* j
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & U$ o) }3 s* z& @& c, O& Z7 j
  63.         arg.e2prom_cmd_data     = buf;
    2 Q" h& J( A" d  g' ~+ o- \; W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ' ]5 S0 X! w4 p7 k8 a
  65.         if (ret != 0) {' X% q7 X! y; ~2 F. d( b9 q2 q  S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 @/ X2 K3 r9 G. u; y4 s9 d
  67.                 return -1;# t- O  h! [9 m6 ~
  68.         }. s# |. f5 M2 ~' C

  69. ( p1 k3 n6 L( l+ e4 J
  70.         return 0;
    # P8 ], b' m- D6 w7 d
  71. }
    9 ~$ P# S4 g! Y# `9 Y
  72. 2 j$ v! q% K3 \
  73. int main()* o: z+ B. s- J* E8 ^0 D" Z
  74. {
    ! j+ X9 ?' M" }2 M
  75.         char c;
    ! ~5 Q: [# \# V# [& N0 y7 m
  76.         int i, macs[6];, G7 S1 }& L$ K# j  C
  77.         unsigned char mac[6];1 x! b' D: T# R7 w5 B
  78.         unsigned char stbid[256];& K( z( x$ }- q' R: ?
  79. " Z5 a1 u, z" Q; z. d
  80.         if (readparam(mac, stbid) < 0)3 U, Z8 |9 b5 ]: y
  81.                 return 1;( `9 _5 B/ l# x) C1 K' O: h

  82. & w- a# O- O5 H& [# o
  83.         printf("Current parameters: \n");% I4 |, N5 ~' h4 N
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : v9 M9 B6 K1 k: B2 y
  85.         printf("  STBID: %s\n", stbid);# Z' G- L2 n9 |
  86.         - d% C+ Q; m" C* U6 c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ! \/ k: Y) m) U. z: f# `5 i' }
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 f4 e% B  p8 E
  89.                 printf("Input MAC error\n");2 }* s, ?( G2 @6 a
  90.                 return 1;
    5 a, n. n5 a: Q1 }" |. J9 {8 t$ H: x- ~9 k
  91.         }
    ( ]" D/ T/ o! U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    . Z- @- R3 }1 A+ _, z# s
  93.         printf("\nPlease input new STBID: ");
    8 }# Z( M+ V# X% t8 l# @
  94.         scanf("%s", stbid);
    - c9 a: S: p  P6 T# D( E
  95.         if (strlen(stbid) != 18) {( `  w- r. w% |( P, w$ V& V
  96.                 printf("Invalid stbid\n");+ }$ H5 P5 N$ I( G- ^$ g$ o
  97.                 return 1;6 `% N) @& `1 w; q; C6 Z8 J
  98.         }
    0 K" D* e0 J* Y7 L. @
  99.         printf("\nNew parameters: \n");2 I0 ^* ?: I# y0 U8 j; u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! u) W$ u6 J/ t8 d2 v
  101.         printf("  STBID: %s\n", stbid);
    + b/ V9 M; q  ?+ j$ n. k7 z4 s

  102. 2 e/ p$ l. r* Z% g' u' b1 M* R9 v2 h3 f
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ k3 o1 l, l) |' Z
  104.         for (;;) {
    ( _5 d- e5 K2 N: Y& t9 k% ?
  105.                 c = getchar();2 E% i( n% X$ l7 U% u! `
  106.                 if (c == 'y' || c == 'Y')$ b* U9 d# ]% |# ?
  107.                         break;! \1 v; \' M& n4 O2 [" C  I1 v
  108.                 if (c == 'n' || c == 'N') {( Z( N2 p5 A7 y2 n+ B$ g! z
  109.                         printf("\nAborted.\n");
      F8 H% V2 h" V1 K1 `) H
  110.                         return 1;1 a  H- X# t: F9 g6 l
  111.                 }; P8 E8 s3 V) e+ U3 i' ?
  112.         }
    $ ?2 B/ g1 ~) j+ ?
  113.         if (writeparam(mac, stbid) == 0) 6 ?* ~3 ?: R$ B. N8 |5 f  E/ K
  114.                 printf("Parameters changed.\n");
    + t' S5 b1 T" v1 T! O

  115. - B( ]7 H- u! P; L$ [8 }
  116.         return 0;
    & |+ a6 ^0 e5 C0 S0 G  b
  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 h2 Y) y3 }  A在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 l. I* v; ~8 \! d# C3 i) X) V  |你用的编译命令行格式是什么?
& P! ~) ]' s* N7 \$ ]" O! R
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-2 16:58 , Processed in 0.025187 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表