找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15294|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : f3 i7 U; X1 G, e& f) i
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig& z5 |  J6 ]# |+ Z. r3 _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
. x: M3 z: J: Dusage: himr <address> <value>. sample: himr 0x80040000 0x0
- y! w' G" U! G! l9 Q. }! ~5 j: n$ l; U! y/ F

" |# `5 L+ a6 f0 T* F  N不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. j: H. q) G% |+ G* V

" e% P. ]) o( I$ b  g; ]$ y& c  H补充内容 (2012-3-8 09:42):2 w( C+ q* f7 u0 k
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! a6 z: u% g9 w* f; x/ t. @4 B6 k这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。2 d% b0 y6 B$ j8 h

4 M+ I' V3 v- S9 `& Khimr <address> <value>. sample: himr 0x80040000 0x03 i4 `8 T9 d1 E0 A

4 b$ j. G( Z# b  p+ Z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。- a3 h) N" E! ]
himr 0x80040000 0x00
/ h6 ~6 T6 m: C  h9 Thimr 0x80040001 0x11
$ E8 z! G/ B% t, Zhimr 0x80040002 0x22
' W9 a2 i6 o) ]! X4 nhimr 0x80040003 0x33
/ m& I. T$ N- u5 x- Z& v. Z. nhimr 0x80040004 0x44
- L3 Z. g; e6 I; O- h! M/ _* Ahimr 0x80040005 0x55, Y- h# _% ]: q8 b
; _% M" X2 U, u0 }
SN也是类似。- C. ~3 D. V7 y! }

" B6 ]$ {" z; G) l现在主要是,谁告诉我们MAC和SN的地址?
5 g9 Y, F2 k. i9 C: x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! `, h) `; t5 H8 d/ t3 E一直想找到运程修改MAC和SN的办法,苦于无解啊

  U+ m2 _" s4 `! X1 p6 W  F源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& b. }1 U+ e# W( i- @
2 i8 w$ R9 c! \9 X9 S1 w修改的代码早有了。到今天不会编译。8 `) j& \4 x$ n
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 D7 _2 N$ @1 U) y7 \
  2. #include <malloc.h>8 a3 s$ _$ o/ V" w  i- b
  3. #include <sys/types.h>
    5 l$ h+ @; M4 P+ |4 H6 E9 w
  4. #include <sys/stat.h>
    1 V: F/ d8 @; A- D: ?) K  t/ W7 R
  5. #include <sys/ioctl.h>
    , b" i: x& Q8 u5 a' ~+ V/ h7 j
  6. #include <stdio.h>6 x2 B$ p, S8 n
  7. #include <string.h>
    " ]" Y% K: P. i3 p1 t$ R0 f
  8. . D2 C8 U7 w' l: K" R
  9. typedef struct {1 W5 o9 A4 a/ R; n1 {6 {
  10.         unsigned int        e2prom_cmd_sub_addr;
    # ]2 I2 [5 f3 Q! V5 T- Q
  11.         unsigned int        sub_addr_count;# ~- v8 B% w6 H, _9 |
  12.         unsigned char*        e2prom_cmd_data;' R5 }, k+ T" t( H
  13.         unsigned int        data_count;
    2 G9 R/ c! G8 X
  14. } e2prom_s_cmd;+ ^5 r  A% D  J; C
  15. # c+ V: t( X. g
  16. #define E2PROM_CMD_READ 1) @6 U! L6 s# K9 H+ P
  17. #define E2PROM_CMD_WRITE 2
    ) `( c3 f7 R* k& n, E8 g$ v6 l4 Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / L: |: ~* G. i, j- P4 F

  19. + ?1 q5 {; F; F5 q$ e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)3 T0 \2 I8 P' f7 i# C+ B. Q. s
  21. {
    & Y  f) Y" i" z9 B
  22.         int fd, ret;
    * c3 F/ Z! o# L! i' i1 r
  23.         e2prom_s_cmd arg;$ `: u5 p. h& Z+ y' |9 e1 \0 {5 x; y
  24.         unsigned char buf[0x18];% V! v( G! Q- h7 n  D2 c9 A1 z
  25.   }5 D/ x' L4 b+ ]( b( z$ c4 b/ b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 [4 U. F, F2 O: u5 y0 @2 y7 J
  27.         if (fd  < 0) {
    / R" J5 k/ Z4 ~6 |' V
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 @6 W; a4 M4 f; W$ @' a# u. d
  29.                 return -1;+ c4 e5 g7 D8 N; h$ g% D
  30.         }8 B: [# t' m7 q
  31.         arg.sub_addr_count      = 2;2 U0 h+ B6 s% V: O, L* \( f5 h
  32.         arg.data_count          = 0x18;: l" E- |4 G5 y9 s# Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 o0 h/ Y. _2 W& S, U. x
  34.         arg.e2prom_cmd_data     = buf;
    , J7 {3 a* F) K* E0 `% q( ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);/ H0 [/ Z1 o1 `1 b- g
  36.         if (ret != 0) {5 B2 b) q$ M( l1 p7 b
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # B$ f5 w; E, n# w7 ]
  38.                 return -1;( q4 p& M# d9 i0 T& [' O
  39.         }. R4 J* E+ p0 d; C5 F  L5 ~: Y
  40.         memcpy(mac, buf, 6);
    " o! p# F% M* V, t; q
  41.         memcpy(stbid, &buf[6], 18);
    0 ~4 t% I  [$ C& C8 ]
  42.         stbid[18] = '\0';
    1 M. q% w( F7 g% c) G3 g# f2 T

  43. 5 H. G# }$ H* c
  44.         return 0;
    - w7 I' e& A# |) A9 [
  45. }
    0 E! z# s. d+ w* q

  46. . `& w" u$ h0 N6 K2 q0 E
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 Z4 W, u: ]: ]  Q
  48. {9 n* C+ K/ d& `  g8 b, X/ c
  49.         int fd, ret;* _* ]8 e# m3 n- W. S
  50.         e2prom_s_cmd arg;) L: j+ O$ ]) u& c' G
  51.         unsigned char buf[0x18];: p0 p0 F5 d+ x5 p

  52. % P( A! t& N  w0 J2 {
  53.         memcpy(buf, mac, 6);
    ; ?0 B' n. k  \
  54.         memcpy(&buf[6], stbid, 18);
    4 y+ ^' N' ~4 r: H4 g" [- `
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; ~0 `! d" O+ u; B5 _: U! B
  56.         if (fd  < 0) {( p; T% t4 ^9 M, T& `
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 ~7 L, A/ N3 c7 f
  58.                 return -1;
    ) X' y6 f" U% z1 F+ l  `' s  k3 B" x, N
  59.         }) S+ [8 r& G4 i
  60.         arg.sub_addr_count      = 2;
    ( k7 L& P& P9 s
  61.         arg.data_count          = 0x18;: J" G8 z. w' t2 z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 i' e+ o& Y8 U* `/ V7 f* C
  63.         arg.e2prom_cmd_data     = buf;9 U/ ]$ h3 c- R5 M
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- I3 i6 X, v) F2 V: d) Z0 H$ @( K
  65.         if (ret != 0) {& G# J- K4 N5 A: E8 o6 p. @% |2 c9 X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 t3 f# V, y% M7 w6 M$ D
  67.                 return -1;! F% `4 |! _7 c! v9 v! }
  68.         }  ]3 Y! l' D+ r* }3 u- {

  69. $ |9 o& l0 e6 ^7 K+ u
  70.         return 0;
    9 E7 O' V2 q3 _4 P
  71. }
    $ Q1 ?" {& ^! I- k. a

  72. 4 N  ?5 m$ L7 i
  73. int main()1 V5 p# R$ s3 A3 X/ i2 o
  74. {. r7 D7 X) o( l; `- s& G( ~
  75.         char c;, q/ `+ O- p; e9 e( T( x
  76.         int i, macs[6];9 `- P& J/ B9 D( c( G8 S
  77.         unsigned char mac[6];
    % ?* E& |. W" z4 r  H( u
  78.         unsigned char stbid[256];3 ^& B6 M# z7 K' U/ U4 V1 [4 H$ G3 P
  79. " N: \' ^2 E6 }7 s% |
  80.         if (readparam(mac, stbid) < 0)0 `1 W) k0 H, ^: r
  81.                 return 1;
    / D' _/ H4 S* p+ O: v' Y
  82. : d  `7 ^8 q, K5 v- }* A
  83.         printf("Current parameters: \n");5 O/ `" m, f; t. d$ h
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 h/ c  }/ b: b4 S1 |0 w3 }
  85.         printf("  STBID: %s\n", stbid);
    % k! O6 k4 Z) v1 w
  86.         5 W+ |& ?8 f# d3 t: s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! s4 K4 ~5 k/ q2 J: j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {, H; ~% Q9 r$ l& H
  89.                 printf("Input MAC error\n");6 K: l- q/ V; m. h1 u- a1 o. _4 C
  90.                 return 1;
    ( Q8 c4 ~# |# A9 v: B7 I
  91.         }
    " m" G+ b, i/ z, r7 @5 C
  92.         for (i=0; i<6; i++)mac[i] = macs[i];; W; P9 ]8 y. @
  93.         printf("\nPlease input new STBID: ");. |$ C! Q: P8 j+ ~+ P( T: w( w
  94.         scanf("%s", stbid);+ o2 }9 H5 I) ~$ C+ _- N
  95.         if (strlen(stbid) != 18) {! U$ A; ?$ a( m( n, ^. F
  96.                 printf("Invalid stbid\n");
    0 l3 B5 w8 `6 b! }
  97.                 return 1;% p+ x2 h! |/ S5 p2 l0 c1 D* U+ U. t
  98.         }
    ' A9 }$ J( ~; w* S
  99.         printf("\nNew parameters: \n");
    ! E2 g0 z% D8 l! U# L: a! @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # n4 `9 v  d% X% G0 \9 _2 n
  101.         printf("  STBID: %s\n", stbid);
    2 H6 ~% M8 K/ Y5 K! x4 `6 t
  102. 1 V2 O" H6 S/ Q/ ?
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ) `) v1 S* w: o3 h8 ~- P
  104.         for (;;) {5 P: U( U& j' t  n- P
  105.                 c = getchar();
    9 r8 i3 Q2 h" X' n
  106.                 if (c == 'y' || c == 'Y')
    & h) T: c) Q, x, }% o4 d
  107.                         break;
    / J$ s' h/ q* J
  108.                 if (c == 'n' || c == 'N') {
    2 P; P9 ^. w) Y2 S4 a. M6 t6 N+ q
  109.                         printf("\nAborted.\n");
    " i! @! S* M6 _# E8 ~0 s9 e" F8 h
  110.                         return 1;
    . t" ~6 p* n6 q1 v
  111.                 }; m- c1 Y- c, l, Q$ H
  112.         }
    % [7 [( p; ^5 P% Y+ n8 Z
  113.         if (writeparam(mac, stbid) == 0) 7 {* E; A0 L/ J8 i0 V
  114.                 printf("Parameters changed.\n");
    ; U* {8 x5 ~/ ]* z- _& v' o
  115. ; c3 P- I6 ?6 e" x
  116.         return 0;
    . y8 l( i9 O8 R6 B" k# _
  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
1 i" j4 k% D: n& K4 o: z在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
* z4 T6 B8 s7 ?8 ]
你用的编译命令行格式是什么?8 M( `  m0 j* K
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-18 00:55 , Processed in 0.023734 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表