查看: 17118|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    - K0 m' F1 _. s: K6 m, C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 G9 r/ m7 A2 X: f
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
0 f5 b. e3 T; p) G) Eusage: himr <address> <value>. sample: himr 0x80040000 0x0
$ a  V7 H- t# m, ~3 j
) p5 B- v. [; H& g0 S$ Y9 ~# |8 x9 b$ U7 N' z* \+ J) t- J
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?1 n' Z4 Q( E. I; `- b/ s
1 r) n$ g; M" T
补充内容 (2012-3-8 09:42):
; k) y7 @7 G, m) Q* y0 b( ^, ~http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
# V6 A  x( j: I) E& {# `8 x3 ^这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。0 i( y; n& w" g  l! U
: S  F% K2 W! D# X+ U& Y' A
himr <address> <value>. sample: himr 0x80040000 0x00 d# u- B+ T" D1 W

8 Q0 D& W, H. d6 L例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 a8 v. X/ a. n3 o' J( t, y5 `+ h# y
himr 0x80040000 0x00- |6 }- f) m5 ~: A* D/ ~  I" y' Z
himr 0x80040001 0x11. ]6 p, L# X# n- l* X: I
himr 0x80040002 0x226 S+ {; v5 n" `; O0 V& ^' R6 D" E6 ^3 S
himr 0x80040003 0x33; l* n% K( X: X; p: w; a4 n
himr 0x80040004 0x44
0 S4 R" Z6 y% `  B0 r0 ~/ jhimr 0x80040005 0x55( O7 e. {& ~3 `2 s5 U, l: r9 U8 W

" h! H5 h7 w( x2 Z( b! BSN也是类似。, K8 I2 r" `# ]# k

3 o2 j; t; j# ~* Y- \1 z. P7 y' M3 c现在主要是,谁告诉我们MAC和SN的地址?
& Z( `' W- s" m1 r
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( g- a7 c0 o4 G一直想找到运程修改MAC和SN的办法,苦于无解啊

( x; Z& B! I' S源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   d$ m4 r7 m8 E: R  i
4 S; Y- ]" o3 b9 ]" o4 R8 {
修改的代码早有了。到今天不会编译。: e1 I5 K& ?$ {; v+ [5 _8 M
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  Z$ j2 U$ _! D7 o+ G
  2. #include <malloc.h>
    + ]3 @" _' e' U
  3. #include <sys/types.h>
    . K1 O, G4 `: Q9 O6 g+ U( \' E
  4. #include <sys/stat.h>
    # l/ \, d6 L: h7 o1 T+ [( T6 y/ f
  5. #include <sys/ioctl.h>- N( }8 l' W2 F7 q. D1 H4 m& s/ _
  6. #include <stdio.h>
    ' E( g' R6 k& T3 Z3 V
  7. #include <string.h>% X) I, q# o9 M: I! T

  8. 5 B0 a4 l( R% Q9 ~0 \
  9. typedef struct {
    ) k6 b# K9 Q' i- @2 \/ ^
  10.         unsigned int        e2prom_cmd_sub_addr;
    $ ~: y0 m6 T5 D( _" b, o7 g
  11.         unsigned int        sub_addr_count;, {7 M/ l$ C% N, M( N3 X
  12.         unsigned char*        e2prom_cmd_data;) D( e& w8 P% s: `
  13.         unsigned int        data_count;
      {7 R* }2 u. d8 P
  14. } e2prom_s_cmd;% j( H5 s$ E1 r* z. u/ r5 a
  15. 1 g* v5 j! V6 q8 ^+ |/ q
  16. #define E2PROM_CMD_READ 1
    & L) J5 P1 |5 [! w% m
  17. #define E2PROM_CMD_WRITE 2
    $ s, m2 N& ?- j4 M
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % w2 {" ^3 Q# U3 w2 j/ O4 V- z
  19. - Y: \8 G6 b' V  t" D, u' f* {2 Y) o/ Q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 b8 E4 i5 M7 Y; e: o+ F
  21. {
    " a* m! }: f3 h1 d8 ]
  22.         int fd, ret;
    # v" Q* N  A1 e! f; H
  23.         e2prom_s_cmd arg;7 |2 G2 i. M. h; w* h/ d
  24.         unsigned char buf[0x18];
    : Z0 s3 P. Q# s

  25. 6 L: ]$ i) `% x2 ?# W; C( o
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " {7 [$ U+ b: ?& e
  27.         if (fd  < 0) {
    - t3 i' u/ q2 _" m3 Y% L3 d1 \7 X6 [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 M' g5 r0 e; z3 q- a) `
  29.                 return -1;9 ^  w* p5 r9 d- ^
  30.         }
    4 F3 l0 g6 A  N  L4 w' i* N
  31.         arg.sub_addr_count      = 2;
    2 H0 ^5 p1 P( v
  32.         arg.data_count          = 0x18;" ~8 Q2 |! N6 |: J  O
  33.         arg.e2prom_cmd_sub_addr = 0x290;' P; t: y' O& G6 I5 {0 K. l; m
  34.         arg.e2prom_cmd_data     = buf;
    ( @. [! @- Y4 Z# J" e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ( G1 C2 Y5 Q* H# E
  36.         if (ret != 0) {6 h. I- t$ W0 W' R+ W9 `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  z& b5 U  }( |
  38.                 return -1;
    0 @7 |3 N% ~4 l$ _- h% W  O
  39.         }
    1 O0 U+ A9 g/ a: U* U, [, P
  40.         memcpy(mac, buf, 6);
    / G& a: y- j6 f1 j
  41.         memcpy(stbid, &buf[6], 18);3 O% R2 o  b2 `( o* D; L
  42.         stbid[18] = '\0';( n# F2 n- G" T3 i) }) j

  43. 4 A: P( w" {  A; r# p
  44.         return 0;
    1 z, [' G7 [" U# b
  45. }0 d1 J" \$ E0 x& }7 {9 m9 `

  46. 6 }  |4 o3 M+ {9 L
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    0 J3 b* V7 b# Q; b$ b9 l
  48. {
    1 X1 {  v, ?7 W- b
  49.         int fd, ret;
    ) y! b1 b7 G2 M2 G( U
  50.         e2prom_s_cmd arg;5 {* {/ d0 z. a
  51.         unsigned char buf[0x18];
    7 C1 n" z! G! U# Y! F; D( Z

  52. $ X& g9 ^- t! b4 t5 H7 r( _' Y
  53.         memcpy(buf, mac, 6);( h5 r0 f0 k) o0 F* H' t- K
  54.         memcpy(&buf[6], stbid, 18);
    " [3 p6 @( @. C& R% o
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& l6 ~1 `0 |! {+ Z( i
  56.         if (fd  < 0) {
    : V+ r9 @5 V" @( O- c
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 P, `' o% x4 |! E( b! I
  58.                 return -1;! S$ d, `/ F7 d2 u2 V# z% y0 w
  59.         }
    $ l- A. y8 j6 d1 ^+ @( u  d& D1 q
  60.         arg.sub_addr_count      = 2;
    0 r# \# @* q4 h! g- x
  61.         arg.data_count          = 0x18;
    ' D* R1 @3 ~* b
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 x7 F2 @+ b5 M
  63.         arg.e2prom_cmd_data     = buf;
    / F9 `$ Q% Q( t0 M, k/ I
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - f) k7 N, }/ ^+ u+ s9 g8 p
  65.         if (ret != 0) {
    8 u- _2 y& E  r- P) U
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 m  ]5 ^' A" j  m2 G$ J' l
  67.                 return -1;" i$ d3 Q4 e3 d0 }3 [; ^6 e2 `
  68.         }* f) ]( L9 a/ J, ?1 j! p
  69. ! u, T2 r: F( _! \+ N6 N; a
  70.         return 0;
    ' z, ]5 Q: K/ }2 t, H& n3 x9 ~
  71. }/ O* b- E' A" i8 \3 M) c
  72. " y5 Q$ n  Q+ {2 K; V0 f; q, V
  73. int main()
    7 k* G* t7 k. m
  74. {9 w& f* n/ K( T) c& h+ N/ U
  75.         char c;
    0 q  q1 I  D8 P2 K0 J
  76.         int i, macs[6];, j8 }6 e! J$ j/ t0 w! Z6 i
  77.         unsigned char mac[6];  g9 F& h- [( e4 f" G0 b
  78.         unsigned char stbid[256];
    0 r8 ^. ~8 z" g* Y
  79. 9 f5 V: \6 W# M" b% A! ~
  80.         if (readparam(mac, stbid) < 0)* `$ `. A+ v5 a1 a
  81.                 return 1;
    . q# r' D5 ?2 ^2 \- ^4 x9 f) z
  82. + y' g! @: C4 g3 A
  83.         printf("Current parameters: \n");" G- o. ^# i. B# [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . k& i# z) v- M
  85.         printf("  STBID: %s\n", stbid);
    , G$ g7 A3 w% `+ G5 k
  86.         1 s" ^# v0 F% ^1 L4 d1 L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ y+ q0 |& n0 o5 X  S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {2 j7 g8 {4 v: s1 \) T
  89.                 printf("Input MAC error\n");
    $ t$ x+ Y. k) `# b" J1 I$ c. h  |" ?
  90.                 return 1;; {- [5 V3 b& |
  91.         }; `  i7 W3 ^5 d* P0 s  M0 Q6 @8 H
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & r' f7 d5 e1 D+ R9 n9 M
  93.         printf("\nPlease input new STBID: ");) q+ o  I' l; U6 O" L0 Q# G
  94.         scanf("%s", stbid);
    + G! z% o( g, B, n
  95.         if (strlen(stbid) != 18) {- g# D* g- K1 |# I& D7 A' u: ]
  96.                 printf("Invalid stbid\n");
    7 R' \1 _0 Q/ d- J% V6 n
  97.                 return 1;
    ( _+ J) D4 f' [& w9 @
  98.         }; j7 P+ o+ {& b* |, E$ H* F
  99.         printf("\nNew parameters: \n");( m+ J# L5 T; |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 U6 E7 x" [  V" k  w9 ~# \
  101.         printf("  STBID: %s\n", stbid);+ O' G3 g: ?7 J9 L7 t1 f

  102. 8 Y0 u4 c3 K# ]- {! o! ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 F( e# \. v! m+ r) ~
  104.         for (;;) {
    5 `8 N& ?+ Z$ @" f+ p" W) a6 V
  105.                 c = getchar();
    5 y; T% Z$ q3 q  @/ S
  106.                 if (c == 'y' || c == 'Y')
    + M5 {7 {, H( m
  107.                         break;' x2 \( I/ t) J8 G: w
  108.                 if (c == 'n' || c == 'N') {
    + R- o0 d3 W4 X
  109.                         printf("\nAborted.\n");0 T5 T% U8 H" q6 H8 O
  110.                         return 1;/ J. a' t) b+ ]0 L4 g% u
  111.                 }
    ; ]! p1 R! ~6 c- {5 v
  112.         }
    4 _! v; s" o( m# S2 ~# i: c) A/ H1 y+ I
  113.         if (writeparam(mac, stbid) == 0) " r. u; ^2 r; J
  114.                 printf("Parameters changed.\n");) c/ r# y$ s6 b$ H

  115. 9 ]9 {+ H8 y9 U8 \' {
  116.         return 0;
    - @$ n8 U; f1 u8 }( @- X8 E, B
  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 : Z: j) [/ T2 B' o5 X: W0 S: X2 R
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
: R+ ?0 ]: Y  u- I: |+ p$ w1 k
你用的编译命令行格式是什么?
& i+ W% t+ V( k* O6 u8 N
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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