查看: 16626|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 R( o; q% m9 F( I7 h  @$ T- L* k. w
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig& @7 E, e/ L# J/ T8 i  s9 @- O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" I# u" O! u0 B" K8 t
usage: himr <address> <value>. sample: himr 0x80040000 0x0( X  b+ ]6 |0 X" R

8 g. d8 C0 B1 U. x# F6 W: I6 _1 a4 |) D3 m$ H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ g8 r) w9 O5 O. D3 L  ?& Y1 D* a+ @( i/ V9 B1 v3 s$ h' `
补充内容 (2012-3-8 09:42):
$ k/ Y4 H1 d; L0 O: qhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ A$ }: K( a* c, b  G) T
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
; u1 L: R$ f9 K; L! f% u
0 B, Q. Y, m9 F; u- f5 o3 A! Hhimr <address> <value>. sample: himr 0x80040000 0x0: k& y; b+ Z- a9 I  S  q
1 E( ^2 ?% s; F4 d+ e9 ?2 H  M
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
) s0 M: X, F0 i1 L& R# A/ w0 O  ahimr 0x80040000 0x00% h7 q, f- r* n8 |2 M7 n5 d( a  G+ d
himr 0x80040001 0x11
/ @# N" n$ u; n5 z6 rhimr 0x80040002 0x22
( o8 W3 V) @3 E; `himr 0x80040003 0x334 z, q* W4 L7 j, g' B
himr 0x80040004 0x44- D, S% e! h/ p/ ^& @& Y2 g
himr 0x80040005 0x55) n$ Q' i% Z/ Q/ ~- _

( P5 V  C, X# \$ \' MSN也是类似。- ], H/ F! C  H2 M

9 x2 L0 Y+ q4 m现在主要是,谁告诉我们MAC和SN的地址?+ a" y4 e1 @9 n$ c
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & g. K! s% n" I3 k* c4 K
一直想找到运程修改MAC和SN的办法,苦于无解啊
( d; \1 j' \' Y6 \* i
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & `- ^6 j9 U) `  z8 ], a
! S- @& w, k( i
修改的代码早有了。到今天不会编译。
4 N5 f" L2 n7 ?( b/ S需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    . {, \0 p4 n4 h4 U
  2. #include <malloc.h>
    & X% Z3 X, D+ `
  3. #include <sys/types.h>* C) @9 A/ L" Q$ z( B& h
  4. #include <sys/stat.h>
    - I# u$ H" O7 R8 R3 f
  5. #include <sys/ioctl.h>% W- |+ U% z. [, h, u! A+ a/ f
  6. #include <stdio.h>
    ( c$ x0 j4 m# H$ D7 Y
  7. #include <string.h>( T. q9 a+ r& S* K

  8. , w' u5 s9 }; |
  9. typedef struct {
    ' t+ n. N) R4 P7 }& u
  10.         unsigned int        e2prom_cmd_sub_addr;
    . P' e; m) X, l
  11.         unsigned int        sub_addr_count;
    $ J8 o; l( T0 f: F. k' J# U* q
  12.         unsigned char*        e2prom_cmd_data;
    , X% p1 x5 N) d, L( K
  13.         unsigned int        data_count;( V* e% k# d& ~0 P' j
  14. } e2prom_s_cmd;1 e) Z5 P" `2 a* S; A5 B8 T  P

  15. 5 }) I$ ?* |. o
  16. #define E2PROM_CMD_READ 1
    % j* }" ]# k% `, e
  17. #define E2PROM_CMD_WRITE 2
    ! T9 X3 N) u  o- G; [7 j" Z! {
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ; t' H5 n3 H/ A% [) [: o  i5 @: v
  19. ! q( d% B( b9 I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    % g) N% C" ]3 `# q; ]* W% T$ b8 ~
  21. {4 F, L$ H( |4 Z, U1 y8 x
  22.         int fd, ret;1 s  _) z. b1 T( t: h
  23.         e2prom_s_cmd arg;) ?% W9 l% l8 f" _' U
  24.         unsigned char buf[0x18];( a. [* [( f* w
  25. 7 b3 X, u* O) X  P( [% i
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
      J3 I$ ~! u0 w5 |6 t0 Y
  27.         if (fd  < 0) {( t2 `% }6 U- [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) W; l5 `6 t) E+ U
  29.                 return -1;
    ! t- m; R3 e: `7 S- V
  30.         }' H, \& e* ]/ D3 o* ]
  31.         arg.sub_addr_count      = 2;0 z$ C0 h# l# z2 A9 a( {7 u* x
  32.         arg.data_count          = 0x18;1 T, S! M, L* L
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 o8 r4 ]4 g# \4 O5 K( V. Z
  34.         arg.e2prom_cmd_data     = buf;
    6 ~, ^. [1 x" E- [8 i7 i( Y% J  f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, h% |7 F8 ^3 \( S( C  V1 G6 ^: n8 A
  36.         if (ret != 0) {
    1 N6 H  m. s! c2 T9 U$ T# @5 H! Q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, W& s6 G) B, t/ S
  38.                 return -1;
    3 F: w& `% P& M' `; l6 V4 y3 ~$ J
  39.         }
    . Z# p/ b+ ]/ m: K
  40.         memcpy(mac, buf, 6);9 F$ `: b& ^8 h) e- d( J4 L
  41.         memcpy(stbid, &buf[6], 18);9 U! f- a& ^- N/ ~1 Y/ D  r9 A
  42.         stbid[18] = '\0';
    9 l" I5 f; {3 i

  43. $ Y* G9 {, }4 f4 u
  44.         return 0;) @" w% G# z5 C4 C! }- D
  45. }& ]9 m7 w; [" C4 N4 ~: A0 x

  46. 1 F. t0 ~+ _9 H( T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - z% d) H  |) }
  48. {
    & R% I. b1 d; V" U% a# W
  49.         int fd, ret;
    : R2 L# _/ h7 ~5 O% J1 Y  d* `
  50.         e2prom_s_cmd arg;' ?7 `$ `5 O( m* }  l
  51.         unsigned char buf[0x18];' j5 s% ^/ A7 F' ?% b1 Y

  52. 2 }# c* E/ c9 p" a8 n
  53.         memcpy(buf, mac, 6);
    + b1 T9 a+ {) n
  54.         memcpy(&buf[6], stbid, 18);1 [# _% H( w6 r, s. N" q# Q; c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ m% t- Y$ E1 J; @, F
  56.         if (fd  < 0) {- p# E. C3 N! r8 L6 ^1 I- ]6 p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + e7 G2 b, L. ]1 y# S! y! |
  58.                 return -1;
    4 ?& r! w' {' u' ]( {% _# k
  59.         }
    8 V: y4 q' `% Y5 E" s
  60.         arg.sub_addr_count      = 2;% C! S0 S5 V3 n; G1 l. }
  61.         arg.data_count          = 0x18;
    ; i  W( ]; S  }' p) j
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 B( Z+ M/ V$ l- I
  63.         arg.e2prom_cmd_data     = buf;4 [- n- e' c+ S2 i% B! ~" Y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 E9 G! [- {* W. ?6 h5 X
  65.         if (ret != 0) {! {! m6 o: s* `7 w/ i
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);  ]- w+ [' c) f- ^
  67.                 return -1;8 u1 ]: s# |# n- Q) s
  68.         }+ P* v9 Z+ L, C0 i5 v# q
  69. ) a$ w8 y9 s+ [2 V
  70.         return 0;
    ) S2 x% S0 X0 U  r4 w: r
  71. }
    8 `( Z& a* P( g( ^

  72. + K0 ^! `+ F  }5 T# w. C
  73. int main()' k( X/ S' Y$ D+ m$ W% X; \4 g- s4 v
  74. {* P6 x, J' z2 E; ^0 Q% ?
  75.         char c;
    - i4 D: J) X/ ^. N8 ^' h
  76.         int i, macs[6];6 N; O& w# D1 o( ^1 D
  77.         unsigned char mac[6];: w2 ]: c5 r5 U' Y" Q8 A
  78.         unsigned char stbid[256];9 M! P2 G9 v) v1 O% ?
  79. 2 B8 G! G, z% K( j7 u. i
  80.         if (readparam(mac, stbid) < 0)
    5 k! C/ Y8 m( r) {0 H! I
  81.                 return 1;! `% q1 r; o$ T# i* z% Y1 J

  82. . c5 C3 q/ S% t5 h$ P. \
  83.         printf("Current parameters: \n");  _9 a6 p2 E) \, s/ ^0 }4 Z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. X( q7 J& w: n/ m
  85.         printf("  STBID: %s\n", stbid);
    4 |2 A  X1 Y* \
  86.        
    . G9 ~- k! N. z+ @) b5 W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    % @( _) X* J- p8 Q, q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 ^" u# f" j# [4 N8 C$ V
  89.                 printf("Input MAC error\n");6 Z- J$ ^% Y4 f2 o+ p* e* B
  90.                 return 1;
      _) F! S, P: B
  91.         }
    ; W* H" G( d/ w- _% v$ N! g
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! D: b. y. O. b( C4 b3 R
  93.         printf("\nPlease input new STBID: ");) s, s; d1 T$ J9 q
  94.         scanf("%s", stbid);$ n6 l6 r1 B/ N' |
  95.         if (strlen(stbid) != 18) {. s9 j7 B# p% @5 M1 E2 x" Q0 {
  96.                 printf("Invalid stbid\n");
    ; B) V' z6 j+ L# V4 Q8 s" Q: E. J( ]
  97.                 return 1;# f  o2 X! _- C+ q; M
  98.         }
      n: _( x' o: n/ {6 |
  99.         printf("\nNew parameters: \n");
    7 e' L, x* p3 p$ \) ~7 @7 N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 `- C- y+ ~# i2 `' y/ _) C
  101.         printf("  STBID: %s\n", stbid);6 v* C& Y% l3 c5 d) _
  102. 4 z0 y2 r/ b& i% }
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 u- n- r: |6 u
  104.         for (;;) {
    7 k3 X/ o' S% t! w2 H+ j
  105.                 c = getchar();
    3 l. ^# t: Q, v$ H$ H: t% o
  106.                 if (c == 'y' || c == 'Y')' H2 l7 c! s# K. C5 X
  107.                         break;  P) J( G/ j9 L# _+ }1 F7 r
  108.                 if (c == 'n' || c == 'N') {: z1 w; ?" E8 f- O
  109.                         printf("\nAborted.\n");
    1 {- E5 j8 f$ h. G$ y% d# i0 U
  110.                         return 1;
    2 R) T2 o- s% D4 K
  111.                 }
    & m9 \$ f0 R$ b3 P. M
  112.         }, X( f  @0 I: R+ r$ k
  113.         if (writeparam(mac, stbid) == 0) + X; g# ?( b8 B9 ?
  114.                 printf("Parameters changed.\n");, d* l% X7 d! k9 t9 T6 F. Y7 j. Q

  115. 4 z- R5 [" G7 T% O
  116.         return 0;0 W5 o; S% L; F0 @1 C6 V, r$ t' L+ r- @
  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
" X8 _( `1 u% F3 r! p, u; O1 g在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
. C* a  ~  P/ ~& h8 r0 i4 a
你用的编译命令行格式是什么?; b5 n2 i$ W  N# {, m
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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