查看: 17789|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; Z* F; n$ _: `, M$ T
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : C/ i: U( i& O8 V% l5 F3 W  s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ E; x$ ^7 J" q4 k! G- S- v" X1 D
usage: himr <address> <value>. sample: himr 0x80040000 0x0
% ]- k& C- e7 `' Y) j! R" D0 T
" g  f, x3 d" w3 m9 {0 ]6 j- Z! q' ]  S9 @0 p' ~, s
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?/ p5 J0 G( J; B4 b) w3 w) P; \6 v
( g  q, M, i1 R  ?
补充内容 (2012-3-8 09:42):$ d) a& h* p# ]6 K' _
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 }. B) h6 U, N; I: U这是修改源代码,可惜我不会编译。
 楼主| 发表于 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% Q8 n' [7 i

3 p6 E; M& F# a" o) Y/ Dhimr <address> <value>. sample: himr 0x80040000 0x0& J; {8 ~2 `2 D; D

6 M3 l1 l7 p2 o9 r例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 n8 H6 t6 H* }himr 0x80040000 0x00; f. ^' k/ E4 }7 e$ B/ i
himr 0x80040001 0x11: X3 ?9 h) Y/ N' m3 y) h
himr 0x80040002 0x22. t+ X. _7 r; O5 m
himr 0x80040003 0x33
2 B% V  y( B0 w" s/ _2 L0 o; R( phimr 0x80040004 0x44
/ f; O2 ^& y1 M2 _1 Mhimr 0x80040005 0x55
$ T# m9 }' ]- ~5 b* Y0 u; {5 |: [5 ^5 \
SN也是类似。
7 {" E, E! n  x9 X% Y" C9 {9 H2 H' R5 `( f5 R5 L  A
现在主要是,谁告诉我们MAC和SN的地址?* |3 Z" F/ x6 f% d# h
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 k$ m; b, j; S, |$ p6 u6 E, I' ]一直想找到运程修改MAC和SN的办法,苦于无解啊

( h- U9 |7 Y  S+ L: Q& p源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
7 k) _$ T' _* ^$ S' t* `' M' ]$ k9 s! O- v8 Y- I5 l  }6 p- w
修改的代码早有了。到今天不会编译。" \+ o2 N" O) o* [/ ?/ N' j% `: j* T
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>9 |" N6 D# N) w; l0 C7 o1 e+ W
  2. #include <malloc.h>
    , t9 u/ u$ P0 T# ^6 a
  3. #include <sys/types.h>
    9 H6 _# H3 e- w+ f- |* e) \
  4. #include <sys/stat.h>
    + Y* u2 X9 N2 K. t
  5. #include <sys/ioctl.h>
    % S9 W  s9 p& v4 |; D
  6. #include <stdio.h>
    4 T/ K" _6 x% y' ~
  7. #include <string.h>" S7 W4 F. @  O2 ]& j+ g' ]( B( T* O1 T

  8. ; U# G: M: E& U  g  S
  9. typedef struct {
    & d" }: O% C* A3 `" d
  10.         unsigned int        e2prom_cmd_sub_addr;. d4 c! B/ W, B: B% [3 G" E! j" v/ D
  11.         unsigned int        sub_addr_count;
    + h% G/ k4 ]& l' j5 @
  12.         unsigned char*        e2prom_cmd_data;/ l: W0 z; m6 I. v( D% Q
  13.         unsigned int        data_count;
    7 }  F; M3 B' Q" v- ]) ]3 y' m
  14. } e2prom_s_cmd;
    : X6 I! t- R, x3 z6 u, M

  15. % q0 p- x5 w! Y+ J% `7 W
  16. #define E2PROM_CMD_READ 16 d; R7 Y! P7 q
  17. #define E2PROM_CMD_WRITE 2
    6 D5 O7 P" N* W$ F' E1 }: w5 T
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    - g9 z4 R6 }4 v6 t

  19. $ j* _- h5 G  ~$ Y  Q9 v
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 T. v1 s  L' S, L
  21. {% y: z  c, `6 ?2 m
  22.         int fd, ret;
    & b* Q: u; U" f. W7 d$ G' X
  23.         e2prom_s_cmd arg;  R, N' u2 ], C8 l9 `9 K
  24.         unsigned char buf[0x18];- Y3 [# _& O4 @
  25. : D) l0 N2 Z+ B' r6 b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);$ F) t- a! w" Y4 W% T4 U- r- W
  27.         if (fd  < 0) {
      y$ a& x( R, @, W# H, Q5 p
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);% u$ v' A0 r* G2 ]$ w
  29.                 return -1;
    8 v7 q; R4 R, T( |! v* m
  30.         }
    9 G4 H+ o4 K/ O5 @2 p
  31.         arg.sub_addr_count      = 2;1 o! Z2 V, Q8 a$ S) [$ f+ j0 b
  32.         arg.data_count          = 0x18;& d: n# J2 i  A' a6 \
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    7 u1 N" P5 \, p, [) X) r
  34.         arg.e2prom_cmd_data     = buf;  c  c% ~$ f. P2 {/ |% k
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. A& _: [$ W$ w+ _# X
  36.         if (ret != 0) {
    % H  a5 }$ c- L
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    + t6 q0 e6 _' d# q0 o
  38.                 return -1;
      h& Y+ n% @* O5 Q$ j$ n
  39.         }
    % d* s6 M6 H* S& v$ B, D  w
  40.         memcpy(mac, buf, 6);
    ' j1 ?7 ]5 E- N
  41.         memcpy(stbid, &buf[6], 18);
    - {3 O0 |6 O/ X' p2 g7 y
  42.         stbid[18] = '\0';9 p$ J5 A( j' I/ R8 y2 T

  43. ; N7 V3 G# A; }. I
  44.         return 0;; Z. T' M% H1 T4 J9 {3 [3 Y' q
  45. }
    2 T+ @- H3 \, g2 x

  46. $ O9 p% e- `3 j: |. n4 q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    % y* E8 b" ~0 S7 D- ~( N  u) f9 c5 t
  48. {, O8 H" h' D4 a3 {  K
  49.         int fd, ret;" b) ?; O- p: C
  50.         e2prom_s_cmd arg;
    5 z1 i5 j# v2 E3 s+ Y8 P0 X
  51.         unsigned char buf[0x18];
    6 q% @2 Z2 E- ~1 v; J  M
  52. - [# d* x& l0 n6 [# w5 h* m
  53.         memcpy(buf, mac, 6);* Q6 Q" I& ^% ^% j
  54.         memcpy(&buf[6], stbid, 18);) a! n1 S) }0 t" Y% e) l# w( B) `( {1 v$ C. S
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( |4 Q& Q( R- n' ]% X2 b
  56.         if (fd  < 0) {
    2 P( S/ ]3 b* ]' X. G7 t7 ]' n. j
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);" R" ~1 F8 B' @4 A" M; U6 P  G
  58.                 return -1;. r8 ~! g3 D# D( h4 N# B# K8 S6 j
  59.         }
    , r8 Z3 O* s9 a/ t+ T
  60.         arg.sub_addr_count      = 2;
    6 u& n4 F. f8 U& P! p& Z
  61.         arg.data_count          = 0x18;% {  A4 L1 D/ J& _  o$ x
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      B- w! L" v# A- x  \
  63.         arg.e2prom_cmd_data     = buf;2 |2 K$ J! z1 b/ B6 b5 o' _6 d
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ( |, X' o1 l  G4 y' N3 u4 b2 C6 n
  65.         if (ret != 0) {
      q% A& w. R" t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    4 w" `4 q$ J3 j! R3 j
  67.                 return -1;" r5 M, R7 H0 O. [5 V3 z, F
  68.         }2 D8 w, S& v: @5 X- @

  69. / G1 i" }" K2 C1 }  B
  70.         return 0;9 |/ `- E1 U4 E2 s  {
  71. }
    - W1 K6 t% F/ t$ n1 x% h8 Y1 {: M
  72. * A. B) n4 J+ b) l+ g
  73. int main()2 ]6 `4 s4 c. H8 ?
  74. {0 T9 A9 w. ^3 K# ~
  75.         char c;
    + ?' F/ w* @1 r. U+ j' X7 v6 a2 X
  76.         int i, macs[6];) L  F/ l+ T( z* _) J
  77.         unsigned char mac[6];
    2 f3 `  {/ ^+ [, i) }  c& s6 R$ B
  78.         unsigned char stbid[256];
    / t  n$ b2 Y& Q3 a* [

  79. - E( B# l: z  w2 ?
  80.         if (readparam(mac, stbid) < 0)
    " ~/ P0 p- x/ Z0 G$ a
  81.                 return 1;
    . z" Z* P+ \6 R6 A
  82. / a4 r9 w0 |3 b, o& ~3 Z
  83.         printf("Current parameters: \n");
    1 R# h2 m* @, n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 ]$ U* W3 X' S8 J$ L# d* s: g
  85.         printf("  STBID: %s\n", stbid);7 g: [0 C9 M/ d' y
  86.        
    # h) P, g9 \2 d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + d7 l, z& ]' v8 h1 h# t% L
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & f. n, @& |9 u8 D8 K" {
  89.                 printf("Input MAC error\n");! D5 g0 W. D. o  U4 c) K. \4 M4 N
  90.                 return 1;0 F7 Q  q# H% }; F; O3 U: V
  91.         }
    4 q( ]& S1 I* ]# z3 j7 i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 p0 B- Q( }" g8 e" ^
  93.         printf("\nPlease input new STBID: ");, }: u9 P/ R* W7 e
  94.         scanf("%s", stbid);+ [8 N9 ~& A- c1 e8 b6 y! Y/ s
  95.         if (strlen(stbid) != 18) {
    : y" ~9 T: q- n* \2 Q
  96.                 printf("Invalid stbid\n");. ^- ^$ z: R9 e' e* c, y  a. q
  97.                 return 1;! Y; E2 u8 Q* R8 s
  98.         }
    1 J0 [/ i- e! t3 S' L
  99.         printf("\nNew parameters: \n");+ Z9 b  G& w- `' c$ Y. r8 X+ v. M
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# `& ^% f8 k' m0 E8 Z; }& W
  101.         printf("  STBID: %s\n", stbid);
      U: Y' z4 T+ Y0 h$ H+ w1 [

  102. + G- K, r: @$ w/ O% @
  103.         printf("\nDo you want to change paramemters? (y/N) ");$ p& T5 ]0 k: Y5 r- W( b3 x
  104.         for (;;) {
    & g2 Q) l3 n/ R" g5 a" P
  105.                 c = getchar();% z; H& Z# @  t6 S% j
  106.                 if (c == 'y' || c == 'Y')
    ! k7 R  }7 U( O0 r& u+ [/ I
  107.                         break;* a% Z' [9 R; \$ l  b4 l% ]* M$ _
  108.                 if (c == 'n' || c == 'N') {
    , ^1 c* I: c+ p) A. h! B( g$ s) _; P/ ]
  109.                         printf("\nAborted.\n");7 t5 O) {5 @: R, B5 c4 m6 @
  110.                         return 1;) n( h& ?$ q( T) l4 Z
  111.                 }
    : [2 A8 G8 f2 T* O7 ^+ P: h
  112.         }
    8 u) @3 g! ]- g1 w  D( ^& }
  113.         if (writeparam(mac, stbid) == 0) 1 d9 v2 \) P( i- P% G' _7 I
  114.                 printf("Parameters changed.\n");. A* Q7 P; o/ v2 K

  115. : ~0 n" s9 V; C" \& O2 S% |
  116.         return 0;
    ! y# B* n( M' j5 P5 P3 K2 `
  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 & s0 a5 V2 ^" j6 h$ G6 x& m  \
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) x4 t0 R% R. v你用的编译命令行格式是什么?
5 S, ^4 b% i+ \( @/ t8 C
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部