查看: 16893|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    0 `1 y9 S# i6 n1 @( r
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig0 O6 t  S- t1 e# ~+ q3 O# d
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ r# F8 L; y  H( e/ }2 Musage: himr <address> <value>. sample: himr 0x80040000 0x0
- b, K- B! u7 q. [" r' ]
+ I3 J- b5 J/ ^
8 [3 v7 e7 W, v$ G2 \: f4 S+ [3 |* c/ k* I不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' Y" Q% E9 v8 W+ \9 r6 {8 I7 Y8 E' _: \% p$ H
补充内容 (2012-3-8 09:42):
6 L& C! j1 P! i2 _! c) Thttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; ^+ h' c/ v4 j0 C, Y* w# q这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
1 e$ W# e6 w* M' e$ U) F/ X
, U6 v' i2 }- q* k; e( Fhimr <address> <value>. sample: himr 0x80040000 0x04 z5 w  |4 j0 D, G* {3 q
/ A4 k* G9 |  ]
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& b( O1 i+ ~9 n, K( ~% z- vhimr 0x80040000 0x00/ @6 L" f/ E, T1 |  e( s9 ?
himr 0x80040001 0x11
0 M& H' ^8 k- p7 S: mhimr 0x80040002 0x22
) t3 @. k9 {7 d( Hhimr 0x80040003 0x33
( ^  @" N9 r+ C! Y6 u) t. hhimr 0x80040004 0x44
; l" V, y. l; U$ ^5 f; a$ j& \  Whimr 0x80040005 0x55
& |3 q) n0 S  e6 Z( h5 e4 e* w  }% `" J* J# @! H6 ?
SN也是类似。
! V5 _; s% Q& c
/ D$ e) [, F+ Q3 h3 B# }3 o* Y现在主要是,谁告诉我们MAC和SN的地址?& N. V' o% X8 A2 J5 P+ Q5 H
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ; A2 G; i$ q1 p: y3 x2 a+ L$ H
一直想找到运程修改MAC和SN的办法,苦于无解啊

! B7 ~* \8 u$ n8 ]& u源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
8 t  L  \$ E) h$ j2 u# ~( x5 M7 Y- E
修改的代码早有了。到今天不会编译。
+ w& }+ R' \( ^, C/ k- S需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 H9 {' a. G9 Z# b  r4 c
  2. #include <malloc.h>
    ! |5 h8 P9 |. N% `7 M' b+ @" N
  3. #include <sys/types.h>
    & L5 @/ ?- v% N, j! o/ |
  4. #include <sys/stat.h>" v" M/ ~3 p& \! s
  5. #include <sys/ioctl.h>
    9 ]+ F& H) B$ b, F
  6. #include <stdio.h>
    % Z' l6 a# [5 Y+ m+ q* K, P/ v
  7. #include <string.h>  Z- C2 r  }* b

  8. ; `, t; v3 [! m( x
  9. typedef struct {
    $ U, H2 C  O8 I4 [6 S6 A' s
  10.         unsigned int        e2prom_cmd_sub_addr;) k; A9 O5 O' m$ u9 d
  11.         unsigned int        sub_addr_count;
    $ r4 W/ G  B5 g
  12.         unsigned char*        e2prom_cmd_data;1 F3 c9 k& h9 j0 w
  13.         unsigned int        data_count;
    . L! A3 e3 ?1 d  ~
  14. } e2prom_s_cmd;1 [; q$ G0 Y) K+ a$ n' s

  15. 9 B  u: C$ M8 W2 A( v9 C, h$ J
  16. #define E2PROM_CMD_READ 1
    9 s- `) Z8 N5 F2 r; v
  17. #define E2PROM_CMD_WRITE 2' u2 l5 a& B# O+ u. r
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      L* k3 y3 e. u7 P6 `  C: }

  19. ! U8 V3 U4 f, H8 b7 {2 V6 J; e7 |
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 `4 V* b$ a9 }/ d4 f% @! c9 ~; \% A
  21. {
    : }, z4 K6 S) E8 Q3 H
  22.         int fd, ret;, S# d( x9 ~$ [" n& k1 h4 P
  23.         e2prom_s_cmd arg;. Y, k+ ~. |8 f- e7 k+ i
  24.         unsigned char buf[0x18];4 u; s: ?/ I) J( X/ u8 o7 K( }

  25. ! x! P! N& y! ]0 r9 j6 r  n
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : V/ P* y) T4 }% Q' M( v
  27.         if (fd  < 0) {! i  \3 H. o' H* L* m/ e' g/ ~. |
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 ]% _7 C. }3 p5 Z8 q4 A5 H+ J
  29.                 return -1;  c5 q0 m9 C  _" M
  30.         }
    - g( p, \6 h' Y/ `4 L# e
  31.         arg.sub_addr_count      = 2;9 x% T9 G0 S# j; J  d/ h
  32.         arg.data_count          = 0x18;
    / e% G+ Y3 l% y/ S6 K
  33.         arg.e2prom_cmd_sub_addr = 0x290;  f5 s" s, }3 _3 D) ^
  34.         arg.e2prom_cmd_data     = buf;" f/ c- n5 @' M5 O7 e# a
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 X. F/ E8 |1 ~0 g6 f6 }
  36.         if (ret != 0) {, \, G. @/ }2 O$ m" d/ I  |/ ^
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);. d2 o& G8 ]% w) r5 e- j
  38.                 return -1;& z% C. C; |6 [, @* q' g; ~% O/ g
  39.         }
    7 v0 g, n: [* k$ E9 Z  ^  }
  40.         memcpy(mac, buf, 6);# `& u" A0 o! V8 w4 A4 C
  41.         memcpy(stbid, &buf[6], 18);" x/ M2 v& N" x: i; m6 [
  42.         stbid[18] = '\0';
    1 ~, x+ d4 `$ W+ O  H" m  b

  43. 4 P" d( e  d7 h' n6 {
  44.         return 0;
    6 B! P( ]# Y* ?
  45. }
    9 z) v3 C, @  f) m

  46. ) K" x6 C! S8 X5 n2 j+ Z6 h& H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 S; a" B; O5 `9 J2 `% f
  48. {
    2 i( Y! l" r/ J$ s, L$ b, I" r
  49.         int fd, ret;. y" S6 Z$ P6 J: p7 R0 ~
  50.         e2prom_s_cmd arg;
    # S9 Y  @- o" `1 h2 G8 P* l) R! u4 ]$ o
  51.         unsigned char buf[0x18];
    ; f5 W2 U0 S! K( U. {. y5 ~
  52. 0 e2 p2 E" X  o- g; E, X& k
  53.         memcpy(buf, mac, 6);
    & i1 r) c3 Q# |" ~% i) O
  54.         memcpy(&buf[6], stbid, 18);0 G& n  P: `5 e( v+ p5 X/ g) h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);7 {6 z2 r8 g' z1 m" B
  56.         if (fd  < 0) {/ v" W) c) }; x: k
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      @3 W, A2 C6 g' ^
  58.                 return -1;
    ' P5 U2 i4 I& x
  59.         }
    * h+ y  f3 t" ?' f, G4 [
  60.         arg.sub_addr_count      = 2;( j9 [' X9 f( o. g( L$ C+ |5 @
  61.         arg.data_count          = 0x18;
    % F9 }* A7 h( ^) Q* }& P" m
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    $ Q" G! `9 f2 N0 v$ e7 C% _3 V. s
  63.         arg.e2prom_cmd_data     = buf;/ ~7 I9 K: G* l3 x% }  [' c
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 b  x$ m- M0 ^' \$ e  r
  65.         if (ret != 0) {0 S# ^. ]0 M) W+ V. U- a+ P+ t0 L
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);8 X8 [& O/ Y( l; u) S
  67.                 return -1;$ X" ?! j# s8 U) V  O
  68.         }) ^8 N# X1 V3 k% J  v

  69. # f8 @, e/ s7 ]# L- V0 j
  70.         return 0;! w+ q( f# A3 R: Q3 i
  71. }: f! A2 d' ]3 B
  72. & r) t- l. A/ i- R  L9 w! [) J4 q
  73. int main()
    ( y6 }- f1 ~# J1 h# S7 G
  74. {
    " R: ]" Z, t- F( }+ Y2 R+ W: j& {
  75.         char c;# |5 R3 h8 @/ d& a, n
  76.         int i, macs[6];
    ' X, }6 M& O" |: t& t% @9 ?
  77.         unsigned char mac[6];
    9 E7 |4 u0 B# U1 e- v5 y% Y
  78.         unsigned char stbid[256];
    ! m0 y* S! z* F4 h' R  h6 @: O
  79. # U* H- ~" T6 S/ u7 [, D) N
  80.         if (readparam(mac, stbid) < 0)+ T# X& ~8 {7 A$ d( C
  81.                 return 1;
    8 Q9 D; {: v5 O1 @8 D

  82. & Y: |0 x+ d5 P+ V5 Y0 b5 ]* c* Z. f
  83.         printf("Current parameters: \n");2 D$ o) @* M5 ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) ?6 l9 c# `+ r# d
  85.         printf("  STBID: %s\n", stbid);9 T& k8 i) h: O) U% g/ {$ k" T
  86.        
    1 ~5 G, w$ f% z( K: O6 l7 i; W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    9 G2 I. V4 @7 ?& H9 N
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {( [, }* y: s3 h/ n, s
  89.                 printf("Input MAC error\n");, E# S/ k- n, L
  90.                 return 1;' Y8 N- w' P- k1 p  e4 o! E
  91.         }( Q; W" z" R; |
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' ]8 e: k6 [; }6 ]- }
  93.         printf("\nPlease input new STBID: ");6 R# J: w+ N  L- \
  94.         scanf("%s", stbid);
    % @5 A% Q* k( h4 y0 {1 q2 `+ D6 ]5 @
  95.         if (strlen(stbid) != 18) {8 ?& Y" k# Z6 A3 `; u
  96.                 printf("Invalid stbid\n");
    & S0 V* I( d4 ?& z" h& B
  97.                 return 1;1 N# |2 T" F: [$ P
  98.         }- M/ D/ O2 y! R  i
  99.         printf("\nNew parameters: \n");
    # y" T' `4 g7 d. z) Z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + F; z3 D  D6 k
  101.         printf("  STBID: %s\n", stbid);9 b( T! W1 W0 a4 ?. D: V# K
  102. 1 L* x  y) Y! m5 Q$ Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    + W( p/ [, U! t9 R: e
  104.         for (;;) {
    6 E2 l) h7 j4 Z2 m# J
  105.                 c = getchar();
    ' u( q2 \( h  K: k$ Z4 y, ~# O' Z8 f: [
  106.                 if (c == 'y' || c == 'Y')
    5 J( _5 s' H/ n$ R& G& M
  107.                         break;9 [% r6 q. [8 W# P  z
  108.                 if (c == 'n' || c == 'N') {5 \4 l9 R% w8 N
  109.                         printf("\nAborted.\n");. |3 U2 ]% W' J: s/ J8 a2 ]
  110.                         return 1;8 u! I2 h: ^: ?% @
  111.                 }
    ' A1 r  G; f. K6 [0 K* \
  112.         }9 v# V9 N% {9 R# S  N& U- j
  113.         if (writeparam(mac, stbid) == 0)
    3 R8 j( M5 E- a1 u
  114.                 printf("Parameters changed.\n");, ?2 x% ]( R5 K# }8 c: W* U- G- M1 F

  115. 8 \$ X) E3 ]- I9 j
  116.         return 0;& d9 {/ f6 c( J: ^2 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
6 w) p# H% L$ p* q5 ]! I在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: v- k1 I% N+ d( M8 a你用的编译命令行格式是什么?
- y6 h/ L6 P* C. Y  f5 g% J  {  `
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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