查看: 17484|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    5 f" H1 R; y  f6 U! n7 d: o! @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 s8 u7 P# i6 Z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% u, G4 r( G# F- H1 f
usage: himr <address> <value>. sample: himr 0x80040000 0x0
2 Z; t# k  u( ], {. v' N; u7 B/ O3 y+ B# P# o# L
- {% R  c9 A. E+ ^0 i! K
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ u% v, z! e) [% N& Q' [6 i9 E' O3 x$ }3 u  ]
补充内容 (2012-3-8 09:42):5 e0 V8 h& \5 K6 b& H( C1 A
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; T7 _& e1 x$ f3 M: r0 `: {) G这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。, i& L5 U! T5 g1 L6 T! O9 d: ^' R

6 @7 L% f. @. L- ihimr <address> <value>. sample: himr 0x80040000 0x0
% k' v- t5 K- e- \' k' U- x
; h/ I' r3 i8 [+ U例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 I% [  v, b$ V
himr 0x80040000 0x00* @! X, R3 [5 `9 A  R
himr 0x80040001 0x11
0 U9 G) P( }' S6 I+ t' L9 chimr 0x80040002 0x22# V% b; W* P9 z3 v# {; r; G
himr 0x80040003 0x33
6 i- ~3 _  z0 x& B2 b% dhimr 0x80040004 0x44+ P1 J4 v5 M# s. A( x
himr 0x80040005 0x55: D: Z6 ^3 \4 r+ D% p4 H+ z7 I) p
1 p' n' ?' D5 s3 t& |
SN也是类似。8 x' o  h  @2 z5 h4 {

5 B6 X% w: y8 |/ E( v' d2 l现在主要是,谁告诉我们MAC和SN的地址?5 U- L. a5 G/ j  T. V
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 P+ ^+ d/ E$ t5 Z4 B/ j4 G0 o  g5 n一直想找到运程修改MAC和SN的办法,苦于无解啊
7 l; ^" y8 g5 k* f5 |: ]8 |
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# D/ b, O. t% S* H; d) Y# ?' v( j% y# D& r' K
修改的代码早有了。到今天不会编译。
/ f6 w* w" e6 g需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    $ m  N1 O, V: ~# i, _2 b% u" m. s4 {* |
  2. #include <malloc.h>
    ; Z# ]+ M& X( h0 W  d
  3. #include <sys/types.h>" v, @9 o, J& n' x- @5 r
  4. #include <sys/stat.h>+ q( [3 k1 `' r! W  P9 V% v
  5. #include <sys/ioctl.h>
    4 {  P7 x5 {# m1 _# o
  6. #include <stdio.h>
    $ B% U( a, k" J! O
  7. #include <string.h>5 Q8 G# [( M; T: t6 x, F" h/ v

  8. + T3 j, ?: A* A1 [* r- s
  9. typedef struct {; T# l" K+ g8 Z& B- ~
  10.         unsigned int        e2prom_cmd_sub_addr;8 Q, n+ P  y# U6 I8 I9 @4 @: w
  11.         unsigned int        sub_addr_count;6 C5 f4 b6 e0 i5 I& i
  12.         unsigned char*        e2prom_cmd_data;
    8 |1 _# f4 @( D! y
  13.         unsigned int        data_count;7 n" L# ?/ t1 D) A2 A: I
  14. } e2prom_s_cmd;* O- \' ~2 P/ q# \. M1 e

  15. ' ~: ], J! N. E- \
  16. #define E2PROM_CMD_READ 1
    & L7 c4 |7 G: q( [: l3 S7 ^
  17. #define E2PROM_CMD_WRITE 2
    1 S2 G$ X* o- T5 q4 W8 s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( C) A- k9 n; D8 L: D. S
  19. # h2 T7 h7 R) ~; J7 {: V: x
  20. static int readparam(unsigned char *mac, unsigned char *stbid)0 `/ y& h1 d2 l4 B# G/ U! M9 @2 l
  21. {  u& F4 }; X5 R4 _. h
  22.         int fd, ret;
    ; n5 A' k* ^7 O( Q7 C
  23.         e2prom_s_cmd arg;4 A' n, v5 ?- f& p
  24.         unsigned char buf[0x18];. Q/ j- L4 d9 z) w1 G' n# Z' ]# B) c

  25. + ]6 K2 e- A: F, o& p8 ]! x' g- U+ v
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % I  [; @. V* k1 @2 t: C1 Q+ V
  27.         if (fd  < 0) {# |* _% C( f7 S) x  V- c8 J* N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);! i" K1 p  p5 e: C
  29.                 return -1;0 }( Q, S; h8 F2 p- N
  30.         }! R2 m$ ?+ @7 ^; f
  31.         arg.sub_addr_count      = 2;
    4 c( I; X4 w0 s  J0 q1 L, |, D
  32.         arg.data_count          = 0x18;& A$ R, ?: T2 D0 j* ~- U9 U: x
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 Y; y+ z. S* g1 T' b  `- i
  34.         arg.e2prom_cmd_data     = buf;5 m- p( g8 H  `  o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 W" _6 g; i7 j# D* d
  36.         if (ret != 0) {4 F3 L' e( E' ]$ m7 L
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    + F. \, h& T  _! H9 ~
  38.                 return -1;" N$ \' _5 M+ R7 S: n
  39.         }8 A$ l* }) p( X: q* |& D  b* ?
  40.         memcpy(mac, buf, 6);% b# A+ n5 J# s5 s- r) r7 r
  41.         memcpy(stbid, &buf[6], 18);
    4 h& p9 ?: D, }5 X/ @' V- o9 Q
  42.         stbid[18] = '\0';
    8 e* C& Z1 _$ O+ |  q9 y
  43. ' T- X; J$ |- ]/ Y9 h# ^0 R  Z/ C
  44.         return 0;
      j& [$ N3 l' \
  45. }
    ' h( y2 g9 j: ]* G
  46. / V. A8 X' r" @6 C& T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    2 H& l  Q& ~% S  o8 n
  48. {$ r1 K+ A# _# R* D2 P* W
  49.         int fd, ret;
    0 ~+ f0 m* A$ D( J) O0 }& O
  50.         e2prom_s_cmd arg;
      I, l2 ?# w( y( t
  51.         unsigned char buf[0x18];3 [, P& d  k( n8 P: c/ o" h

  52. / t, M% ?& J5 l
  53.         memcpy(buf, mac, 6);9 Z, e+ U6 K; Z1 d: N. \2 c
  54.         memcpy(&buf[6], stbid, 18);' _3 V  h; \5 n4 c" m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% G, a6 F/ G# J- x. o
  56.         if (fd  < 0) {
    6 `8 A# T2 T; }6 k
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 R6 S. @5 t2 b, V; [
  58.                 return -1;6 X! d; v' r- U" }4 I8 u+ e
  59.         }8 r- J7 \$ B. a. ^6 y. u' ]5 j# x
  60.         arg.sub_addr_count      = 2;
    - b4 q' y5 C* q, u# B
  61.         arg.data_count          = 0x18;- N, n3 M: E0 Q5 ?/ T
  62.         arg.e2prom_cmd_sub_addr = 0x290;- M7 v$ R  E; G# Q; V5 T
  63.         arg.e2prom_cmd_data     = buf;
      y2 m7 A! \8 W& k9 }# U
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 X! u8 q5 m& q( J6 W/ N% D' G
  65.         if (ret != 0) {
    5 \+ {8 h3 d% p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 j! e' _! d- B9 e# H* e: Y- E, Q9 s
  67.                 return -1;0 A9 h6 Y7 P5 N) ?4 o
  68.         }
    : F- I& _' K3 F5 m. V/ `" B: O) v

  69. ) g, E3 q. t; M0 H+ h) q2 z
  70.         return 0;
    # d$ Y1 @: A' z- {
  71. }  I* E+ o( @# K6 L0 U9 g

  72. $ O3 f2 T$ C! _5 K9 w; f- K
  73. int main()
    : b, P9 k. t2 b& U% [
  74. {
    . A4 S* h0 w$ L" E, K3 T
  75.         char c;
    % G) h* i4 V7 z9 N( W" u- l
  76.         int i, macs[6];0 h' i6 t# h. G7 `+ X7 q7 Y
  77.         unsigned char mac[6];
    7 {6 f' y" G# X, F: I6 U0 V! f) t" X5 T
  78.         unsigned char stbid[256];8 y  i% ~# O2 ~& E) ?

  79. % U* E$ u: N5 s& l
  80.         if (readparam(mac, stbid) < 0)
    ; e% N( w4 B1 K) ?
  81.                 return 1;, h5 q7 h+ }& [+ X

  82. 9 w) m2 x5 D0 |6 t' i
  83.         printf("Current parameters: \n");* E8 ?2 s4 r$ y5 Z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) |- P  Z  T; n# x* F6 ?2 M
  85.         printf("  STBID: %s\n", stbid);7 N, H) s/ U9 V6 Z1 ~* n7 U% y
  86.         ) U9 T- K7 W9 A4 K: x
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : A# j' \; B% U& k5 j/ x1 O7 j/ ~
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . c& ~6 I0 u; g2 u! W! j. c2 V
  89.                 printf("Input MAC error\n");
    . K. e/ U% v: ?& B7 Y( p3 z
  90.                 return 1;4 p4 d) G6 W( `9 y" r
  91.         }+ O% ~$ z; j5 P
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 A/ I+ g5 ^  x( f, p; m$ Q
  93.         printf("\nPlease input new STBID: ");1 M+ b7 R/ H: J; V7 |
  94.         scanf("%s", stbid);- \+ `$ l4 R3 u8 J
  95.         if (strlen(stbid) != 18) {# g1 B. ^; x/ d
  96.                 printf("Invalid stbid\n");
      k- M  {/ t5 X1 t$ w2 H, H3 b  X
  97.                 return 1;- a. @, _, K' B  s" i* z% e/ c8 Q
  98.         }% ~' A# k, v( s
  99.         printf("\nNew parameters: \n");) s4 N) Y$ c6 G  G/ }" @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, P7 a1 x/ \: V, C
  101.         printf("  STBID: %s\n", stbid);
    ; A' j; y$ t0 r7 i: v

  102. ( S" E2 b; u0 O2 u) h$ k/ N8 _
  103.         printf("\nDo you want to change paramemters? (y/N) ");" B2 {9 d" _. }, r
  104.         for (;;) {9 M' s# B" V2 w
  105.                 c = getchar();
    1 }! C: R: M6 O6 J6 r4 b$ h
  106.                 if (c == 'y' || c == 'Y')* @; g5 r5 ~* B( t- H
  107.                         break;
    & i/ x: I7 j2 S. n
  108.                 if (c == 'n' || c == 'N') {
    . `1 N( M$ F1 w9 @5 a
  109.                         printf("\nAborted.\n");
    6 d5 k' v0 T$ V7 e& k- W
  110.                         return 1;
    0 e; A' c' E4 ]( K& U1 ^6 z% A+ i
  111.                 }
    # E% F- R  E' m: D" M
  112.         }6 R# ~/ J" c; |+ w3 j
  113.         if (writeparam(mac, stbid) == 0)
    ; `+ b, R3 h; ^. H% a( B: a
  114.                 printf("Parameters changed.\n");6 d' R! K! T$ _& v, f
  115. 8 D! H: T; K1 d# m/ t" r9 M4 E9 h! g
  116.         return 0;
    , o7 m! W: a4 n
  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
4 a1 y" j* S, @4 }在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

9 E3 ]* n7 W" X  b* Y* m: W: B  T你用的编译命令行格式是什么?
- [4 t& e5 [8 |# W- 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客服返回顶部