查看: 16120|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr+ F2 P0 J5 {6 W. ?6 P
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . [: }+ M8 H* k  o
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:& T/ w: a3 D* ]# |. L! @
usage: himr <address> <value>. sample: himr 0x80040000 0x0% h/ R5 D3 i' L1 A" g* w& M
: x: L/ p5 f6 R- O
2 c: A% M6 J9 _( ]9 Q2 D0 H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' z+ `! d- d3 e! ^
9 R+ u& e3 s/ n补充内容 (2012-3-8 09:42):
! J9 m4 S( \& A& y& P) y! i4 l/ Zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数; T  }; a" R7 ^' w6 \# Q5 L
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 X  h# g4 |& F8 E$ r, n
6 F2 ~, G2 |! u! |( d7 ohimr <address> <value>. sample: himr 0x80040000 0x0+ {/ Y5 Q9 r0 k+ |

7 U$ w( q! _. f例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# y" ]  O( `- t# `
himr 0x80040000 0x00+ k6 }+ J* B5 c1 d; {# G
himr 0x80040001 0x11
, d1 _6 [0 {- c1 r/ Z; ^himr 0x80040002 0x22. `) S/ R7 c, {1 U5 X" J
himr 0x80040003 0x33
& _- `5 G* s7 |) I) f& Rhimr 0x80040004 0x44  y' O, M. h' l- d" s1 |3 x
himr 0x80040005 0x55
$ W8 U6 P% O- u
. i4 j3 F9 e; F; YSN也是类似。; M& L; g# l5 r2 s" I, \

$ A0 L2 l+ @! F* f0 W现在主要是,谁告诉我们MAC和SN的地址?
$ R8 X7 @( }) B1 m. H2 T, O, a$ R' f
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / g5 ?# I* o& [$ `
一直想找到运程修改MAC和SN的办法,苦于无解啊

2 I+ }+ q! E6 o- @) C& h2 j源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
. `1 J- G8 p# e9 ]  t
# ~. K2 @) p. W修改的代码早有了。到今天不会编译。
7 Y5 d* l2 x9 v3 |1 p, {需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ h& A: G+ W$ [/ v0 }0 B# y! b
  2. #include <malloc.h>
    . `6 V$ B' J0 ?- Z7 T" E
  3. #include <sys/types.h>
    ! }+ s5 `8 A. t8 a" v4 I
  4. #include <sys/stat.h>
    % G0 k( p/ m& ^/ |9 N
  5. #include <sys/ioctl.h>
    * _7 F/ p3 w* W: r
  6. #include <stdio.h>: Y: Q1 E2 x% [- f8 \% M3 i3 \
  7. #include <string.h>5 q) k# t) `! u. K. B

  8. 8 r. `& ]" r* y! `, r* Z
  9. typedef struct {3 ^0 C! j: Q/ w! ^2 W: ~
  10.         unsigned int        e2prom_cmd_sub_addr;/ o, H9 Z3 X9 d# G5 l2 ?( W
  11.         unsigned int        sub_addr_count;0 U! a, }: ^& J1 j$ Y
  12.         unsigned char*        e2prom_cmd_data;0 s$ ]3 C' f' L" d0 P
  13.         unsigned int        data_count;# S: J5 ]% @/ `
  14. } e2prom_s_cmd;( o/ `1 C+ r. q/ V& s6 U( v
  15. , T9 e2 t) f0 m6 R7 M0 e7 E
  16. #define E2PROM_CMD_READ 1
    8 B+ V7 V! h) B9 a  d* I* E
  17. #define E2PROM_CMD_WRITE 2" P9 H" o' b7 b/ [2 \
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    4 i8 e5 _2 `( L( @- O
  19. 7 o* g2 B# X# P& C7 |7 c9 f
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ g# \% E, y: H
  21. {! J* g6 Z# n4 c8 C7 d) [
  22.         int fd, ret;5 `$ r  I4 Q# e6 F& _) C
  23.         e2prom_s_cmd arg;
    ; @- f/ [2 A5 u- }/ C4 F$ U" A
  24.         unsigned char buf[0x18];% w: L9 }, B& b* r. \- s
  25. 1 c/ }- H! V& B; j! d  x$ r
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! A% j  G" Z" N) P. E0 C- q
  27.         if (fd  < 0) {
    4 S# D0 @6 J3 E1 o. c- M) c  n: L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 c/ C) B" K* z" D4 g2 y- G: J
  29.                 return -1;5 _% Z: E- g2 J; N9 K' ~9 I8 \
  30.         }
    8 g1 H9 s7 \% ^" _
  31.         arg.sub_addr_count      = 2;
    5 j2 D5 D2 ^/ ?1 h1 U) T
  32.         arg.data_count          = 0x18;
    - M" ~2 ?5 Q. F$ w' v
  33.         arg.e2prom_cmd_sub_addr = 0x290;  y" Y' \* [2 X7 c
  34.         arg.e2prom_cmd_data     = buf;
    & @$ R* A6 A5 L* v3 K7 u% q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 E7 P1 d# ]" j% ]1 Y1 y8 I4 }
  36.         if (ret != 0) {8 l' A% l( B& O% u& I
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 H" }  z+ q0 Y, Y7 D7 \1 Q4 B
  38.                 return -1;
    ; E# ^3 a8 v& T, T
  39.         }
    / I" B' l7 e  i0 O/ Z8 O
  40.         memcpy(mac, buf, 6);0 x& q, c# J7 R) D3 Z- F5 P* k. J+ N
  41.         memcpy(stbid, &buf[6], 18);
    5 V: E# w0 t& c" {1 k  {5 E1 _* r, c
  42.         stbid[18] = '\0';
    - C+ O5 ~% k! j
  43. 2 n: k; x: T3 K/ e. k( _" [2 O
  44.         return 0;
      x' B  {( d5 t  Q/ `8 d
  45. }
    ; z2 F3 s* u, [6 K* |

  46. ( e+ {) A' A0 H6 Q: x8 \
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    5 ~9 o7 u8 U; i3 x; R# C9 s
  48. {
    * ]5 ?& }5 N% V4 h7 |# l4 i+ z
  49.         int fd, ret;, F# U% U, Q9 X( F) Y
  50.         e2prom_s_cmd arg;. ]$ l% _- E. A# ?+ l/ P
  51.         unsigned char buf[0x18];5 K2 [" ^2 F( ]" R

  52. 5 l1 X2 j3 q3 |
  53.         memcpy(buf, mac, 6);6 @* G+ G7 W' }/ M6 h9 x/ S
  54.         memcpy(&buf[6], stbid, 18);" U4 a9 A9 T( d: G9 E7 H& E
  55.         fd = open(E2PROM_DEVICE, O_RDWR);1 `: I/ M, T, F  L, l# G' H" q# h
  56.         if (fd  < 0) {) r3 l6 P5 v! \* d0 _
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # r* Y0 U' B! n2 y! v
  58.                 return -1;1 ]/ A1 ?2 |5 \; ?, m: W4 L
  59.         }
    0 Q# B; C' h! e# [+ ~
  60.         arg.sub_addr_count      = 2;! j5 Y& D  C2 w& r/ ^$ J& |6 Q
  61.         arg.data_count          = 0x18;; {6 m" l+ V; |9 R2 |
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + B: ^" y  M5 U/ C5 X4 R) _: D" L
  63.         arg.e2prom_cmd_data     = buf;
    9 k1 \6 F" d1 z- N2 P: n# q: i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
      C( J. J7 T: `
  65.         if (ret != 0) {
    9 E. R% L  r, O, B
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 y: s7 f. p; d( y6 O& j$ W- b9 {
  67.                 return -1;
    - L# ?; Q" J0 |1 [  [4 ~
  68.         }  r  z; u$ [, R1 R; C

  69.   J0 G8 y  [5 B
  70.         return 0;0 @1 ~' \/ H- o! d% Q, e" g7 ^
  71. }
    ) `5 b+ _, ]) @3 y# G( C8 T
  72. 5 f. E" {# f' J9 F
  73. int main()
    ' |. ?5 d  q4 }, s2 C
  74. {
    1 U0 H% ~4 ?' |6 x9 L
  75.         char c;& l" c! ~- T) T0 U
  76.         int i, macs[6];
    " i8 s* x* w2 |: M
  77.         unsigned char mac[6];" I6 h$ H# v" [# E! D
  78.         unsigned char stbid[256];
    8 C6 }5 l  o; T
  79. $ A5 K& f" |2 a$ r! [  t+ R  A
  80.         if (readparam(mac, stbid) < 0)- M* r5 \% |' }6 K
  81.                 return 1;
    5 u* O4 r+ s6 `- Q
  82. + W  w  Y0 V* e4 \* D# A0 M0 N& {  D
  83.         printf("Current parameters: \n");6 V" K4 Y* v7 h& T
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 u8 _' O5 T  j/ F+ e
  85.         printf("  STBID: %s\n", stbid);$ w( w0 ~/ e9 S) _
  86.        
    ! S& s3 n$ |8 n
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ! J" S( o( w9 p
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {% q9 P# ]' e* z9 C, O. [
  89.                 printf("Input MAC error\n");
    2 z7 w' _" @- d; \; o' P) e3 {- T6 c
  90.                 return 1;9 |2 T( Y* y6 o/ ^  x* N( t1 h
  91.         }( y6 B8 v) g, s7 a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# I  D2 A1 q0 g3 D# g# h
  93.         printf("\nPlease input new STBID: ");
    5 c% C! l0 s5 [; t: k' ]
  94.         scanf("%s", stbid);9 k2 x' u1 n0 g; q' T' w
  95.         if (strlen(stbid) != 18) {
    ' G/ l# T. T. T/ k# \1 N* Y9 y! a
  96.                 printf("Invalid stbid\n");' Z5 I" h+ c; V4 L0 {$ Y
  97.                 return 1;
    # q$ p4 H  P; U9 w  |' r
  98.         }7 l+ W1 Y$ ^" w% h$ c5 d
  99.         printf("\nNew parameters: \n");
    ' E6 _3 {' E3 d+ X8 E" C* E& V# D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( S# T0 F* h2 f& N9 }6 }  o
  101.         printf("  STBID: %s\n", stbid);
    , W8 P( k( P, e( d/ ^$ @

  102. 4 G$ H( @/ ]. L
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    , c4 o. ~2 m2 F
  104.         for (;;) {- e) I/ d5 c! n2 x. s
  105.                 c = getchar();* ~2 H& U/ _" F( u
  106.                 if (c == 'y' || c == 'Y')
    4 W' r1 A# M2 g# H1 q. J
  107.                         break;- P$ Y" Y2 F- O( O* z$ G; B0 D2 b
  108.                 if (c == 'n' || c == 'N') {5 P  Q2 E" @; q- A9 y! U0 a0 X
  109.                         printf("\nAborted.\n");( u$ Q7 H7 P3 t
  110.                         return 1;
      l% e: W5 m& X6 f9 Z
  111.                 }# d  e" U( e5 g% V8 \% u
  112.         }7 ?/ u7 f5 D* o5 X
  113.         if (writeparam(mac, stbid) == 0) : x+ ^3 n% v/ b! [6 L9 i  D
  114.                 printf("Parameters changed.\n");
    ; K3 N, [0 z* P1 L+ s
  115. ) M: V4 @# l4 ]4 \% F8 ^+ V7 f
  116.         return 0;$ P8 O# v! ^! f: i& z5 b
  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 5 ^2 @3 L1 @' t7 j  \- n1 I
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 b$ |* _- |, c9 s  W/ ]* d: m6 M你用的编译命令行格式是什么?# U* T- \% d( R/ N* X
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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