查看: 16036|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; ]6 X" N; ?$ m5 B1 C- F4 }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) o8 v8 \- ]! u; R% [0 t7 w/ z  ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; X, j, a  b, Q2 n& Zusage: himr <address> <value>. sample: himr 0x80040000 0x0
2 M/ x1 k; e8 `) h- N. X3 I. h- d' h3 |
3 _. e; W0 w' V- w5 j
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ b+ e9 s9 |" q9 s5 [% y
* b- `9 `% j$ y/ r% g8 u! K补充内容 (2012-3-8 09:42):
6 E: ~% C. s  E! X2 y; S- P4 uhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数: ~% o8 F' Q7 v) `* W7 Z
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
; d  c6 Z! }$ H* a+ l( }
1 E/ K* C) p5 y  Qhimr <address> <value>. sample: himr 0x80040000 0x0
8 `2 I" E4 @8 h, g# T5 Z2 ?. U7 N) y* p  ]& E5 j
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。2 o4 G# `5 T2 a: Q; z
himr 0x80040000 0x001 k% {7 g, e- s& P
himr 0x80040001 0x110 G" J2 g: F# h, q; h
himr 0x80040002 0x22
5 y0 a$ q( V* \- u) K$ H! ]4 rhimr 0x80040003 0x33
. u0 ?8 }' ]3 ^; E8 i/ rhimr 0x80040004 0x44' N2 v( t) Z" I$ [8 g+ j
himr 0x80040005 0x551 a4 a: T) k/ i* y/ n, c
$ ?8 F: T+ C# S# q- z$ L" f# E- d9 K
SN也是类似。
+ u. N# f% m2 ]7 V7 u* L: C. g  }' G6 e& Z+ X$ J
现在主要是,谁告诉我们MAC和SN的地址?/ v8 v3 ^5 w) W) O
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ T3 l1 G5 v8 \3 k+ y7 K一直想找到运程修改MAC和SN的办法,苦于无解啊
7 J2 z" k7 ^7 U7 L1 V0 t# T5 a
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & a% A" p- B6 J, h% i! J

8 X2 |: @' o  I8 M修改的代码早有了。到今天不会编译。2 p! e6 M  ?' Z, c* C
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>9 G4 `% R/ K5 I, k. }
  2. #include <malloc.h>- p1 \5 }- T/ w% {7 e
  3. #include <sys/types.h>
    : z6 v% u5 a/ L4 o( Q2 Y* I6 ~
  4. #include <sys/stat.h>
    : B9 F, K" Z1 L1 |7 d% E/ A
  5. #include <sys/ioctl.h># O  R. L6 ?9 E5 g9 [
  6. #include <stdio.h>! u) J/ k: U8 g6 n; e7 R% G
  7. #include <string.h>  M$ _3 M& Q7 r$ i: N

  8. ; K6 O% A: K+ w3 Q
  9. typedef struct {7 ?- R6 Q. C; ~' T/ d/ z% l1 m
  10.         unsigned int        e2prom_cmd_sub_addr;
    7 u1 Q  ]- C2 m' |" U1 T# p
  11.         unsigned int        sub_addr_count;
    3 v# f  v' {% H/ ?2 R
  12.         unsigned char*        e2prom_cmd_data;* J3 q* K: q3 L1 ^8 Y: d
  13.         unsigned int        data_count;
    , t4 i4 o; |' e/ ^
  14. } e2prom_s_cmd;
    . ~! N* w% j2 b- t! q+ v

  15. 5 f7 w! y) t, T- q% \# E
  16. #define E2PROM_CMD_READ 1
    2 x( D" `% }, H0 L/ s) s
  17. #define E2PROM_CMD_WRITE 2
    ; ]5 B3 n- e' P& x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 B, q8 c% }$ C# ^. M
  19.   ^6 j# E5 x. u' H
  20. static int readparam(unsigned char *mac, unsigned char *stbid); X1 w6 k, \( d, I: F; Z2 X
  21. {$ e2 ?5 H/ y" I: @: W
  22.         int fd, ret;1 s" L4 s" R9 g# \
  23.         e2prom_s_cmd arg;
    * d, P( E0 n4 z
  24.         unsigned char buf[0x18];8 D5 V; b' K0 L3 B: ?) g1 A
  25. ' \# |% x! V" r- T3 O
  26.         fd = open(E2PROM_DEVICE, O_RDWR);! M. T: @% _) C  K$ E( h
  27.         if (fd  < 0) {
    8 y! j3 I7 S5 @# V- D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);" b+ c9 }' E+ p' ^0 @) ~, x
  29.                 return -1;
    7 u8 X" g, E! @: K: V  c& [
  30.         }
    / }2 e& T  K6 e7 j, D
  31.         arg.sub_addr_count      = 2;
    / U& N0 [0 q; x+ S
  32.         arg.data_count          = 0x18;
    ) L$ `% s! `! I5 r$ I. r3 R
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    7 ^; s, @1 z- D, e" T0 \6 l
  34.         arg.e2prom_cmd_data     = buf;6 ]8 `; b$ x, C6 O) N. a) i; l
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);/ c6 p! g$ B% }  o
  36.         if (ret != 0) {
    - Z# q0 V1 d& T+ v
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( d2 j7 o  d( i8 W9 ~: i
  38.                 return -1;# m+ q6 n$ Y; _" a
  39.         }
    2 d1 o# ^5 `( T3 R+ ^7 Q6 F
  40.         memcpy(mac, buf, 6);# n' T! G+ o- p: b0 n# A
  41.         memcpy(stbid, &buf[6], 18);
    , I0 h' c, n+ D! x
  42.         stbid[18] = '\0';
    8 S: S9 U/ N, j/ ]7 _" f

  43. 7 ]: S! a" N6 M) b7 S
  44.         return 0;
    ) ?, j! u$ n' Y
  45. }. g$ [9 Z/ k3 H+ l5 P8 Z$ _$ V" [

  46. 4 [4 M( F0 g/ g% O: ]; T8 ^4 J+ S+ T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 a5 w/ J) H3 {" j) d# K1 U$ u$ I
  48. {' v2 |& U) `  g% Y2 K& C! J1 k
  49.         int fd, ret;) i, L7 {0 \; g+ Y& G
  50.         e2prom_s_cmd arg;- N: r7 }0 N3 D
  51.         unsigned char buf[0x18];
    4 j8 m8 i" k& F5 e1 _# X
  52. , }/ S3 ^8 T6 O/ g2 q
  53.         memcpy(buf, mac, 6);% m) R; e; Q! D% t3 b* {9 F( @
  54.         memcpy(&buf[6], stbid, 18);7 S* w+ a# j5 m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  Q" o% v+ }. {  ]
  56.         if (fd  < 0) {
    5 d8 F! G0 T# M( M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);- s  r, V2 F8 H, X, \- {) ]
  58.                 return -1;
    & k4 z2 O1 f( @
  59.         }
    ) \  e& z' s& @- U, f' \; e
  60.         arg.sub_addr_count      = 2;
    ( n9 ~& F3 c6 q0 ^5 _
  61.         arg.data_count          = 0x18;
    5 G: G- s6 M" i% y: r
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    $ [/ n8 k( E, i% M* g' U% W9 y) O
  63.         arg.e2prom_cmd_data     = buf;7 @6 |: L* m5 F' _/ x/ J0 V. f. R% Y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + Y9 i; z, I( F8 S7 p. b$ i) K; D% l
  65.         if (ret != 0) {1 f, b+ A$ a) b1 ^4 t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 W! G2 [7 `9 {* l% Z2 J
  67.                 return -1;" |/ [, f/ g  z( @4 g
  68.         }8 |1 M& n0 d9 W% M
  69. 4 i- k6 A; Y' Q+ z
  70.         return 0;4 g& X4 p3 |' k+ o) r7 o0 m
  71. }9 e% W! c5 g- G% ]! c  g

  72. , ?' W+ k0 g1 @. n
  73. int main()8 I- W+ k5 \8 r6 H" R1 }
  74. {
    * Y' O  G, v1 ]8 w1 O! L
  75.         char c;
    7 C3 `, O) W4 }6 t& k, ^
  76.         int i, macs[6];
      O# o3 f3 c, \! U+ c
  77.         unsigned char mac[6];2 g2 ^( r2 ]4 T' U
  78.         unsigned char stbid[256];
    & X1 ]- V  M: L1 O$ G/ \, C5 J' g4 ]4 _

  79. 2 |9 w: o( h& U: M4 m6 u, \
  80.         if (readparam(mac, stbid) < 0)7 h/ a1 F3 U" ^5 g+ T; z: l
  81.                 return 1;
    0 z( l' J) R, l! r2 [
  82. * E$ c  \4 `, `* H
  83.         printf("Current parameters: \n");0 q9 Y$ }+ j! ~) d
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 Y# J9 ~8 v$ Y! G2 C
  85.         printf("  STBID: %s\n", stbid);
    6 ]7 f3 D" o3 u
  86.         9 J/ R. N8 Y% a- v  E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : s4 B+ E+ u- R2 Z  b
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {# o" Z" |' Y, m7 t1 W# V% r
  89.                 printf("Input MAC error\n");
    / S1 J- u0 i% j, g2 }, n% r: Q
  90.                 return 1;
    $ T0 s5 _( t7 z# ^7 i5 C0 n' I: f
  91.         }
    & q+ R3 q% _" ^8 `9 Z- {4 A
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( z- \* E. u$ K4 E+ Y1 ^7 ~) z
  93.         printf("\nPlease input new STBID: ");
    7 R1 I, J1 F# Y" u! |& u
  94.         scanf("%s", stbid);
    # r1 y1 V4 w+ y: ~7 A% `4 t
  95.         if (strlen(stbid) != 18) {
    : z. w% O; L& ^0 K$ o
  96.                 printf("Invalid stbid\n");
    & X. p% a& ?8 c0 h; q
  97.                 return 1;
    ; k0 Y: I# S- F' P% s6 C3 y
  98.         }1 i$ V( {, u" `' n; H: ^
  99.         printf("\nNew parameters: \n");% W$ Z( K1 |+ p* N% p& z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 u+ f8 Y" Y8 T& O2 T, e# j7 u# B
  101.         printf("  STBID: %s\n", stbid);* |3 V* t" m# q! V# @6 J
  102. + T  C! Y( F# w: Z
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 `& t3 q! ]  t: Y0 [! D6 n
  104.         for (;;) {1 Y, n+ U) O$ H/ _2 j
  105.                 c = getchar();' q7 P7 r0 G$ P- m
  106.                 if (c == 'y' || c == 'Y')
    - I, H' k& L+ J$ ^1 E$ L6 }8 v
  107.                         break;/ ]0 K+ T0 x" z% _3 ]# x
  108.                 if (c == 'n' || c == 'N') {
    * P- d. ]& ]% S) k# t, c9 r4 \
  109.                         printf("\nAborted.\n");# B; J. j3 }9 z4 n4 \
  110.                         return 1;% p; o( u8 P' I; z  u4 Z7 N( w
  111.                 }
    / c( a; W/ y) L8 {0 ]6 C
  112.         }
    + i- ?' O6 z! D+ X6 X" \
  113.         if (writeparam(mac, stbid) == 0)
    7 S, }0 p5 Z2 f( a' G
  114.                 printf("Parameters changed.\n");
    + h& @6 J1 E  C
  115. 4 G; Q) u! L6 ]+ b: U3 N
  116.         return 0;
    2 X6 P6 R, _6 e: @: S- P
  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 ' p+ w6 I0 Y+ Z* l7 t. C" q; _/ ^8 }
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

- G7 {5 x- z3 m% J* Q你用的编译命令行格式是什么?
2 Y0 \/ b% C1 C4 A  U' z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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