查看: 17355|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr8 r  u# P3 C1 I7 Y. _
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig, Y6 C. ]6 U+ X% B2 t) j/ x" E. K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
  G0 R" U* L- d( gusage: himr <address> <value>. sample: himr 0x80040000 0x0  {( y" {9 u# ~! t+ Z) L. f
% S+ c1 R" I0 y% t: c; i4 }, P

* c+ T/ |+ |9 s& m$ v4 A; e( B不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?8 E! c: Y6 X8 E& [
7 c, ^. B* x' X/ `% _/ C/ Z
补充内容 (2012-3-8 09:42):" g0 O" F! P1 q& w1 G/ r  ?* x3 X
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
( K3 ?& y- i& {0 M1 O这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。" ~9 d2 M9 M) E* J, g; Y- R
- ^7 B1 V$ d: M3 f; g, @% K
himr <address> <value>. sample: himr 0x80040000 0x03 c) B7 b+ Q4 ~. k; K

( X) o9 K/ ~6 G  u( d9 g例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% ]+ W3 k& O0 r7 q! K
himr 0x80040000 0x00; H  r) A/ ?. z1 o9 {: D9 }
himr 0x80040001 0x11+ {" v5 O$ G' i$ a
himr 0x80040002 0x22
3 z; _9 x7 o( ~7 u9 Yhimr 0x80040003 0x33
0 h: `' E& w! n+ q/ \& I4 j# Yhimr 0x80040004 0x446 ^  p4 B' {( L. t" W8 z' p+ N
himr 0x80040005 0x55
& O% f" ^# O$ @0 O/ v+ @" O3 X6 v7 V( X3 ~0 t
SN也是类似。* c% ?# }1 r7 Y3 t9 e
; `) K8 I) x! `  {/ J9 e7 k
现在主要是,谁告诉我们MAC和SN的地址?+ W& H# c; R; y* \$ Q# B& @2 o
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
# e* H8 p. Y$ b- A3 C- F一直想找到运程修改MAC和SN的办法,苦于无解啊
# n- D2 P* u1 Q$ n3 z: x* `. q( S
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 8 M; I7 J' x' S# N7 O

* X# l: r1 ?  O" j/ n3 i  m5 c修改的代码早有了。到今天不会编译。
# V5 l7 |" Q& a# x需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    * W6 a' J0 v! S0 u3 v! u3 B
  2. #include <malloc.h>
    5 O8 L1 g/ }1 q' _
  3. #include <sys/types.h>
    . r3 W; D0 |( R
  4. #include <sys/stat.h># S8 s! }- e4 h
  5. #include <sys/ioctl.h>
    ) l/ c: |; T" A! N& M
  6. #include <stdio.h>5 a- O. m( f0 L
  7. #include <string.h>
    : D7 k. G6 h  A! H* ^
  8. ) h  N) f# y/ W( J# s/ V* j
  9. typedef struct {+ Q. k: W6 X8 _+ ?7 [' y0 e
  10.         unsigned int        e2prom_cmd_sub_addr;
    5 R! p- [2 r4 [- {+ M* q3 t' Z
  11.         unsigned int        sub_addr_count;
    ( V1 B9 f; n) h' J5 s
  12.         unsigned char*        e2prom_cmd_data;* R: o( i  K- u3 P" s' x! r) a
  13.         unsigned int        data_count;9 P' u) S0 j2 g2 c& n) J9 d
  14. } e2prom_s_cmd;
    ' U  e3 H. B0 l

  15. ) k" c' ]* o3 n, _
  16. #define E2PROM_CMD_READ 1
    " ?' h* S' Y8 F# e, G% `; h  O3 R7 X
  17. #define E2PROM_CMD_WRITE 29 J2 E) V2 J, L0 A; |" Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 {: Q' s2 O6 d
  19.   Z& g/ i7 U" ?1 T
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 @, Y  b4 C% L: b1 _# U' q+ Z* a
  21. {) F: }% k6 ^, _7 m4 N
  22.         int fd, ret;
    8 P0 F7 p8 S/ F0 Z) N- g: a$ s
  23.         e2prom_s_cmd arg;
    : V% j) H" X( e7 f! c& D4 P
  24.         unsigned char buf[0x18];
    1 [, d4 }0 G8 b/ Y
  25. ! L6 O* f/ g0 a  k
  26.         fd = open(E2PROM_DEVICE, O_RDWR);2 h3 e4 K# {, J- s% T- s
  27.         if (fd  < 0) {
    ; C4 Z+ C( o! V9 t, Y9 z/ g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 v8 ^1 b$ O( [, T0 T
  29.                 return -1;
    ; Q5 N2 l) T9 ?6 M5 e
  30.         }* z, @4 ~* ]4 d9 r7 L8 k
  31.         arg.sub_addr_count      = 2;
      c5 k: L- [6 y+ L! C  T& }
  32.         arg.data_count          = 0x18;. e+ Y2 d* {, |. n" b7 c& g1 N
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , g. Q) a8 S8 |0 O; y
  34.         arg.e2prom_cmd_data     = buf;
    ) O$ q" K0 w" f. B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ M& P: d) I; c) D
  36.         if (ret != 0) {* K6 R6 B2 i+ S# u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);" V+ _5 S: l' B
  38.                 return -1;8 X( h. X' A: K8 r! g" H+ l
  39.         }
    * s( C. M7 Y3 c" o1 w
  40.         memcpy(mac, buf, 6);
    : F$ W7 \" H6 w- _: t6 f% `! e
  41.         memcpy(stbid, &buf[6], 18);
    # T( U; G0 Z" I  |3 g- z( ^! C. Q
  42.         stbid[18] = '\0';
    # [- o" f9 c4 V. i, K0 s

  43. 4 v* A9 M) \2 d' p7 ?2 R
  44.         return 0;
    ' k/ ]( O' C# {/ J  v, A7 }
  45. }
    ) S8 O. D6 f( p  t# j& S* d* I

  46. 4 [/ P2 `, r6 e( G  m  X" n1 v5 x, e
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 }3 k/ P% u! m5 {5 V
  48. {
    $ b& c0 k. _5 [6 N- v* `- b0 \& V
  49.         int fd, ret;. {7 s) h/ `' _0 L0 c7 a
  50.         e2prom_s_cmd arg;
    $ G3 @2 a. [& j' b, w+ K/ r+ V
  51.         unsigned char buf[0x18];
    $ W) c$ d1 J! f6 |% |& d) c2 f  s

  52. ; W$ o- R- H8 _( p7 }/ S% O% a
  53.         memcpy(buf, mac, 6);; E7 c+ d" E5 W! {* x
  54.         memcpy(&buf[6], stbid, 18);7 Q' A" h2 p2 d7 N9 N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);' y/ h! }; L# R5 R
  56.         if (fd  < 0) {9 J  M* d9 J- T, r! g; E
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 G5 k% P. q: c/ D' H/ R
  58.                 return -1;/ L" |- @: K: \. D& x
  59.         }
    ) w# q% w0 b, T# a# [
  60.         arg.sub_addr_count      = 2;
    9 T5 Q7 R; J) ]0 |- ~7 p
  61.         arg.data_count          = 0x18;" a) v& {, e' k7 O7 u
  62.         arg.e2prom_cmd_sub_addr = 0x290;- w0 m& Q  [1 y. Z- m
  63.         arg.e2prom_cmd_data     = buf;
    , z' D6 P) Z; E" c; b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . k+ ?2 ^( x& s1 f3 N3 `
  65.         if (ret != 0) {
    ' N5 s% z: a" a; b* x8 s
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ( C. z0 i% H3 h+ h  F! {+ C3 u; H
  67.                 return -1;( @7 Q- `# y1 H/ c
  68.         }
    - g: j, n- j2 O& u* p

  69. % i" E" l3 }' k4 g
  70.         return 0;
    3 y& x* k3 |+ E, b
  71. }+ m6 ?' n+ E! i0 A$ X5 ^
  72. 5 n$ M* {9 I; o  k- L  x2 I9 R
  73. int main()
    5 D, c6 ^( S5 S" m" D* i% P5 o) B
  74. {/ r' A# _7 H7 a' \; s
  75.         char c;
    - S+ |, ^6 [- d/ @
  76.         int i, macs[6];( ]7 T0 I% U- l# |0 A+ u
  77.         unsigned char mac[6];% V4 T( w" w& v6 m
  78.         unsigned char stbid[256];
    1 k0 V4 R" K0 c, P
  79. ; k2 u9 e3 s" x* `, s  ?* F
  80.         if (readparam(mac, stbid) < 0)
    " R' o$ G2 S  T6 k& Q) l3 H" o, o9 z
  81.                 return 1;9 d. F3 H2 y# U3 U! |+ I) t' a" e

  82. ! H1 g. b$ R' i' e* f9 U. ]" K( L  b
  83.         printf("Current parameters: \n");
    , I2 w2 B0 `  S# l+ b# |
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 y" {: L2 \; o- ^* n$ F9 Y
  85.         printf("  STBID: %s\n", stbid);$ _  P5 f& Z  S" s: V9 ^
  86.         ! C' J+ M& O5 e, s9 p- ^3 y+ ?
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# w) T) {. p; T5 T9 Z  _8 g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    7 x1 ~8 B% J# r4 D6 s7 O9 g# E
  89.                 printf("Input MAC error\n");
    ; l; I$ C  `+ a
  90.                 return 1;
    - e  q3 l7 \/ J
  91.         }
    / r7 W6 T  t0 h& W  C4 Z/ ~
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! R7 D- ~. F- t  E% D, r9 t
  93.         printf("\nPlease input new STBID: ");
    8 X" y' P  V2 B5 N
  94.         scanf("%s", stbid);( {% A5 `: [, O' C9 ^
  95.         if (strlen(stbid) != 18) {
    8 G, Q1 \1 m* t6 A  D0 v% M) X
  96.                 printf("Invalid stbid\n");0 \: @4 g' x7 |* @% G) @
  97.                 return 1;
    . h+ O: m/ @) F+ V. A( z
  98.         }
    # X' a! m' r% N1 `2 i+ Z
  99.         printf("\nNew parameters: \n");- l3 x& |9 G( D; U3 u: D4 |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  Z. E# m# T; t
  101.         printf("  STBID: %s\n", stbid);, N" i" k4 p( e! T

  102. ! y1 }8 U( y& F6 n+ J8 y1 ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 V* J2 b7 u' l! u) E/ S
  104.         for (;;) {4 m: h- ^+ G2 a% G0 w
  105.                 c = getchar();
    3 m! Z) x0 p% P  A! K
  106.                 if (c == 'y' || c == 'Y')9 M% c0 Q8 V& b0 }; L
  107.                         break;- I& i4 q  h" E
  108.                 if (c == 'n' || c == 'N') {5 w: z! A0 ?8 d/ F& U
  109.                         printf("\nAborted.\n");' U$ E& f7 c* o) t
  110.                         return 1;
    % `, |/ t$ c% H4 O/ i  f
  111.                 }
    * ~& D  `6 E2 N7 k( A# a
  112.         }
    " U. x- h# a/ D) D% c% q
  113.         if (writeparam(mac, stbid) == 0) & G* m; G( ], t2 P5 d
  114.                 printf("Parameters changed.\n");
    4 L+ P2 n; Z# U2 R
  115. 4 g9 P* q' ~: a" Y
  116.         return 0;
    4 }" F6 f* K! x, M5 C
  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 $ i+ z1 k* s* Q: \: |
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
! M; Q; e' e; E' r& V6 H, _
你用的编译命令行格式是什么?5 Z6 Z3 [+ x2 D" a$ p, q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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