查看: 16872|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    5 k0 E, M/ W  [' B7 l; v
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / L6 n8 [, i' G. A
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ Y8 v9 o0 e6 z7 Ausage: himr <address> <value>. sample: himr 0x80040000 0x0- o* P1 M0 X! n5 Q

; K1 C! y( W9 @# _3 F' f2 F5 J6 B6 m0 U7 |3 A7 \/ h
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 O2 s+ V( H! z$ J9 M2 }

! T0 g* J3 ]# F$ T5 I, k' a补充内容 (2012-3-8 09:42):
- o) C  @0 ^, ~4 Phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数& W  t4 v6 U5 L1 [* W; G
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
( U& ~* U6 v/ {- C" l! s# _$ E% j' \/ S; |+ e
himr <address> <value>. sample: himr 0x80040000 0x0
' N* e) ~+ ^: V" N( ?* S1 Y; t1 ]8 C7 m% V7 {3 D( K! l
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 l7 {, V% ^, A1 Nhimr 0x80040000 0x00
$ s) w/ u8 ]+ F" Fhimr 0x80040001 0x11
& `; g" E# u/ v2 J! N' P. W% Khimr 0x80040002 0x22" [5 ], ~1 f7 k: J( _/ {  y
himr 0x80040003 0x33
) l! ^- j8 G5 U" f. E: q3 ohimr 0x80040004 0x44! ?8 S" M6 J% g+ Z9 M
himr 0x80040005 0x55' u9 A2 A; e+ `: E) R6 E: }: Q

. y3 W. p& T" k+ t* M# nSN也是类似。" |# U: G, D/ J" U/ J- b, Y
. Y, k4 y9 z8 [- n
现在主要是,谁告诉我们MAC和SN的地址?
6 I) D/ o0 D. i1 ^
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : [6 `  M- V+ Z3 F8 O, y+ |
一直想找到运程修改MAC和SN的办法,苦于无解啊
1 n* P- H6 k% a: U
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & h4 S- A# x% `; T

1 ?( ~' [$ {3 T5 ?6 |- O修改的代码早有了。到今天不会编译。
; t: d6 k) h6 V9 F6 U# g需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ! x, x* `% N; Q/ a# B# ^
  2. #include <malloc.h>1 X/ Q( ]$ b0 P5 F" n& a
  3. #include <sys/types.h>
    + ^! V1 B/ A' d$ R& i! d3 W) W  D
  4. #include <sys/stat.h>
    : @# f$ B5 Z$ W2 y/ }+ W! C( @
  5. #include <sys/ioctl.h>7 N. d7 o( a% n0 y
  6. #include <stdio.h>
    ! s: V7 M5 W" d( {9 |- g$ U' y# R
  7. #include <string.h>
    " y$ ?& o$ W/ X& L( k; R/ V4 ?) h
  8. # _8 A* t: \: @9 d4 L
  9. typedef struct {7 @; @6 ^5 Z9 r+ F$ E# U
  10.         unsigned int        e2prom_cmd_sub_addr;
    / w/ n$ O! U- [. t! d5 e
  11.         unsigned int        sub_addr_count;
    5 @/ u; W/ G( K) z
  12.         unsigned char*        e2prom_cmd_data;( X$ u1 K2 r" J. n$ E* b6 [6 c1 d
  13.         unsigned int        data_count;
    % O& }$ E- W3 M8 j6 T- c
  14. } e2prom_s_cmd;
    + j/ O6 f- o' K2 T7 M  Z

  15. , `* P+ R9 B1 b0 c: U$ D
  16. #define E2PROM_CMD_READ 17 d) f6 M0 l! U/ R
  17. #define E2PROM_CMD_WRITE 2. K; C, a  L+ N9 b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* R# e4 P$ l% m+ c- `& q% q. c

  19. " Y* z: n* v1 k/ I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    % l3 z& r. i7 _% S
  21. {2 f% F, ~* _: N; Z7 z+ L/ w
  22.         int fd, ret;
    ( T+ o, r. c7 Z& d! m% q2 x
  23.         e2prom_s_cmd arg;+ L7 a3 }+ N7 Z0 U* _; F# f) f/ Q
  24.         unsigned char buf[0x18];% B; c9 e' W/ K0 P$ A: b3 f( g
  25. , T( R& O( d" q* s0 _2 c  E* q/ T2 l
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 `4 c! b, v& u' w& U
  27.         if (fd  < 0) {1 z4 r. t/ w  o- F
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 {& m' m+ l/ y% y( A8 T! M: Q; b
  29.                 return -1;7 j6 t5 }' w) g  b
  30.         }
    & r2 o( G# \4 d+ w
  31.         arg.sub_addr_count      = 2;
    $ O. B' D& j+ q' C
  32.         arg.data_count          = 0x18;( n. w) `0 R& a  J, M# R6 A
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ; ~7 L' }5 J' \6 D, Q4 t- K) `
  34.         arg.e2prom_cmd_data     = buf;
    * p: Q: c' T* g2 ~: g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 L1 x2 n$ Z5 B( R; n+ V
  36.         if (ret != 0) {) m7 Y. p, l6 \: m% U4 J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( ?6 Z, E5 k/ T, q! g# Y
  38.                 return -1;
    ; [' p! j( }2 Y0 x& G
  39.         }
    8 E+ D' B' K+ h1 Z
  40.         memcpy(mac, buf, 6);9 s& _5 H3 [( G7 v0 k
  41.         memcpy(stbid, &buf[6], 18);
    4 M1 `/ _) k. d! L. F
  42.         stbid[18] = '\0';
    , ]3 A$ V! {; X+ l6 e6 E4 P

  43. 4 k. C& G1 a4 a+ ]+ t6 {- G( E
  44.         return 0;
    : ?1 u% E1 O6 ~8 y0 F
  45. }
    ! y) e7 ]1 m* ?3 m
  46. : X4 F5 j) ^, R# B# N  [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    + e) T5 M2 q. }
  48. {2 U4 a. ?) Q6 o2 L! p
  49.         int fd, ret;: f3 h6 c- ^/ U- W, [6 P' ^8 g
  50.         e2prom_s_cmd arg;
    ; {/ a4 o' h3 A
  51.         unsigned char buf[0x18];
    5 ]$ w) F5 M# ^" _# q
  52. & {: ?+ ?1 k- @5 n# A1 n
  53.         memcpy(buf, mac, 6);0 l1 c5 e) t& P& n
  54.         memcpy(&buf[6], stbid, 18);" [" _8 |# l$ ]% d- |4 Z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);: r' `# R- ^/ _1 }4 ?
  56.         if (fd  < 0) {
    7 A5 Y" w5 \* Q4 ^4 i2 h* X* j
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 v- Y5 t4 e% \- @! [
  58.                 return -1;
    % \4 @9 v0 p) E
  59.         }" z% o' v; k2 b! G2 S) n7 |, n
  60.         arg.sub_addr_count      = 2;
    ! V9 U4 m( J. Z" _) a$ l! L7 |
  61.         arg.data_count          = 0x18;
    5 k& T% z3 o/ ^0 I) o+ f8 {4 o# O) o1 @7 P
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    / x! K; y$ r- u
  63.         arg.e2prom_cmd_data     = buf;. i. o% V- e) W7 g9 J$ L
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + Z+ D; z0 }# p- B
  65.         if (ret != 0) {
      `" U: k, k' e; S1 S: U$ i
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    9 p2 m$ x/ g- \* [- J0 c) Q
  67.                 return -1;5 _( R& m  s& e( |
  68.         }' T& K1 X" j9 ?# ]; \' F7 I; j
  69. ! I$ n$ u, r! h5 S7 C
  70.         return 0;0 k+ ^1 s+ @$ {* V
  71. }
    6 Q7 Z5 c, `9 E0 P

  72. , u  m1 \* ]: G: `( D' H
  73. int main(), E9 M2 c2 `8 J7 ]) ^5 r# g0 v
  74. {
    : y5 y2 m7 _4 x' C( ^' f5 C
  75.         char c;
    9 g$ `3 x$ y/ }( u  o' B7 C) u
  76.         int i, macs[6];
    " M' @' }3 Y: e, f/ R
  77.         unsigned char mac[6];. r* ~# O# R0 s
  78.         unsigned char stbid[256];
    ' m! L0 J3 z+ n6 F

  79. ; d2 S. D$ @2 m  n7 `
  80.         if (readparam(mac, stbid) < 0): E. [/ W$ C7 j) U, K" c& q! `
  81.                 return 1;6 [2 S: S3 Q$ G- C7 m' l

  82. ' }9 i' e+ y) D+ D
  83.         printf("Current parameters: \n");
    ! z; g. X9 w# W- Q% ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % O) ^1 F+ @) W, M; u2 k! v
  85.         printf("  STBID: %s\n", stbid);, n! l5 M$ |" ?+ v# M# R
  86.         6 `9 p. y7 }/ |0 h2 ^; m
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    % C6 V- M7 b" ~7 e6 X
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {: ]8 ?6 M; ]/ W; l; t7 a
  89.                 printf("Input MAC error\n");
    * Z# O" O! a/ [6 p+ ~
  90.                 return 1;6 a' i' W0 d& k7 I; x
  91.         }  L' t7 X! N# l) @2 f
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    $ h$ K# w, c& \% B* \
  93.         printf("\nPlease input new STBID: ");
    ) p2 T2 Y$ {! ?% y7 ^- H
  94.         scanf("%s", stbid);
    ! d7 K) D( q1 S# f
  95.         if (strlen(stbid) != 18) {
    ; k* P9 i" q4 g. P) `9 A9 |
  96.                 printf("Invalid stbid\n");
    , c6 C8 }; R. i* w" V
  97.                 return 1;
    ' w: X6 q' ~- x" _
  98.         }& z/ }$ C* e/ c8 E/ m& N5 |
  99.         printf("\nNew parameters: \n");
    * t# ^' S1 ]" e. B$ Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 J: b2 ^; ~& j/ O3 i+ g# @
  101.         printf("  STBID: %s\n", stbid);' g! I* q4 c2 f! P
  102. * V. ~/ I7 i6 [! \6 q. f: K
  103.         printf("\nDo you want to change paramemters? (y/N) ");# X) _/ O$ P& |: ?$ j
  104.         for (;;) {
    : @" Y7 x- R; Q  |2 d/ s
  105.                 c = getchar();
    / v3 F$ G, d% P+ C
  106.                 if (c == 'y' || c == 'Y')
    6 z' M9 B# ?; q" Y9 |  |: C
  107.                         break;' M+ q* k5 f; U% }" @$ D5 A
  108.                 if (c == 'n' || c == 'N') {, k' L2 Y$ j+ s( J& i
  109.                         printf("\nAborted.\n");
      l, W/ U8 F; W" C1 i% K# i
  110.                         return 1;
    5 w. l2 B! }2 L$ O! Y% y. U
  111.                 }: \+ ^, M5 z+ l3 B' n' X) x
  112.         }) ~4 g5 z8 C& `. ^8 g
  113.         if (writeparam(mac, stbid) == 0) " f& U! B5 F" w7 H2 [
  114.                 printf("Parameters changed.\n");+ }) T" [0 C8 ^6 r# P
  115. , G9 G/ h8 F; G' A* C
  116.         return 0;: ]5 }9 x" w% p0 ?4 u0 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 ) }" e# D7 Q. r' v2 w  S* `
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: {+ N, G" d) @, O9 Y/ q" ~9 |你用的编译命令行格式是什么?
4 R' }' i. f$ Y! R6 C7 d6 d. P: Y' o9 o: ]
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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