查看: 17464|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr( b6 V) A* z, ^( i$ c% b! E3 ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : O' K6 F; ?; i
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:# {; ]3 _, ^( V! V" `% S8 o; n: L
usage: himr <address> <value>. sample: himr 0x80040000 0x0# {7 ?  N0 {% R3 {$ f2 g  M% p
; z! _7 p% W% ?" `9 X# F8 n

: a  L9 d5 y3 X1 j0 N& c9 ]& y不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# a; C! c9 g/ @% F* u. u. ^- f, Y2 J$ [- b9 U6 V4 Q( g
补充内容 (2012-3-8 09:42):/ C3 X& H1 _6 m
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. z  \' N) U2 H# k这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
+ q: \* V& |: k; L1 |
1 i$ |- o8 R! p( q, O8 E  thimr <address> <value>. sample: himr 0x80040000 0x0# t' S8 J" _+ d1 L+ z- g; i

; o4 S0 B) x3 X6 ]! A( Y例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, B& ~% M+ m2 U3 n
himr 0x80040000 0x00
2 S* L# _: U+ Z6 c& Hhimr 0x80040001 0x11  @3 o' V: ^9 S" V
himr 0x80040002 0x22
( V) @/ L' B/ p2 M' @% ehimr 0x80040003 0x33
+ O+ Y2 ]. _5 d4 u. yhimr 0x80040004 0x44
9 t8 m2 o3 g* Q- O, Chimr 0x80040005 0x55
4 s- a( E' w( E( ]4 Z4 I0 X% a0 N$ C
SN也是类似。
9 U" [9 j  l, I& E
' x" _* Q' s3 y8 I现在主要是,谁告诉我们MAC和SN的地址?$ E% [) E6 {) h+ x3 F, T
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : @1 B# M, x0 E2 R* t# t
一直想找到运程修改MAC和SN的办法,苦于无解啊

: H) k6 q& _. _" z8 A* A& S; p源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 $ i$ }! }' ?- N* k
' w6 c- D+ m4 W% q/ H* p! l
修改的代码早有了。到今天不会编译。
' a3 R5 ~+ G) a2 ~需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 z& ]6 c5 Y# r) u2 N
  2. #include <malloc.h>1 ^+ ]( `- [' F3 k4 o8 d  W
  3. #include <sys/types.h>
    5 e- B$ O6 S' U) z  _- F5 j6 a
  4. #include <sys/stat.h>
    5 w5 g: C. i' [* U7 {! Q: q6 q
  5. #include <sys/ioctl.h>
    0 s" g' M$ k; C- [  X9 ]
  6. #include <stdio.h>1 K4 F5 w/ u3 ^0 \; Q
  7. #include <string.h>. v, y1 n" O# B; z
  8. 0 B+ L) Q2 Y. e
  9. typedef struct {9 _- _$ A6 Y$ B) g: O3 F& c0 K
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) z& `/ B+ p$ k8 k4 {
  11.         unsigned int        sub_addr_count;  t1 a5 W8 `2 C  ]. [9 S, M) I
  12.         unsigned char*        e2prom_cmd_data;
    9 o" c$ y1 j, s6 d" N; F' t
  13.         unsigned int        data_count;$ B, s& @8 w! b" X6 _# v
  14. } e2prom_s_cmd;
    0 l5 g8 P; y7 i( Q( C
  15. 7 o  R8 c/ ]& q/ ]5 T/ A
  16. #define E2PROM_CMD_READ 1
    . b" n4 n% H7 J& |0 ^# J& V; W
  17. #define E2PROM_CMD_WRITE 2/ q: u! {% y9 K" u7 F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    # a* G0 V3 k% I2 T; u: H

  19. 6 J& x: R/ d9 _/ z, t+ ~
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 q1 b  B# X! b4 J) h4 R. X
  21. {8 a9 O+ Q, M0 [, a& I- E! ]
  22.         int fd, ret;
    4 w  S% c2 W$ `
  23.         e2prom_s_cmd arg;1 c. M) _9 Q- z' B; L
  24.         unsigned char buf[0x18];6 V" C/ A: q* s: c0 \/ v5 u/ B

  25. , s9 Z. f( F. P
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 m# e/ o& ~$ S7 Y- d( W
  27.         if (fd  < 0) {' T: T# l$ U6 \/ o4 j
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. |+ ]7 o: E3 o2 Y2 I- p/ L
  29.                 return -1;
    5 v* H" @# S, t  }% m1 j+ a( \& x
  30.         }, {0 |6 x/ O, [/ |4 l
  31.         arg.sub_addr_count      = 2;
    ' P+ y( G, C; |+ h2 |4 L
  32.         arg.data_count          = 0x18;% _) D% v+ h$ N: }% C' P
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    6 i' r% O9 Q" _" r4 F3 b$ h  k
  34.         arg.e2prom_cmd_data     = buf;) J$ @$ ?  B4 n( Y; j! r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* r3 W+ M  _, t
  36.         if (ret != 0) {
    7 u  o$ \+ f( B8 M* _3 b1 \2 {
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);) Z! _! y8 `" }/ d
  38.                 return -1;
    2 G3 V+ h! V, w# G- Y) A
  39.         }
    3 V6 Z  k5 L4 a; o: R* C
  40.         memcpy(mac, buf, 6);
    : @! {. _7 T# _. w! }% y1 _! T
  41.         memcpy(stbid, &buf[6], 18);
    " f( Q8 g( i2 f, x- @
  42.         stbid[18] = '\0';
    - ^  @' M% a% k' p
  43. 2 P. j# _2 W6 _0 }/ u3 a1 [" g1 i
  44.         return 0;/ _. _6 {: A& c6 v2 O+ i
  45. }9 E: k- k7 ^, T3 x+ w  V

  46. - t. \5 ~2 M4 z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! b- v6 G8 S9 f$ o9 N9 a: c
  48. {6 t5 I) ?- V/ [5 l0 ]& V
  49.         int fd, ret;
    ) o' o1 t/ O+ |/ O; D
  50.         e2prom_s_cmd arg;
    8 D$ V, C) c$ t* S4 A
  51.         unsigned char buf[0x18];
    & n' Y$ Y4 q" C! l4 k2 ?3 M! o
  52. ( g% b; ^. W/ \9 N4 M, V: ?2 i  B9 y
  53.         memcpy(buf, mac, 6);1 E, V8 g* N( u+ m, o' ~/ B! z
  54.         memcpy(&buf[6], stbid, 18);
    1 @/ V/ J  s# h: o
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 F0 k5 h7 M! y! ^+ K- g; L; G0 ]
  56.         if (fd  < 0) {# Q/ ~& s) S% A$ J( ^+ w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: y! X; w1 P' z0 A7 I
  58.                 return -1;( p% p7 p( J  y# R  L1 e
  59.         }9 f8 x) G( u! a, X; N
  60.         arg.sub_addr_count      = 2;7 c  G6 ~5 D& {$ O) }+ r. t
  61.         arg.data_count          = 0x18;+ p( `8 s1 G) `
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 E% m0 \) s1 A
  63.         arg.e2prom_cmd_data     = buf;8 c% o% P/ G, M
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    & @; }# h8 ?* A# K2 n
  65.         if (ret != 0) {
    " g. f2 a1 ?1 w2 A- [+ t: @
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( h8 o  c/ E3 q
  67.                 return -1;2 B! s$ o$ a& ~1 U
  68.         }" t$ l5 l/ D2 \) h( R% S5 y# s' j7 v
  69. , f, N$ B7 S4 k3 i6 P4 t
  70.         return 0;8 n0 Q# _7 e8 y0 K- g% Z$ p
  71. }2 ?" d; e1 F" w) @
  72. $ S: d. d; o2 ?( l/ p3 l) |4 o
  73. int main()
    0 o% r7 Y4 Z" i4 I6 Y3 V3 V0 F  a
  74. {
    9 e" [* E4 i( z" b
  75.         char c;
    ; w' {8 k0 t. U- L
  76.         int i, macs[6];' W1 J  l) K" x. p# u9 q
  77.         unsigned char mac[6];
    ; ]; z; y. S! E+ f4 j  l. w. [
  78.         unsigned char stbid[256];; N/ `" }. f. f5 ^

  79. " s5 |3 e. o' v$ Q1 h6 Q7 ]1 `" t
  80.         if (readparam(mac, stbid) < 0)4 ^8 E% A7 a4 ?% L. [
  81.                 return 1;
    ' y* I4 x! a: w4 X1 j  I$ p

  82. " h. l+ f5 y8 z
  83.         printf("Current parameters: \n");$ F. Z6 F7 Y, U4 R  U' `+ K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 c1 d% p( r' a: H/ f* q. k
  85.         printf("  STBID: %s\n", stbid);
    ( ~" p5 w7 @3 e
  86.           P4 s& \5 e1 Z7 k# F# B/ Y" g8 L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 _' h- ]  b. |& _/ a& \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 i7 T3 r* O+ m" C
  89.                 printf("Input MAC error\n");
    4 e  q( e; m' X' r
  90.                 return 1;8 L1 n1 k1 N3 l: \
  91.         }3 Z$ ^, a  w2 R. p
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! ]& F3 F, Y. `. L+ t6 L" @9 q
  93.         printf("\nPlease input new STBID: ");
    3 w+ Z  m( \9 v  E+ ]
  94.         scanf("%s", stbid);
    . H$ c: Q- z7 o, g8 D
  95.         if (strlen(stbid) != 18) {
    ' z. v+ Q# F! \- ]2 U
  96.                 printf("Invalid stbid\n");
    & C" i4 V* B+ k4 b) @/ U9 ?
  97.                 return 1;
    1 r( U0 I9 f% A7 j0 w7 s4 _
  98.         }
    1 [9 N( b3 b- G: A  Z: L
  99.         printf("\nNew parameters: \n");7 V; ~) h" C1 {4 U. Y8 d9 i. g
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + ]- e" |! Q7 q. j0 b* B
  101.         printf("  STBID: %s\n", stbid);7 H; r7 ^+ I' l' ~: t5 s+ V6 I
  102. / b8 X$ ~. u5 r7 j
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ L, o- A" f# J6 K
  104.         for (;;) {
    : p5 X1 Y4 F7 D! U
  105.                 c = getchar();
    , S" \, n* |' G" A! z
  106.                 if (c == 'y' || c == 'Y')
    2 c8 \9 v) E% d3 D# J
  107.                         break;
    2 p9 @' m1 j, `& b. N
  108.                 if (c == 'n' || c == 'N') {
    & p, J) B% `- X9 t  H
  109.                         printf("\nAborted.\n");( ?3 t' ~5 M/ f' p, d0 V  ?
  110.                         return 1;& T. J' }! L) s# o0 U
  111.                 }( |6 ?5 g' d- M+ T, d$ q) A7 y- W1 D
  112.         }" }4 a6 i- a/ Q* w3 ?; @
  113.         if (writeparam(mac, stbid) == 0)
    + p1 d) o5 D6 m6 y: l  O5 f4 P! B. J
  114.                 printf("Parameters changed.\n");
    9 I1 Z0 ~& f( X
  115. , K* |7 M: g" ^+ s% D
  116.         return 0;/ Z0 ?' Q! D; 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 - u" \8 u! b* m% E, J
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( @, p: g+ H$ D& m# Y' h5 y你用的编译命令行格式是什么?, d$ {! e, R! O: z1 F9 j
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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