查看: 17494|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  r* k1 l+ ]6 C  Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! d4 h, x$ d9 h6 H" [2 X- u
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:3 z2 v( N9 H/ V# n" z, }( ]
usage: himr <address> <value>. sample: himr 0x80040000 0x05 r7 w0 H! T+ E# T

# {: b! ^: Z6 Y' w. F1 N8 C3 P7 F
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 I3 l1 Z8 a5 s) L: @" I/ I, z" t
( M6 g9 J5 x% A4 E* }
补充内容 (2012-3-8 09:42):/ ^8 Z6 U0 |/ m. l! C7 u
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! A* ~, k- f& w
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。" r( `7 l% c" v. F
( l" B0 }* E0 b( u9 H- E+ s: N
himr <address> <value>. sample: himr 0x80040000 0x05 C3 U5 M3 W& K0 s) K
' g& y% K* G' ]7 H/ w
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 Q7 q0 x; x( h/ E+ n4 N
himr 0x80040000 0x00
1 Y$ B" E. ]) @' Y+ ^) `& Ohimr 0x80040001 0x110 B. }/ R5 o; D4 h4 m/ K$ b  A
himr 0x80040002 0x22; o" y: R/ R6 M/ o2 J( g) ^) }
himr 0x80040003 0x33- K& ^6 D$ k. D
himr 0x80040004 0x44
( U( u  _4 A& F4 }, ^, Ihimr 0x80040005 0x55
. [6 i" O2 V0 V9 J3 c7 O6 g$ b( j! O3 `# L! S7 G) ^/ C0 {
SN也是类似。
, V7 p: L- L% x: H$ D' V4 A8 q# Q
- Z7 Z! ~$ b( @现在主要是,谁告诉我们MAC和SN的地址?
0 w( w8 s8 Y/ }4 M; j7 r! o
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  p9 h) z3 I  L/ }0 {' a6 o4 w一直想找到运程修改MAC和SN的办法,苦于无解啊
4 m( e! ^- i1 G/ E' K2 B
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . B/ \' f- o+ B  ?! ~0 ~4 T$ F
3 Q( F+ o6 d2 a2 w; Z
修改的代码早有了。到今天不会编译。0 l% I; U0 u! \" K: p) r% C5 K; F
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    4 _* F" V; c7 E$ v- T/ u. Z) o
  2. #include <malloc.h>
    7 x8 E1 T+ \: x
  3. #include <sys/types.h>
    . N9 ~" W9 w4 m* x" |" J
  4. #include <sys/stat.h>
    / Q1 |- z- n- O, D" b# D' \
  5. #include <sys/ioctl.h>
    3 h. d% a5 {1 h/ n- C! V! W- U- K
  6. #include <stdio.h>' F3 h- r, ]+ [/ g+ i3 o+ W
  7. #include <string.h>* d* w, ]; p8 z" _

  8. 1 ?) Z$ s% p7 t! v8 M1 D
  9. typedef struct {
    1 Q' u9 V+ {. P- V" N- k
  10.         unsigned int        e2prom_cmd_sub_addr;4 i! p8 X( ?8 k" ~
  11.         unsigned int        sub_addr_count;8 r9 I8 ]4 G9 I+ f- S
  12.         unsigned char*        e2prom_cmd_data;
    4 n9 E; `/ _; y8 Y5 y, }6 Q8 e. |
  13.         unsigned int        data_count;
      S  E; U- g/ l( O! N( [# `# L+ v
  14. } e2prom_s_cmd;; m) ?1 A# V+ R2 @2 R9 M
  15. - j; F) G8 B( U8 V+ p
  16. #define E2PROM_CMD_READ 1
    $ @# B3 v4 z5 ?; y
  17. #define E2PROM_CMD_WRITE 2
    & {1 w+ M+ r: G$ J
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / f% W! x" U5 |% i& _) C

  19. . x% G; h4 o; z; n: K# A: k0 S
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ ?4 K% V, D1 v7 [9 c
  21. {7 C/ s5 }5 @! X7 Q6 \: o8 P
  22.         int fd, ret;
    3 z/ E1 v& R# }% J
  23.         e2prom_s_cmd arg;
    : h- G8 W8 [. b$ i
  24.         unsigned char buf[0x18];
    3 H' G8 [1 W# I; ]  D( ^4 M
  25. ) y2 I/ d$ O2 U" i& w
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 o/ Q2 i1 o6 w: [3 L
  27.         if (fd  < 0) {! O+ ^5 u! C5 _: E# Y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( I: H: p7 `$ F0 I4 p3 h
  29.                 return -1;
    4 \5 V1 g0 z4 G: v: a
  30.         }
    + R6 F  ]8 k  f6 B
  31.         arg.sub_addr_count      = 2;
    ) A2 E: m: E3 o+ r
  32.         arg.data_count          = 0x18;: X0 x6 s$ A; C8 n$ c" O/ y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    6 B% I2 H  p2 K
  34.         arg.e2prom_cmd_data     = buf;- _. ]0 I; {, Z; Q0 p0 S6 H% }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 i7 s* _& `' M  y; E6 W4 \" O3 c
  36.         if (ret != 0) {) C* [9 N. i' b8 {3 m2 }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 |/ C( G- E; V+ U; F3 \+ B
  38.                 return -1;
    0 b% b/ b  d; o+ ?0 s+ `: |% |
  39.         }- ~- t3 B* H2 x" C  ]0 M! p
  40.         memcpy(mac, buf, 6);
    % h+ u; |8 a6 R+ b
  41.         memcpy(stbid, &buf[6], 18);
    : @* O# w) u2 G* g& n
  42.         stbid[18] = '\0';
    . N$ ^, }' w0 Q, t: p- T) m$ R6 p

  43. 6 b& F; g5 G2 a, q0 z: c2 M
  44.         return 0;
    7 z' H2 p; F  j
  45. }
    & ]( h: I7 _: L8 G" l8 k% I8 @

  46. + S- Z3 u) B; J6 S* ~: ]5 F/ }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): K8 o: H9 C9 I2 E
  48. {& K6 T' ]! F4 M8 `- K
  49.         int fd, ret;( F5 x& \8 D; u6 f
  50.         e2prom_s_cmd arg;0 I! R1 i, Z: n8 x
  51.         unsigned char buf[0x18];. V" W' p# d6 z+ z3 U' l; H$ Q

  52. # E/ ~( R& w, [1 k- U" R# b
  53.         memcpy(buf, mac, 6);, Q! q' ]; u+ I+ m3 N& {$ c0 F
  54.         memcpy(&buf[6], stbid, 18);
    4 m+ t" B9 e9 h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! ^4 ?7 A; i! R/ r1 ^
  56.         if (fd  < 0) {
    6 k- `# v1 u  x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 a) w# O) f% b. R6 G* o0 j
  58.                 return -1;
    ' |8 ^0 Y0 _/ v
  59.         }0 f. T2 ]. ^; ^9 O; |4 _8 @
  60.         arg.sub_addr_count      = 2;
    0 n, o+ N9 {4 \! @. h: p1 E
  61.         arg.data_count          = 0x18;
    2 `, j! S0 d7 S6 D2 @
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    7 {( B" c# H! x8 c  O
  63.         arg.e2prom_cmd_data     = buf;# ~: G8 S7 {; U8 G6 @
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    % I5 \0 b* W3 W2 I& D
  65.         if (ret != 0) {
    . `8 X) {4 c% a3 U$ U
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    7 y4 D6 m1 I. |' E
  67.                 return -1;
    8 S( a! m1 u. u) w( A8 j
  68.         }/ i4 B8 \+ Q. u" {
  69. 3 ^' ]% _- a; k) K
  70.         return 0;
    # f( B/ C0 [8 p9 `* p
  71. }
      J8 e/ b: s- Z! ]: A; ^- ]6 H

  72. $ U' }7 |3 i2 c3 Z0 e; l
  73. int main()+ G( R) u9 d  d0 M/ y4 f+ G
  74. {5 \4 i" @9 N% u4 G. O- u
  75.         char c;) ?2 \& C8 y* X3 K' E
  76.         int i, macs[6];
    7 g* N% [4 ]) E( y0 H1 G
  77.         unsigned char mac[6];
    : U: x  {3 E+ y* l
  78.         unsigned char stbid[256];3 Z3 w7 N$ G8 @+ S0 C

  79. ( l  i) R, N$ A3 ?# y
  80.         if (readparam(mac, stbid) < 0)8 m- Z/ ?# @5 O
  81.                 return 1;
    5 c- l" t* ?2 h: s" V
  82. , R& k: Z3 j, n7 B, d$ |; z/ P
  83.         printf("Current parameters: \n");
      O3 v+ x* L8 f+ v& w( ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, {4 L  H3 @. A! c
  85.         printf("  STBID: %s\n", stbid);
    ( T1 j, u- L) s: ^/ X% a6 L2 `7 Z
  86.        
    0 h& J% K. x# @" D7 m9 g) q2 m- @9 X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * @0 v" Z3 \% G% `) O2 ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    , @% M1 k' x* x0 X- k5 c
  89.                 printf("Input MAC error\n");# Z4 Z; L1 |( g/ @
  90.                 return 1;
    7 s& r2 g/ O# f  X3 f
  91.         }% J0 z, [& l  \/ F7 ~. L
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 S$ t0 Z; W  r3 W
  93.         printf("\nPlease input new STBID: ");
    * Y; B; P$ c9 r9 w. O
  94.         scanf("%s", stbid);
    ! g2 v& ?8 k2 r# h
  95.         if (strlen(stbid) != 18) {
    ) o" e5 }0 t' P$ b. c, C
  96.                 printf("Invalid stbid\n");, V  X6 e7 j4 |: W( s
  97.                 return 1;
    # a0 @! r3 t: G& s2 g' U) _& a
  98.         }
    2 [% _- J' L8 r2 V' l3 ~! W
  99.         printf("\nNew parameters: \n");
    0 G8 l$ _" m5 f% g+ f- Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , v0 K+ s3 N5 @; K6 F
  101.         printf("  STBID: %s\n", stbid);0 V$ y$ b3 O- L

  102. # i2 P5 Y* ?- s6 |
  103.         printf("\nDo you want to change paramemters? (y/N) ");( ]' P3 C, z3 @& D3 g
  104.         for (;;) {4 E  Y- U5 c  u# c
  105.                 c = getchar();
    : Z, W+ e+ I7 u( l% M. Q
  106.                 if (c == 'y' || c == 'Y')
    5 Q0 J, w1 N6 F
  107.                         break;
    " {4 g  M1 O  Q( J1 M! K
  108.                 if (c == 'n' || c == 'N') {- b7 b% \- M6 f
  109.                         printf("\nAborted.\n");
    , @/ c* C: m. W+ F2 m  `* A, r
  110.                         return 1;
    , g( E1 I' K+ t
  111.                 }
    : ^* p* T! o7 N
  112.         }7 p4 {1 e, ^7 c$ {( x
  113.         if (writeparam(mac, stbid) == 0) - L1 ~2 q! I: a' Q# X8 U
  114.                 printf("Parameters changed.\n");* g* L" ~, A7 }. D8 I
  115. + k4 e7 ?% z/ z5 H1 D
  116.         return 0;3 Z* y: h: V; C: J( T5 k+ T; \& v
  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 . [/ S: W, ]' j1 j
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" U; _+ v2 V5 w" e5 R* B2 w
你用的编译命令行格式是什么?8 S, H3 s2 @; V: p% K0 v
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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