查看: 16728|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr: S( Z4 t$ Q8 c8 v
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig' Z; b/ S' |" e0 \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' {- x* b: b4 B
usage: himr <address> <value>. sample: himr 0x80040000 0x0( w9 ^& P; R7 L; w8 }: z
  ?- [$ o3 t* H# N% i3 W; j* V

" X% ~0 b$ ?$ x4 w% u" p不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 k% m7 b' @4 j1 A' Q8 J* z4 N+ e: @: {' h& t, v/ S! S( ~
补充内容 (2012-3-8 09:42):
, z; |! X. p5 z8 n' N4 whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% V) `; O" D8 U' C: I; Y; 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 | 显示全部楼层
估计就是执行这个命令。
$ Y3 k  o6 Z3 b6 H* ~* A, M$ T
+ R4 d+ Q, D3 ?3 \himr <address> <value>. sample: himr 0x80040000 0x0
0 R2 D5 [1 h$ k
7 u+ \/ V0 k& f6 g5 f% w例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。! u5 i' b7 {# x2 F8 r8 d" h( r
himr 0x80040000 0x00
0 N' I3 Y$ s7 q0 k# p0 yhimr 0x80040001 0x11
$ h. b. w, R2 }7 Mhimr 0x80040002 0x22
* x2 s0 j  D+ C3 \% T' T. mhimr 0x80040003 0x33: Q0 K' a4 J; h) X, J# O& Q
himr 0x80040004 0x44& }! m2 b: t: ^9 t8 f& a! c
himr 0x80040005 0x55" T0 M; W$ G3 ]2 u* s  E" z

- i2 E- u! b; W, X* r) E8 M. ^0 `SN也是类似。
( N3 U- u. @# V" Y# Y" R
6 s& u2 ]0 P! I3 q  H- a现在主要是,谁告诉我们MAC和SN的地址?7 `( i# f8 ?9 L( G8 k5 _
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 T' N) m1 ?. L3 {& \* |* O
一直想找到运程修改MAC和SN的办法,苦于无解啊

, ~# T+ a& A5 ~6 W源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * s2 [  \; q, y0 U7 b
( B/ t; x* N% O) r/ {$ i
修改的代码早有了。到今天不会编译。
$ W& V1 ?0 M; l2 N, C: f8 R需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) r0 X8 ^% S% v3 g9 a4 v+ c, s
  2. #include <malloc.h>7 g7 Q: R: t3 ^
  3. #include <sys/types.h>6 G; _- F: L! u' Z: d2 X! h
  4. #include <sys/stat.h>) W8 ^9 A$ n0 L. D8 i1 \  j
  5. #include <sys/ioctl.h>
    3 I  J5 ?" S& _. d4 V1 b
  6. #include <stdio.h>3 C/ I% O9 _) Q; u, y& n: R
  7. #include <string.h>. |) [1 I6 b0 g* N" v/ K& h
  8. 9 p+ y! ~' |, |  a- {! K
  9. typedef struct {
    3 B( Y: h3 ]6 {) _& t$ C  l/ ]
  10.         unsigned int        e2prom_cmd_sub_addr;
    . q7 G. @/ y. G6 H0 k# r/ M& Q
  11.         unsigned int        sub_addr_count;
    9 M" o6 p( V+ z8 O1 R; b+ Z! k( M
  12.         unsigned char*        e2prom_cmd_data;7 ~/ |; f- c) K4 U) V' b
  13.         unsigned int        data_count;/ z& p! ~. ]6 @7 ?0 O" T
  14. } e2prom_s_cmd;
      ^5 W  j$ m. K* b) o
  15. 5 Y4 d7 v4 a5 o6 p$ t1 E: Y
  16. #define E2PROM_CMD_READ 1
    8 e# C, B+ V# S8 r8 p9 s8 ^# s* O
  17. #define E2PROM_CMD_WRITE 2! ^; G2 y6 ]7 R6 X3 x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# B- y; d3 A- {& q
  19. $ a" k9 X+ w" z: A; t9 i7 G
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / t9 B9 h" ~  b) W6 D/ [! Y( k
  21. {
    " ?( q+ \" ~0 O# _1 Z( Q
  22.         int fd, ret;
    2 }/ Q4 W' F7 a' `# z
  23.         e2prom_s_cmd arg;
    % `$ z% E0 x) n, R5 R
  24.         unsigned char buf[0x18];$ l7 a# u3 I5 c

  25. 3 p7 Y/ a, h8 O$ F! E% b* z' Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) i# B% _, c6 o" X6 H" g8 G. C
  27.         if (fd  < 0) {
    - c% ]! X' y) O' `' z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 t: r% D, Z/ E' A
  29.                 return -1;5 f+ Q7 j2 K. g- n
  30.         }
    8 e! V0 W5 ~8 J
  31.         arg.sub_addr_count      = 2;; T" r+ \+ F# q; A( ?8 {& w4 J& U6 T
  32.         arg.data_count          = 0x18;
    ' L' W' [6 p+ N6 \6 X
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 `! P9 N, a8 a8 Y8 O; _, T
  34.         arg.e2prom_cmd_data     = buf;
    ( o/ }. B* {3 g$ j$ |+ F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. e/ G8 L( ?" w( o
  36.         if (ret != 0) {
    + M& H. M7 X/ R  f$ o/ l' d
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, R5 ~) \' m' a5 d. J' F9 i1 k
  38.                 return -1;: w  R) O. k; a
  39.         }5 O& q. i# s1 g& I! ~5 C2 _$ s
  40.         memcpy(mac, buf, 6);, z2 l+ B; V( v0 P0 G
  41.         memcpy(stbid, &buf[6], 18);9 T- V9 ^) @- J7 |6 Y
  42.         stbid[18] = '\0';3 q* z5 ^. J& {" i+ @. s! Y  O& \3 F" m

  43. , b" B2 g( w4 ~/ ]. R& H2 O
  44.         return 0;( q7 @# y2 _  S0 ]& |+ U
  45. }
    ) |# V/ P% |8 D  ?7 }* X7 A$ z5 J7 y

  46. 1 j* v2 _( k0 s9 O: f) o4 `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 Y; l! I' q+ T9 P! M7 o; z/ I+ L
  48. {
    , b8 ]5 \- l7 o6 m3 P  t
  49.         int fd, ret;+ z1 a0 _: }2 C+ E. L) }* `. K
  50.         e2prom_s_cmd arg;
    9 E2 S7 s: O- S2 o9 c8 _: k
  51.         unsigned char buf[0x18];
    , U( t. R9 b' Y( v

  52. 9 I) g- y7 i" ^& L# j
  53.         memcpy(buf, mac, 6);
    ' S* T2 L1 c; v/ g4 }5 ~
  54.         memcpy(&buf[6], stbid, 18);( L" S% H7 S$ [7 @" l! F. K* ?4 r% h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);* o8 v0 j! J$ W. c$ q" I" n$ z. \8 C
  56.         if (fd  < 0) {
    ( {* W, t" `0 V8 t3 S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( r* Q0 Y) S. x; C1 D: F
  58.                 return -1;* h& f! H; x1 f# w. F/ P. G
  59.         }
    ' ]+ s) A5 @* L- x& f$ G
  60.         arg.sub_addr_count      = 2;* F: ^8 u  C( D  |" M# `
  61.         arg.data_count          = 0x18;/ |% Z0 l9 B5 b3 v# R4 f
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    , V6 o" ~# B. z  i  U" o6 B
  63.         arg.e2prom_cmd_data     = buf;
    5 u. H6 E) d+ e3 P& F$ _/ g4 R
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 O' a6 X/ X4 z3 Q
  65.         if (ret != 0) {
    ! W! F; r2 e8 d. s$ E8 g4 F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);4 f+ G6 k& m" J3 |2 ~5 k7 W8 l
  67.                 return -1;& E: L- |8 S& M2 q: m% E2 j
  68.         }  q' [7 |7 v3 \9 b) e3 O
  69. , i2 _/ @1 ~: ^  i* q9 B7 P
  70.         return 0;
    9 g) V. c! T. D! P4 z
  71. }
    & y8 e- g6 v. _% y3 u. e- {
  72. 6 n+ l" z6 }( q
  73. int main()4 V) n6 ?, G+ ~/ j
  74. {6 G4 W) X1 R8 _: o* x/ W, ]) I# }
  75.         char c;
    , P) n4 N( C% T7 N. J# r' d* j
  76.         int i, macs[6];  b# x8 n0 ?- r* `+ [
  77.         unsigned char mac[6];
    % w& Y* N* D2 _, x" t) \: I
  78.         unsigned char stbid[256];+ D) x! t/ Q+ z- d# {4 B: |2 j
  79. + n. W! a, V7 \& i$ d! Y& ]3 G
  80.         if (readparam(mac, stbid) < 0)4 n, t# M6 c; k. v4 o' H6 h( e. F1 r
  81.                 return 1;. ]5 X6 v+ y. Y9 K/ ~2 u
  82. - [- ?' d9 r3 |( U5 P9 u
  83.         printf("Current parameters: \n");
    3 E2 g& D" s4 M% l7 ]0 _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; U: k# |$ M. \! R4 `9 y
  85.         printf("  STBID: %s\n", stbid);( J. _6 ]) d8 J$ C/ e4 E( F7 ]
  86.        
    ( ?0 }" b; G) f3 r9 e% S  j1 F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ' O& g5 R# }$ A) a1 l, G* m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ! V) x8 l  y" ?+ \, E9 j
  89.                 printf("Input MAC error\n");/ G5 P! f5 F/ \
  90.                 return 1;! c. l( \- J2 f! u# I" N3 \( ?' U
  91.         }4 Q7 d& }* X1 Q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 r4 `- n2 n6 a# z" q
  93.         printf("\nPlease input new STBID: ");6 F3 _9 z* ]7 Y; N! [+ J
  94.         scanf("%s", stbid);
    & p  N' c% m0 a1 J
  95.         if (strlen(stbid) != 18) {" x  W" j# Q- @, c( g
  96.                 printf("Invalid stbid\n");! k8 u  v" m0 [, B' f
  97.                 return 1;
    + H) a- g( f1 o9 V+ g  f( t$ t
  98.         }
    & j/ R' `5 z2 S0 x7 `+ ?; z
  99.         printf("\nNew parameters: \n");/ g. l2 ?3 C" G: s2 ?, \- U. D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 [1 C5 y8 _, [3 a: z
  101.         printf("  STBID: %s\n", stbid);
    6 f& m/ p$ a1 m* r

  102. & E/ Q9 a8 p( k) S
  103.         printf("\nDo you want to change paramemters? (y/N) ");" K9 I) P6 G+ z6 I* G4 m
  104.         for (;;) {
    $ e, H6 j3 R3 Q. Y5 P+ n8 ]
  105.                 c = getchar();
    ( z+ r8 V- u! g  v. P! G1 f& u
  106.                 if (c == 'y' || c == 'Y')0 T( Q6 y& b6 t
  107.                         break;
    : ^$ ^# t. [2 Y$ ^+ {
  108.                 if (c == 'n' || c == 'N') {8 w" i6 N2 u$ _# t( X7 q( \) t( @. H
  109.                         printf("\nAborted.\n");
    % v3 q  r5 W  Y4 e
  110.                         return 1;9 ~- g: I) {3 I  i) u  O# l
  111.                 }, L- p! l$ u7 ~1 _/ k& L
  112.         }7 |1 S: E6 t* d! |  @
  113.         if (writeparam(mac, stbid) == 0) 3 L* _# K# s% m. u) B0 y
  114.                 printf("Parameters changed.\n");
    % N0 h$ B1 [7 _7 ~6 j" x! B
  115. ) s  C3 Q( P0 K9 k3 x9 t! i" N2 D
  116.         return 0;& M  P4 _  e9 z! a8 @
  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
$ p3 o* m" W" d8 B: [在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 R8 V5 k8 e4 \9 F' Z
你用的编译命令行格式是什么?
$ n3 H; x  {# 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客服返回顶部