查看: 16859|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    $ h, o; R, A9 }6 r! A) }7 I
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig. P- t" Y' I" s8 p6 F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! o. Q8 C5 y# e; vusage: himr <address> <value>. sample: himr 0x80040000 0x04 b; j1 Z5 I, j. _3 v, [

3 A0 e, p% m: T
( t# o% L# w# R不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  i! W  l- g8 o# i' B6 F6 \8 T' T, B. ~% f5 i$ r0 N* F
补充内容 (2012-3-8 09:42):
1 m) i) L) D0 i% P& y4 R$ Nhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
' G' H1 y) _6 W/ m! P% r/ R' \% n1 [这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
) t4 G& D# Y4 p, E6 p7 o  Y, b' G9 J) @' @2 h
himr <address> <value>. sample: himr 0x80040000 0x0
9 G% s3 z- h0 c3 K& h: ~  b
1 B; K# f" B( D例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。4 N5 {/ Q0 y3 \5 d) d  V# A
himr 0x80040000 0x00& Z- I& t5 M) E3 Z3 O
himr 0x80040001 0x11' X6 @' O  V  I& j
himr 0x80040002 0x22, L: K, d: ^- i& e
himr 0x80040003 0x33
' r( ], g. {1 u3 V. `5 b; o  `* n5 Xhimr 0x80040004 0x44
* t9 `* `& q( _; d+ L2 }  Phimr 0x80040005 0x55
; L' V$ \# v) H- k5 V2 i8 W# O- t% n# b; b  Y/ @
SN也是类似。
$ O9 \) y) z$ d4 p' X7 x" ]: A2 q& h2 k, f, i9 c; V
现在主要是,谁告诉我们MAC和SN的地址?
$ J9 \3 L: E0 m1 d4 k1 E4 u- [5 ]( E+ v
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
' b$ Z8 V+ Q& \* U* p一直想找到运程修改MAC和SN的办法,苦于无解啊
7 x! o4 Z$ Y$ |2 }2 t4 u% y  E' y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; P3 Y" O  w" ?- B1 r/ s

( t/ g! O$ U3 Q. _) r- ?修改的代码早有了。到今天不会编译。! C' Y7 W4 Z8 P: f4 l& ~3 K4 p3 a0 D
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h># o$ P2 g8 W9 z3 D- ?$ s: \4 f$ W1 V
  2. #include <malloc.h>
    2 ?0 S% R: ~, k8 _: V( D# ]
  3. #include <sys/types.h>
    ) P: u6 \2 Z; u, ?
  4. #include <sys/stat.h>
    ! f, d- e, n* v' X8 V1 c
  5. #include <sys/ioctl.h>$ m2 ?0 M/ |4 y' A! B
  6. #include <stdio.h>
    ( q' _3 B/ O- e9 K( n
  7. #include <string.h>  k8 y& V/ A1 m% o' N0 J

  8. ' u2 _7 [/ z3 `: q
  9. typedef struct {
    7 D, N  [0 p# ^, m& E
  10.         unsigned int        e2prom_cmd_sub_addr;
    ' t" W3 c) b( J1 e3 _1 T% x1 j/ ^
  11.         unsigned int        sub_addr_count;# _. l+ {1 i. C' s: Z$ R
  12.         unsigned char*        e2prom_cmd_data;
    ) s4 t$ C7 y) ~% v$ I2 W; z' |
  13.         unsigned int        data_count;9 O* `# c" _. _2 K! G( M
  14. } e2prom_s_cmd;
    ! e5 `5 a+ r. P
  15.   T$ B/ F; A5 X! D  {3 t7 M0 `% f8 O
  16. #define E2PROM_CMD_READ 1& G9 k  n! n( I' \1 e4 \
  17. #define E2PROM_CMD_WRITE 2. N! }) R$ d' t! [2 Y4 T
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ; d! i4 M2 Z) X2 Y
  19. 4 U  p) L3 |0 @+ I3 E& C/ k9 U/ r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    7 ]; f! Q3 u0 b: ]: E3 l
  21. {! J- c5 q4 Y9 d/ j( J' i
  22.         int fd, ret;
    8 ]& Z! J( L8 c
  23.         e2prom_s_cmd arg;2 r4 {0 ~' g, g4 u4 h4 P
  24.         unsigned char buf[0x18];
    + e" I$ |* T2 v( a0 P

  25. 2 o& L! ~$ a' n$ w% t  p: N5 l
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 Q% N" \* ?: `7 I
  27.         if (fd  < 0) {' n' P" o' g) [* H$ Y7 N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 g5 S. X- X6 C* M
  29.                 return -1;$ f4 W9 q5 X% Z. h9 a& D
  30.         }2 a! L" c7 P" ^. q. A; K
  31.         arg.sub_addr_count      = 2;
    5 }8 a+ h9 _, z* t6 C/ X% d9 Q5 w
  32.         arg.data_count          = 0x18;
    0 d2 S: {) i) m6 S
  33.         arg.e2prom_cmd_sub_addr = 0x290;" [/ F0 ~" z8 N- [
  34.         arg.e2prom_cmd_data     = buf;
    0 p( o7 f4 m" a( F$ q, u2 Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 U) X( N! K7 W/ d, R/ U! q. I
  36.         if (ret != 0) {3 J9 c  x) O' l8 b0 h( k& c
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # d* s# N; u2 _; i5 Z
  38.                 return -1;
    / b, G% Z6 s# Z; z
  39.         }/ ^6 h0 D1 M/ E  S: b
  40.         memcpy(mac, buf, 6);
    ( r( J4 j5 C# o$ v* S
  41.         memcpy(stbid, &buf[6], 18);
    # [- y; `, n+ k
  42.         stbid[18] = '\0';- H) s* {# t' M# N/ q) @& x* c

  43. ; _  d0 t- _/ M# y% ~; t
  44.         return 0;
    $ L( w6 A6 P; U! ~4 G' y
  45. }9 L4 s5 y$ F; p+ X3 H# Y. G
  46. $ z. X2 ~' F  [' a% p5 o
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% Y, E, Q  _& e+ n, B
  48. {1 D% o: D  B2 T- a- @
  49.         int fd, ret;
    4 {2 |: u. i' l' R, ~
  50.         e2prom_s_cmd arg;+ j8 e; h% D0 `& t' o% M$ h8 J3 T
  51.         unsigned char buf[0x18];# w3 [  W/ q& T: ?3 E( ~
  52. / e1 p; X% ?2 I+ P; ~) Z* T$ B6 Q
  53.         memcpy(buf, mac, 6);
    4 s% s* Z" ^6 X7 W5 [% a4 f
  54.         memcpy(&buf[6], stbid, 18);6 x9 V* }/ _  x! {+ x* r, C* e+ y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);7 M1 }8 Y* _5 `, x( E( b
  56.         if (fd  < 0) {
    - n6 O3 {4 y' P0 F: Q6 j( h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 s9 z" e: x3 Q# M
  58.                 return -1;0 \( Q1 U3 g$ w* i0 {# s8 b- {% v0 K
  59.         }
    1 y1 Q- B8 F, T6 m. ^& M2 q, I* `& ~
  60.         arg.sub_addr_count      = 2;
    4 L' x& s$ b7 G- }  ^
  61.         arg.data_count          = 0x18;8 I4 m2 v' |( j, h+ ]* }% B, f
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) }& K7 Z2 O. Q/ \
  63.         arg.e2prom_cmd_data     = buf;$ v- N0 h% Y, j
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 ?4 b2 @* a6 B0 k
  65.         if (ret != 0) {
    " j, O' a% ^5 Q  G& t/ I
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);" ^' a; l5 s' ]$ h! p6 l8 Y1 x
  67.                 return -1;0 j# S" e/ @- E; W
  68.         }
    ( [% r$ K% q! y9 u9 G/ W/ @( m
  69. 8 w& z# K. `) K$ I
  70.         return 0;
    , {" _. a  i0 ^* ?' h6 t" l
  71. }
    , q) ]3 t6 i0 \% g0 N6 S" r
  72. 7 n: K% f' A% O' T$ e
  73. int main()0 e! N( O# [8 Z( u6 ]; p
  74. {, j0 [% X+ T. N. Q+ f; V9 f% z
  75.         char c;% F5 {* n2 z, A8 ?2 G' @
  76.         int i, macs[6];, O% b7 y" j! y
  77.         unsigned char mac[6];  V  o  a7 b- t" b5 Z
  78.         unsigned char stbid[256];
    ) l; x( y: y. _7 u5 k$ y+ C( f
  79. * A6 r7 _. M( q: i0 D# p
  80.         if (readparam(mac, stbid) < 0)
    + R* P2 c  j  e8 ?& w0 ?7 ^
  81.                 return 1;6 C4 ]. r4 A/ {8 |- u
  82.   `& g! w' _5 _  J! d! c
  83.         printf("Current parameters: \n");0 h0 q5 V' C" N1 ?$ L( C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' n- X( P2 e6 G
  85.         printf("  STBID: %s\n", stbid);
    $ h& Y( K+ t& b6 O8 W" f3 ~6 q; K9 W' P
  86.        
    0 Q' _/ O2 g, v1 M" l5 O& I
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. O4 s+ \/ S8 _% L# S9 C+ v- O
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    " t. Q& J, w5 `& l/ Q
  89.                 printf("Input MAC error\n");
    & E" C+ E8 i. D( m/ w* ~" h) ^
  90.                 return 1;4 l) M1 s9 W; e; ^- f4 A
  91.         }4 a, A. j4 y: P2 p% _% P2 q1 n1 K
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 E. Q" h  l8 v" _2 e' x2 y
  93.         printf("\nPlease input new STBID: ");
    4 ~. m% P2 {) B2 d: u0 f
  94.         scanf("%s", stbid);
    6 G$ L3 l/ g2 b3 o
  95.         if (strlen(stbid) != 18) {
    / [. i6 u& T& b: G& p, F
  96.                 printf("Invalid stbid\n");* X* k) t1 N; v7 `
  97.                 return 1;! ^2 U/ l# u) X4 j2 e
  98.         }/ c+ p8 u% |5 s% A7 T" n/ n
  99.         printf("\nNew parameters: \n");
    , W9 f/ R' P3 ~) C9 \0 i/ \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) z: J! ?8 k1 z1 }; @
  101.         printf("  STBID: %s\n", stbid);
    0 V! U) j, `$ c- M
  102. & V. T' w1 l& C; M6 }
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 y2 }6 s7 k7 L3 ]
  104.         for (;;) {
    3 Y6 W% M. x% j0 r- h1 }/ H
  105.                 c = getchar();
    $ D0 d$ L# W* e9 k
  106.                 if (c == 'y' || c == 'Y'): ^6 E2 G& a" P
  107.                         break;4 s$ G( ~  F! D& @
  108.                 if (c == 'n' || c == 'N') {8 H5 o& F, ^2 M" ~' @" }/ B
  109.                         printf("\nAborted.\n");0 ^' m; W$ x/ I- `
  110.                         return 1;
    ; j2 X# Q8 C. \( F! k: H/ U5 S
  111.                 }
    8 A2 u0 h9 r" n. Q) m! q
  112.         }3 p$ `% \- Z* U* w! @; R9 |
  113.         if (writeparam(mac, stbid) == 0) 1 V& `+ p( G, Q
  114.                 printf("Parameters changed.\n");
    0 W* r) G/ ^- g5 }2 b$ W5 d

  115. ; E- R9 l6 s/ m- [% P4 V+ {) I
  116.         return 0;8 G6 o9 U' d, u, |0 T
  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
: y1 A: ?4 }. G在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
& t! {: C; }) F" A0 y5 N
你用的编译命令行格式是什么?
- e3 x- s: f4 R) 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客服返回顶部