查看: 16208|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% k7 {. h! k  e5 c6 s
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig  J, Q( l$ s5 f8 \. ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; E* E3 ?, k9 w  c
usage: himr <address> <value>. sample: himr 0x80040000 0x0
, `, n+ W7 l0 Z
5 X  K. v5 N2 e# R) O$ q6 h0 X2 _( L; f2 _* _
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?7 H9 ?3 U: ^$ i) a0 ~! e8 a

" l/ A% X4 \! t3 g0 S4 ^补充内容 (2012-3-8 09:42):
$ W( I& Q" S5 e: Q. ^( j5 whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% b4 O* q7 u2 y+ ]) \3 ^1 A& p
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。# K) x$ b+ |. A6 m" q
/ d9 J: ~* P( a. ]$ E3 f" n
himr <address> <value>. sample: himr 0x80040000 0x0
1 @5 X) ^0 S% d) f5 V2 g; p
) e$ J8 g2 l) B" c; K8 A5 Y! H! s. ?例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。4 E7 M! j8 ]+ o* `4 F
himr 0x80040000 0x008 y, k/ u/ o- }
himr 0x80040001 0x11* ^6 E/ x8 ^, R3 ^
himr 0x80040002 0x22  H% u. M- E! p; Z2 O: v) J6 n& F
himr 0x80040003 0x33$ C' b/ `/ P% G) w/ F5 {- H, O, E( I
himr 0x80040004 0x44
' C' ?2 }- E7 n3 Jhimr 0x80040005 0x55
( u9 o& M/ r& M/ ^- Y) T; d" T* A2 W& n
SN也是类似。; [6 O  R7 k7 i- ?5 P

6 g5 T  J! T! L" y. I+ f: I* w  P现在主要是,谁告诉我们MAC和SN的地址?
8 y4 h% C; Q% b) U, p0 T' g( R
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ Q; ]9 E. ~" k一直想找到运程修改MAC和SN的办法,苦于无解啊
2 F! K4 d1 g3 x' W, X" y# }
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
+ i! o! x1 d. I5 [( K1 I9 L) ^4 q- c/ W0 X" G* x
修改的代码早有了。到今天不会编译。
, C, d0 H8 e' t+ \) V4 b需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>& }: G* @. I. I& o4 |
  2. #include <malloc.h>
    & a7 B4 ?  o# v
  3. #include <sys/types.h>0 D8 F  N" L3 D0 [# r
  4. #include <sys/stat.h>. z' w* U2 g. p& g6 @
  5. #include <sys/ioctl.h>7 L) j! {! x- U8 @
  6. #include <stdio.h>
    ; r. t8 ^+ ^) _- |, b' T6 e# ?
  7. #include <string.h>+ u; W' g: q8 r# u4 N( l' g) O

  8. " {0 u: W6 [: N( b) V
  9. typedef struct {5 z/ {% T( e9 }$ {2 k$ W
  10.         unsigned int        e2prom_cmd_sub_addr;
    . f9 \4 D  `! o2 _- A3 y
  11.         unsigned int        sub_addr_count;
    $ t+ c+ A# O. y- w) {4 t* E* n
  12.         unsigned char*        e2prom_cmd_data;* V" r& f0 ^$ S! h( Y. Z5 g
  13.         unsigned int        data_count;
    ; B2 k* M* Q* V6 q% y# B+ {
  14. } e2prom_s_cmd;) Y. \( q3 [* T( w

  15.   l( f8 s" A9 ]% K* ~3 c
  16. #define E2PROM_CMD_READ 1
    ( A- U+ a1 p8 q& z  _% L$ o
  17. #define E2PROM_CMD_WRITE 2
    : q* I! o6 C. h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    5 L0 Q. H& Y5 M2 h& P2 g' T. p
  19. 8 n( D* c( v0 S( W
  20. static int readparam(unsigned char *mac, unsigned char *stbid). b  Z6 R7 {4 }) K6 {2 _! j/ I) Q
  21. {! b( {; l$ D* e: A
  22.         int fd, ret;
    % S1 ~2 q; J; q2 C" Z
  23.         e2prom_s_cmd arg;  K! ^( [8 F, I" ?: k
  24.         unsigned char buf[0x18];
    ; V4 e0 w$ ]& t0 B, n1 K
  25. ) E0 f. ~- w# ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ i9 i$ M' u# z1 [2 B8 Y7 {" c: w% _+ g2 {
  27.         if (fd  < 0) {+ `" v* q& i8 O/ j# Q3 C+ x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( \* ^$ e( V! m; F( U) n+ e' {9 @
  29.                 return -1;: \# ^3 [* k& J2 K# @- d
  30.         }
    + ~  w5 Z1 w: @( [+ X- e4 G  H
  31.         arg.sub_addr_count      = 2;
    ( N8 i4 |9 F% C. I$ E% ?1 j& P9 N" d
  32.         arg.data_count          = 0x18;3 Y& S' R$ T+ i! p8 `7 L+ o3 ]
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) U1 h$ S6 t8 c
  34.         arg.e2prom_cmd_data     = buf;+ ]$ B3 o( L0 Y$ G5 I/ I1 p" o3 ]
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' U* R. A) _& ~/ C& z* p# D/ V
  36.         if (ret != 0) {! s3 j- j% g2 R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; c  R3 k1 J. t  |& B- g
  38.                 return -1;' l; O0 t; S# ~
  39.         }9 V5 @& O) {9 p
  40.         memcpy(mac, buf, 6);
    & c' [% @- K8 B
  41.         memcpy(stbid, &buf[6], 18);7 u3 U( }2 A7 w+ V' Y' `" I
  42.         stbid[18] = '\0';
    6 N0 |' X# X/ V  l3 |4 c( v

  43. ' @: y" J2 W7 {% ?6 M) D
  44.         return 0;
      s5 r3 x! h' ^
  45. }
    % o/ p; l  W- N8 |

  46. 9 K, d: |% I2 z! K& P9 O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) k7 T8 d. ^7 i* P9 t( i0 C4 A
  48. {" U" w$ s. o  y
  49.         int fd, ret;
    ( M4 ]" I- _; }* E4 _6 H) O
  50.         e2prom_s_cmd arg;1 g- E; y: B+ e5 f! T$ u3 `
  51.         unsigned char buf[0x18];
      o# A3 }" J0 k8 R5 x1 P0 H, u
  52. " D2 p' g! ^* ?
  53.         memcpy(buf, mac, 6);5 e+ b0 o: q  z" @' a
  54.         memcpy(&buf[6], stbid, 18);
    + I) n4 m% b6 n5 @2 V/ l
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 b4 j' n3 M0 d* M; t4 q
  56.         if (fd  < 0) {
    3 D5 R# D! m% r- u  A, K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 a6 ~/ d4 G4 k7 @" ~  G
  58.                 return -1;2 L. g+ T3 _% T) V  q3 _$ W! o
  59.         }) ]2 k0 y+ `0 B
  60.         arg.sub_addr_count      = 2;( d4 z! T" W) Z! V% W% B6 T
  61.         arg.data_count          = 0x18;
    ) n4 Q: t6 Z; [1 S% N% \
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    6 m* ]& l0 L! S7 u: N2 i
  63.         arg.e2prom_cmd_data     = buf;
    5 z- S& _$ M2 \* I2 T" n- q4 v+ q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 s( Y- D( i6 j9 V! i) g; [
  65.         if (ret != 0) {" X" P+ r' N  p# G4 Z0 }5 f8 P6 {  p7 @) H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 ?8 Q8 Z/ k# _
  67.                 return -1;
    % H9 Q9 O" f. t  r; X
  68.         }
    6 m5 ?! ^0 U1 U: S6 q3 I* @

  69. * J( l  g& |3 F4 v" j& v1 p1 [
  70.         return 0;- ~5 y2 X' W2 W$ i! ~8 g
  71. }) a# x" l5 X$ a$ X/ ^9 G

  72. ' Y# K, a/ n9 Y4 S: z6 f
  73. int main()
      N2 i# x$ s% c6 s( `
  74. {
    9 N! _  u" v& w/ h& b
  75.         char c;
    ' a& b, V" K4 e6 t. c
  76.         int i, macs[6];
    + M* w/ w6 b8 I0 B; Q! Z; t, S: t
  77.         unsigned char mac[6];
    6 G" p) _2 @  D+ _2 J( T% E  v
  78.         unsigned char stbid[256];; x  O# a) B' ^: h
  79. 1 S% r9 L- D7 A% Q  l5 N7 b4 A/ n
  80.         if (readparam(mac, stbid) < 0). ~  z3 ^4 i+ S0 g4 l) V
  81.                 return 1;! @" |" R: o% V3 _, p+ [- \
  82. # \$ L; w6 H2 U9 e4 Q0 i9 k! r
  83.         printf("Current parameters: \n");7 {6 I0 }9 `+ t* {" c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 d9 D+ h& v1 A" {; x* r
  85.         printf("  STBID: %s\n", stbid);1 J' t+ t0 x4 V# ?6 ^
  86.        
    + [* C* G6 ?8 H% b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - r) j8 F& e' ~5 y2 n
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - B2 ?7 k" ]; J" b
  89.                 printf("Input MAC error\n");
    : ~; H$ c% L3 f/ x1 _0 V+ m1 Y
  90.                 return 1;2 z! {* Y" i. b" Y( C, ]7 K: N
  91.         }
    & ?9 `; k& J$ w9 j$ j( K% A& ]3 p  ^
  92.         for (i=0; i<6; i++)mac[i] = macs[i];; ~& I2 o4 E5 z: F6 o9 c
  93.         printf("\nPlease input new STBID: ");6 g: y0 F6 _7 Q# h: x
  94.         scanf("%s", stbid);, i/ y, z& A# J) a
  95.         if (strlen(stbid) != 18) {( ]0 Q* ~; S) h# o$ z
  96.                 printf("Invalid stbid\n");
    + F) @5 T! {1 X! B' C; Z+ d" c. b, B
  97.                 return 1;
    ( @/ B1 x: K3 S& L5 E7 A4 c
  98.         }
    2 C6 K7 D' W7 }% I% Y
  99.         printf("\nNew parameters: \n");
    - p& O/ z0 ~5 I7 y7 P! }$ v/ e. U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- N4 u9 \, w! m
  101.         printf("  STBID: %s\n", stbid);
      J9 a- K9 @1 c, }4 o' d
  102. 3 Y  [' m' H) j6 W3 j2 \
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 Y) n0 \- Y) U+ c# `( f5 s
  104.         for (;;) {8 M) W  U9 E( u
  105.                 c = getchar();
    % \* Z; ^0 {6 G" s5 S* J8 w
  106.                 if (c == 'y' || c == 'Y')
    3 ~: n& i5 k; H+ q  [
  107.                         break;
    + u& {! k; z; q* N- @
  108.                 if (c == 'n' || c == 'N') {4 `9 z* V: f" V. l1 e! K
  109.                         printf("\nAborted.\n");
    # X0 I' x% _6 X# y# h9 r- d
  110.                         return 1;
    / ?, u4 G: o# M8 D# _
  111.                 }' w  p1 ^* O9 u
  112.         }1 {& F% G9 b, Q/ c  Y. ?6 A. o
  113.         if (writeparam(mac, stbid) == 0) ; |" i) {( P! A; U4 K% q( ^
  114.                 printf("Parameters changed.\n");6 @9 ?! g8 _: P0 }) Q

  115. ( K- B5 L& j" u" `" y$ V
  116.         return 0;4 D4 N" p! Q( T, `$ y  M
  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 ) F. G0 ]1 Z+ [- ~  s4 y5 N, ~7 L7 \
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

% F" l7 k4 j: M$ P你用的编译命令行格式是什么?6 l% s, P" f& J0 u& K2 g
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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