查看: 17395|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr3 D. e, Q" h; k0 X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) E# o# C& l7 s' j+ f2 J- @
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 \4 F" G+ M3 z& j1 X8 i6 K
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  u( i0 [' O2 o2 N  d' ~( i) A1 R( ?, ~& _5 s" o
! |4 J: ^5 q9 ]6 G% B9 ?
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, m) ~) F( Z( n
: F4 O; k$ h4 Q0 B! G补充内容 (2012-3-8 09:42):
6 S" ^) D1 q" |+ hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
' q9 Z( i4 ~2 i1 B: W( H这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
* _" U; J# f5 A
( f" K/ p2 s  B% p: N7 |himr <address> <value>. sample: himr 0x80040000 0x02 \3 p) N& O# [; ?. S
+ S2 l. x- B: W/ I& S  A
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  ]$ I# U5 x7 W& Chimr 0x80040000 0x00+ x( }  ?- s0 I# b- ]4 D
himr 0x80040001 0x111 v* k* T  q. q- T0 M+ ]
himr 0x80040002 0x22
8 g4 a$ O/ @% V. r# u- {himr 0x80040003 0x33  S- w: ?% \$ S) H' n1 N8 V
himr 0x80040004 0x44: c/ h* u0 M! o) E$ z3 I
himr 0x80040005 0x55
" x" V& w# L# R/ }6 s) R
: ?( e8 z- h  F0 V. z5 M" j4 ^) }( bSN也是类似。" r, j' C% l8 d9 L; V' h4 e. a

  S/ H4 i) N5 j& S& I1 \  x现在主要是,谁告诉我们MAC和SN的地址?2 q: J  J5 \& |; M. I- \& V
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" m" A3 C3 `; b1 \  I; ~/ _# `2 V1 A一直想找到运程修改MAC和SN的办法,苦于无解啊

/ Q1 W9 x' X9 R2 O/ D. K+ G. K$ c源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
+ `1 y, p1 o4 t  O/ X5 I; z  W% e
& X- U+ U3 G' t. G- G修改的代码早有了。到今天不会编译。0 S. J  }9 O# A# j
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % O: J4 @5 f. k: \; g% e$ q' P; s
  2. #include <malloc.h>3 U1 i( H! c1 z! O' }! U
  3. #include <sys/types.h>6 `+ K4 Q( }& t, _+ Y
  4. #include <sys/stat.h>7 X: C+ _4 R. ~5 S
  5. #include <sys/ioctl.h>$ @5 K8 W) y6 U* j
  6. #include <stdio.h>
    ( B( c8 Y8 V8 V+ o& l% U, r& _: \
  7. #include <string.h>" o( D; Y; G, Q% E( E/ X

  8. : A! h% b3 d6 C) q% Z
  9. typedef struct {- Q& n8 r: @& \, y7 L8 B6 m
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! T0 Q( `9 T+ _6 {, g! Z4 a, ~
  11.         unsigned int        sub_addr_count;
    9 Y8 |3 G" L& F$ A* W) ?2 k9 \
  12.         unsigned char*        e2prom_cmd_data;
    % v; f0 \; ^+ L
  13.         unsigned int        data_count;
    ) U+ @6 z- Z$ p" C/ j
  14. } e2prom_s_cmd;
    8 f6 g3 K) N- L" O
  15. 7 f! P1 T  Z" H, N2 ?0 r0 R" e
  16. #define E2PROM_CMD_READ 14 O& I, w- Y7 w
  17. #define E2PROM_CMD_WRITE 2  ]5 t, F5 ]' u8 B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    + _% V+ p9 t, [' k- U7 W7 R

  19. 9 {( q, X+ e$ K0 E
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
      @# }, @+ F% Q0 M
  21. {
    + F2 B, c4 s# G( D9 E6 u
  22.         int fd, ret;
    2 i) L# B6 N# v8 A% Q
  23.         e2prom_s_cmd arg;6 |; c* c5 D6 m
  24.         unsigned char buf[0x18];
    6 ^3 ?5 m& J& v: ]0 R/ ^

  25. ' u! N; c! P5 n3 r* d+ g
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 ]% r. I7 w( v" ?# d; P+ B
  27.         if (fd  < 0) {6 |7 a3 g9 s) F' a
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& j' D7 y0 z9 Q/ g, ~3 }9 Z
  29.                 return -1;
    7 v% i# F$ G* u" B2 z( y
  30.         }, X5 L  W7 Z& S/ F6 ^  |
  31.         arg.sub_addr_count      = 2;
    9 t! q( a( x0 `* J* e4 g' U
  32.         arg.data_count          = 0x18;
    ! B# L7 @! F% Z7 C
  33.         arg.e2prom_cmd_sub_addr = 0x290;) l: U" Z5 a* g" @7 e
  34.         arg.e2prom_cmd_data     = buf;+ y+ l$ q/ J, g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ; W5 r+ r5 e/ R: v/ ~+ |2 X
  36.         if (ret != 0) {
    3 B  _1 `: }9 p+ i& S; r
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    + b) Y9 i) s+ F/ g6 x, N- i
  38.                 return -1;
    4 R0 H! X; a1 M/ o9 ?
  39.         }6 m' K* D9 b( H  q
  40.         memcpy(mac, buf, 6);
    9 Z0 Q7 q( u  Z) Z% c; ?' m& j
  41.         memcpy(stbid, &buf[6], 18);7 ^3 v# E# w4 [0 m* S& R" f
  42.         stbid[18] = '\0';0 Q6 G  R! Y* k5 s9 p. v

  43. * c& L; G5 q" Z% J# q7 E
  44.         return 0;
    & p5 L: j6 L/ n' d
  45. }9 B. v( ^0 O) `# d7 H4 h4 [
  46. ) h9 s* K. H, K$ M0 ]3 M
  47. static int writeparam(unsigned char *mac, unsigned char *stbid). l- D  S+ V) O
  48. {9 g: [6 d$ X! r) e8 j
  49.         int fd, ret;
    7 q9 t6 e+ g8 E4 h* V! s
  50.         e2prom_s_cmd arg;
    : R5 V" V5 ]' I: y$ z
  51.         unsigned char buf[0x18];3 y" H* G+ r" q% N6 A; {6 I& I  P  s) j

  52. * B6 U. l( B& c6 c6 X( }4 _5 s) U
  53.         memcpy(buf, mac, 6);7 H- f5 y0 O  k. ~/ T
  54.         memcpy(&buf[6], stbid, 18);
    ) i8 I  V. R4 [* e
  55.         fd = open(E2PROM_DEVICE, O_RDWR);9 b3 U. E8 y; i8 A1 l
  56.         if (fd  < 0) {# r; H/ Q9 p, Q. J  H+ h% {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 j! A! C; |& {: n" n5 |9 G* r
  58.                 return -1;* K" S5 R* E; b& _
  59.         }
    7 x8 H9 z& M" q! N- r
  60.         arg.sub_addr_count      = 2;' {: t6 a, v7 C6 k7 l9 ?# P# N1 i, C+ f
  61.         arg.data_count          = 0x18;
    0 H, k0 J$ K/ g6 ]0 l
  62.         arg.e2prom_cmd_sub_addr = 0x290;# U8 O: L& k, w* c$ [$ h
  63.         arg.e2prom_cmd_data     = buf;, L& C, u* O" Y# H* V, b) Y' A3 ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 q4 C0 R: g. T
  65.         if (ret != 0) {* X. d) i' ~7 l. \) L6 g. W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 N" @& c& e7 x: b/ o4 i7 K
  67.                 return -1;
    " ^2 }% V3 `" R
  68.         }
    . G4 [$ F3 a  j$ g  h3 D1 y/ e# c
  69. - [) Z. C# @1 G
  70.         return 0;8 m/ U  D* P* i/ [: R/ _) k  {
  71. }+ a: i& l$ J( }+ ~# a5 H' ~) j
  72. 7 h, ?2 n. [: @, b, H( Q5 q
  73. int main()) P% E# W6 Y' S  s6 K' ~8 D
  74. {
    , b& V7 b3 _/ E4 V( S( P' z
  75.         char c;
    6 ]8 {* p: m+ E+ {; H/ R) S. z
  76.         int i, macs[6];
    ) U  C8 ]  O2 u  X6 E6 a
  77.         unsigned char mac[6];
    8 y. }4 h/ ~" i$ P
  78.         unsigned char stbid[256];2 d6 \- z; A) }" W' h8 Q! M/ V
  79. 6 e% F2 u; q  K1 j1 _6 A) x
  80.         if (readparam(mac, stbid) < 0)# ^$ D( [4 P: D5 h
  81.                 return 1;
    : O& W8 o2 _) y& G# r
  82. ( y0 L/ X! `8 b! B. N4 H
  83.         printf("Current parameters: \n");
    5 K- z: n: N9 `/ E
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( [  I5 N' ?' I+ [
  85.         printf("  STBID: %s\n", stbid);
    5 P/ _& |' i, }7 Y1 z  I* g9 D, G; U
  86.        
      ~# j! S3 e, W+ V
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    3 y8 q1 T4 N0 u0 T2 H: `
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 o4 l- k! W- n% S; _1 S4 m; U
  89.                 printf("Input MAC error\n");  J$ P$ X& @* I, N- a
  90.                 return 1;
    # @6 B& u) l. Q- I; |; D! D4 X
  91.         }
    3 B! n; c4 |4 a( C; l# H7 F" ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( Q8 E( K1 w- P* O! a
  93.         printf("\nPlease input new STBID: ");+ y' @7 ]  G/ z. F
  94.         scanf("%s", stbid);
    * s' ?/ C8 L; U5 I0 G7 s2 A: t, ~2 l6 V
  95.         if (strlen(stbid) != 18) {* H; E  g. Z; M# L8 {. B* z
  96.                 printf("Invalid stbid\n");
    3 Y; K- n# o8 O$ O9 y
  97.                 return 1;$ d+ K4 k$ J, `
  98.         }
    * O1 F6 X! J& N  Q& ^' o
  99.         printf("\nNew parameters: \n");" X+ m( M! |  p/ F% f- d
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 @' {$ l* N7 a( y, P
  101.         printf("  STBID: %s\n", stbid);, ]/ G  G- y# z

  102. 2 J7 O- e4 Q6 q! X' Z% T3 k
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; t2 b8 I/ F. p; l
  104.         for (;;) {
    # G- P$ ~4 e# S# I
  105.                 c = getchar();
    ! y7 S! y6 n* y( P4 ~, V% x" X, D
  106.                 if (c == 'y' || c == 'Y')2 D* k, c; v, q1 M1 e! C) }  Z
  107.                         break;
    - s) `+ j& O7 S3 @+ W
  108.                 if (c == 'n' || c == 'N') {
    3 V# k+ G4 k: @" A3 [  c) R! K! Z
  109.                         printf("\nAborted.\n");2 j2 d) t! [" W' t
  110.                         return 1;" |, v& Q" f3 c5 T) ^
  111.                 }
    + S0 _' t" N) [5 F6 a& }
  112.         }
    ; H" a" }2 u, D( n: f4 r& S& e9 Q
  113.         if (writeparam(mac, stbid) == 0)
    $ }6 M: n: S1 I8 ~! ?8 _4 y( X( F
  114.                 printf("Parameters changed.\n");
    & c7 m0 _" I* z1 m
  115. 9 @; d7 G8 N# L1 v$ M/ H* b
  116.         return 0;6 S' u6 |- I$ k. u2 `5 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
# l% _0 y* r2 I9 L在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ d/ C, D: T. K' @& K
你用的编译命令行格式是什么?* K$ m& N# O% l( {
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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