查看: 16671|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr( B% R& ^& O- N: _- N  v0 X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 Z$ k  a$ s' `9 G
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ T; h3 B1 G- e* I% V
usage: himr <address> <value>. sample: himr 0x80040000 0x0
3 A7 Z1 l; M6 |+ J& F. j  l3 S: c2 l/ y; Z
( j. d" j# n( E
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 {' D* r6 M/ q9 b- N
7 L8 ~$ V4 ]% h& ^6 }9 }6 M补充内容 (2012-3-8 09:42):2 E. U( U3 i# ~9 V9 l
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; G9 k) \- r& b& D+ W这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
4 S( ?. Y5 P/ \# O) a
. u* @; d7 D( L* l' Chimr <address> <value>. sample: himr 0x80040000 0x0
  _2 o0 L/ p: q& c1 O
3 G3 M. l2 Z* M例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) {* l0 S/ _0 f5 e( u1 J" b4 m
himr 0x80040000 0x009 l% ~8 q: I( o
himr 0x80040001 0x110 w& _% E# s/ |9 R1 W5 }
himr 0x80040002 0x22
0 h, M. M6 E$ ?5 a% B1 Ahimr 0x80040003 0x33
; o$ B) K6 a- k# d. X0 phimr 0x80040004 0x44
% ?# t# N; x, ?2 F+ phimr 0x80040005 0x55
6 m, @7 F4 G* v5 W: R! C
% |8 N7 c" h( ?/ N/ \) wSN也是类似。% g8 R& ~: q- P( @& V
2 u3 \& E7 U. z7 K
现在主要是,谁告诉我们MAC和SN的地址?
: T! I! w# R! m$ n5 y+ M
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - _0 L/ h( ]2 A" S! S0 E
一直想找到运程修改MAC和SN的办法,苦于无解啊
2 E7 b3 b3 _- Q, Z, I
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% {5 l. r+ w' o1 o5 z* _+ n3 F7 S2 U: H4 h+ L
修改的代码早有了。到今天不会编译。
* |5 w; ]9 B! V1 @. w需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>3 }" }% q& V/ l( F  @
  2. #include <malloc.h>
    9 u  h% O* ?5 B: W
  3. #include <sys/types.h>
    2 G, E' }4 m3 s- B' }. k! f) m
  4. #include <sys/stat.h>
    5 x1 q  B( V4 m
  5. #include <sys/ioctl.h>
    8 Y/ [1 P- R" x! f) ?3 S
  6. #include <stdio.h>  @" P0 i$ Y& a/ P
  7. #include <string.h>
    6 L! s3 Z( K4 i+ _4 ?
  8. ( u( y; F6 M4 O) x& r
  9. typedef struct {7 a: o" k  y; O
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 S2 \" x; F& {; M1 X9 N
  11.         unsigned int        sub_addr_count;
    0 [  U$ `3 [6 k& b
  12.         unsigned char*        e2prom_cmd_data;0 D; I* c; P) \* m
  13.         unsigned int        data_count;; S2 {) b& p9 J6 l, e4 R) Q" P, K
  14. } e2prom_s_cmd;
    ( U, ?) R4 _0 @, }- B# H$ p4 _

  15. 0 X) Z/ {* Q- _9 @+ d
  16. #define E2PROM_CMD_READ 1' A9 w7 v5 r$ G* K
  17. #define E2PROM_CMD_WRITE 2
    + e. V: L- g9 K" ^2 K8 G! ?0 s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"7 P; n3 T# P+ A6 f9 D! h) ~6 y
  19. : T" k, H$ O: u' O# C- h/ F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)4 a! h# H7 g3 v2 t' R! l
  21. {# ^9 S. B6 R0 _. o9 b6 K1 O
  22.         int fd, ret;% [: Y1 G8 S2 ?4 d0 D/ v. F- c; J
  23.         e2prom_s_cmd arg;
    . w* _! v$ ~% v# J$ y$ B$ ?
  24.         unsigned char buf[0x18];
    ! R9 _4 a/ S) f1 Q

  25. 5 {- Y9 v8 y! T# x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 G0 Q; Q9 g3 U# M
  27.         if (fd  < 0) {) `6 Y4 ~' [1 [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 ], n1 X$ Y9 |. G  _/ Z
  29.                 return -1;7 U: u/ i& f  O1 @
  30.         }' C5 r/ G  k; @2 z% x
  31.         arg.sub_addr_count      = 2;
    ! T$ z8 V5 {, F3 k* o& K
  32.         arg.data_count          = 0x18;
    , @6 @9 D# B* [7 X
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 J' r7 P7 }" t$ z8 x
  34.         arg.e2prom_cmd_data     = buf;  s. q: `  p8 u5 n* M8 Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);) K& V9 v; O' q0 Y
  36.         if (ret != 0) {. I2 i2 u; I7 ~0 B) N; Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 C' b  J+ k. D; k/ h
  38.                 return -1;5 W/ _( S0 h- D; E' v
  39.         }5 [- Z4 ^3 V7 L
  40.         memcpy(mac, buf, 6);
    4 u# ]; T6 b3 T- _* d1 a: _- C
  41.         memcpy(stbid, &buf[6], 18);. A5 H2 {4 E8 r. |
  42.         stbid[18] = '\0';$ J$ ?+ {( d0 ]# q

  43. 1 X$ @3 a6 T1 [! E1 W
  44.         return 0;
    6 F7 `$ O( @/ w- k! {0 T3 u: y0 N
  45. }
    7 d9 _, q, c) O1 W
  46. 3 B1 S5 `! Y+ |- [) u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # g4 E& q& V" w# f8 j! L5 [% I
  48. {
    + x; U, h+ C. ?$ T- s! ]: M5 `: E
  49.         int fd, ret;
    $ l9 q$ w' X! y2 w4 z+ h
  50.         e2prom_s_cmd arg;3 J- h# C' W5 q
  51.         unsigned char buf[0x18];
    , a* K) b" |8 ?
  52. 8 ~  v' f- E  E! ~1 M1 `4 o& K
  53.         memcpy(buf, mac, 6);1 D0 [. \+ Z$ ?, L0 x' u: ~
  54.         memcpy(&buf[6], stbid, 18);
    ' N) b- G' b. |! A0 z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% g- z' \) ^: E. r5 U3 l
  56.         if (fd  < 0) {( k4 b2 U8 i4 Q: E8 U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% ?5 f9 y9 a8 ]& s  @0 N% Y/ E
  58.                 return -1;, t- q* ]- _. y1 ?8 r
  59.         }" U% i" C. Y( n' h; U* J4 Q
  60.         arg.sub_addr_count      = 2;  b$ [$ @2 ]2 N3 U# `0 Q' Q
  61.         arg.data_count          = 0x18;+ M. \+ b# \% F0 N, I# x1 ]; d7 ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 _$ X& j3 j' L3 K0 e
  63.         arg.e2prom_cmd_data     = buf;
    8 m! E; z( T8 \1 j" w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);! g; \" B: m8 ^, L+ X8 s
  65.         if (ret != 0) {' q* L6 }$ ~; S' y! {+ ~
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 y% s6 B% l8 b  {) s
  67.                 return -1;( l9 `8 W, r+ b, h
  68.         }* `1 [+ H% W' ^( g9 w; h& Q% v  n
  69. ! |# C  d5 P* J: Z
  70.         return 0;( Y! L7 Z9 `& E( ]3 c# N" u/ _
  71. }, i: U" r/ j% m4 X  B

  72. ) @" I6 L$ `1 X; R* o& H! q' Y
  73. int main()0 k3 f3 ?) _# i5 d
  74. {
    ' B) s2 ]0 m3 A! L
  75.         char c;. K/ L! W. G- u% A
  76.         int i, macs[6];
    : j+ S/ b. J$ }2 @
  77.         unsigned char mac[6];7 l: R) n2 c$ K5 k, }* ^
  78.         unsigned char stbid[256];  G* g, A' p/ ], j
  79. & [, Q* T: u3 y3 ]: {) T, J3 @
  80.         if (readparam(mac, stbid) < 0)4 ^) @# e$ F; m
  81.                 return 1;
    : O  g6 y0 [, u' w

  82. , N" U" H) Q  x
  83.         printf("Current parameters: \n");
    9 ]& \; N8 a: H
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : a6 L( T0 i/ W
  85.         printf("  STBID: %s\n", stbid);- W. R1 ]3 S8 N9 t$ I- A8 u! w
  86.        
    ; s% f2 v6 @( G5 [8 A
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + r6 ^3 S  M5 I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 O2 \& _' Q- w6 ]$ G! P
  89.                 printf("Input MAC error\n");
    9 r1 Y8 Z+ b& I( B" |& R
  90.                 return 1;
    ) B, {* Y9 ~  a* G; V
  91.         }
    " O4 P* e- o/ U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 j- C( ^* L: d8 m; G% v; |
  93.         printf("\nPlease input new STBID: ");
    0 v- g" Y" }) g, @# P' X7 U+ {
  94.         scanf("%s", stbid);
    ; |7 Z3 f6 N: U9 _$ ~
  95.         if (strlen(stbid) != 18) {( G1 X* J0 c' p" S
  96.                 printf("Invalid stbid\n");
    8 s: n) ], g1 ~* V& I5 N
  97.                 return 1;
    1 w; `- k( |: `4 X6 O  V' T9 V* j8 ?
  98.         }. E2 k6 R) u: \& A- _9 ]) A6 N- C
  99.         printf("\nNew parameters: \n");  A# E, g. x, D1 J# q- ]3 {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 B+ i% O8 H# l7 R7 i
  101.         printf("  STBID: %s\n", stbid);5 R6 ?6 r% H. B8 j: ?; O
  102. % f3 g4 B3 w  t6 x- q
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 h; h- ~. t& Z7 r" E( Z0 R
  104.         for (;;) {$ M( \* d+ e8 q2 O7 e6 `+ r& j! T: I! D
  105.                 c = getchar();
    8 n: v3 `& U# }
  106.                 if (c == 'y' || c == 'Y')
    1 ?1 z( c- a) u& a  y
  107.                         break;
    " I2 ^  t  k7 n
  108.                 if (c == 'n' || c == 'N') {
    7 ~. O  t# J% E( A0 V) t
  109.                         printf("\nAborted.\n");
    $ t- o5 V% ?# o' R: e9 p9 a6 _
  110.                         return 1;0 l& H) M6 Q9 `' j% l
  111.                 }* v/ p" W1 {1 F* I, l- e
  112.         }
    + {$ L! X4 ^& u8 ^
  113.         if (writeparam(mac, stbid) == 0)
      E1 n# B; a" _
  114.                 printf("Parameters changed.\n");, j( y0 y1 \  K" L
  115. / J( u0 c7 B6 q2 b
  116.         return 0;( ^6 j+ v) J5 z
  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
+ p8 C  V' K6 J- ?% n9 @1 k+ }/ l在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 L$ ?- \5 @" m1 a
你用的编译命令行格式是什么?
# B" @  U5 _2 p/ v# F! \
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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