找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15198|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 s! Q) \, x( R) ]
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    5 M8 [- X0 g. _% z: y+ w: R; [7 _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 V# `$ R! Q- t; Husage: himr <address> <value>. sample: himr 0x80040000 0x0
4 v2 O7 o% K6 w' q% [: v. j2 F3 ]% J; V% w9 i
, |  u2 }) \+ K$ f+ |- N1 ~
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?$ n. W- v3 ?- q

$ b9 [" ~8 T% e5 `, |8 q* q补充内容 (2012-3-8 09:42):
0 E* t: N% U2 B! ?! g9 bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数5 W, x# E+ W) q+ b
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。. W3 C8 @4 l8 j: {, |

1 b, v$ i+ X' M! u7 K2 ]. Y: qhimr <address> <value>. sample: himr 0x80040000 0x0
6 s/ i! ~$ f) i; I
9 f2 J8 N/ S# c例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  ]" C& O3 A/ q  t' e
himr 0x80040000 0x00
7 x9 V0 ^5 J+ @# ghimr 0x80040001 0x11
) e( w; l+ b7 ]' Z  @- V0 k' C) O9 lhimr 0x80040002 0x22
: v/ i# @+ ^3 S" ghimr 0x80040003 0x33/ ?# _% u1 i' t  n$ Y+ A$ ]) _; J
himr 0x80040004 0x440 K1 ^# f9 A0 p% ~) l
himr 0x80040005 0x55
3 o& c) i* y! b6 f3 k0 W' |+ }. P
( _( D8 L6 C6 BSN也是类似。
! J9 n* }' F0 ]0 [" g8 c, x& w% V
现在主要是,谁告诉我们MAC和SN的地址?7 A. h7 |4 |% `5 L" H5 A+ V- g
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, r9 p* Z  B$ [一直想找到运程修改MAC和SN的办法,苦于无解啊

7 R% D; }. w0 x% o5 f# |9 D" F5 {源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, ?# u. e5 p% k! H: d8 w3 p8 A# z) p) H
修改的代码早有了。到今天不会编译。+ F4 ?) z( v5 F  Q& ^7 O
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % D  v& f; `5 ]: V5 X
  2. #include <malloc.h>/ P7 Z0 x  ?0 E+ p% Y) x! m! q. R
  3. #include <sys/types.h>: {2 A* X' [7 G' q/ Y& [
  4. #include <sys/stat.h>
    & y* R  I4 j8 b, a  [' ?+ \
  5. #include <sys/ioctl.h>
    0 W7 K3 s1 I9 E
  6. #include <stdio.h>3 Z1 u1 w- a3 B7 U( t
  7. #include <string.h>) y6 I5 P9 e# b
  8. ) O$ I/ T2 {" k" I  ]  g
  9. typedef struct {- O5 o# U" g: f' O! x" ~1 V
  10.         unsigned int        e2prom_cmd_sub_addr;
    ' E$ _% u/ A8 n" m* f. n* P3 {" H# j
  11.         unsigned int        sub_addr_count;
    , [& X, @5 A! r# E; V% b& p1 L
  12.         unsigned char*        e2prom_cmd_data;( r4 w! x- f( O4 S3 i% y4 S( w/ i
  13.         unsigned int        data_count;
    5 a- g  c* X5 t7 t# v
  14. } e2prom_s_cmd;: e6 K4 l9 A9 ]4 T1 P1 }! d

  15. 4 f) g4 K# f0 z# I& k( N6 K9 E
  16. #define E2PROM_CMD_READ 1( A! N2 [. }7 F& ?  H; J. [; }
  17. #define E2PROM_CMD_WRITE 2
    # V) x/ q/ j# M
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( a, s  m( Z9 I# \

  19. % M, o5 S2 k0 ^2 V3 N% E3 E+ a
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    - ^6 ?% i" a! J2 `. l* i
  21. {
    ) k  }4 \; o) m+ v8 F% L
  22.         int fd, ret;. z8 k& ]7 E$ y7 M
  23.         e2prom_s_cmd arg;
    7 n4 }, j+ i+ L/ l  \5 H& W
  24.         unsigned char buf[0x18];
    : V' f7 D; y6 N& w; K

  25. + T  @* ]  [+ a  j, y( }
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# _, I1 Z* K7 R% X, I! l% A6 j
  27.         if (fd  < 0) {
    . t' @" `' T* C7 D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 P* L" J: v) k* o
  29.                 return -1;
    + a* p% K9 o( Y. Q9 R; K
  30.         }" Y2 L3 U$ a. J" U& C
  31.         arg.sub_addr_count      = 2;- `0 C# Z5 K# [+ e8 q6 z8 D
  32.         arg.data_count          = 0x18;2 N! }- f6 C0 L! B- o6 g
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 G& r# l$ @- k! D* b
  34.         arg.e2prom_cmd_data     = buf;+ }* p. _. [7 N9 u7 ]/ {
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# X% r' M5 m; v) t' \
  36.         if (ret != 0) {' y# s8 c+ M- Z4 ]
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: Y$ ]1 \  X7 ]
  38.                 return -1;
    $ k6 I) O- M/ N# o
  39.         }- t1 G5 s2 E/ S- c- U1 x
  40.         memcpy(mac, buf, 6);( ~% s* `9 w* \+ O; J; [) ~9 g3 K
  41.         memcpy(stbid, &buf[6], 18);! N. e  j# e7 L8 x
  42.         stbid[18] = '\0';9 a7 U1 u1 _( k" l) p2 |

  43. 9 h/ V; }& Y- d4 I6 h; t' _6 j- f
  44.         return 0;" H" T' n2 ~; p2 }0 c; O8 r- @) F. |
  45. }
    ! \! |1 w2 v% V1 Y5 i& \. h

  46. 5 b; y6 ~" ]8 v0 R! {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ ?$ J1 ~# Q4 c; {6 s. H1 Z5 {8 P
  48. {5 `+ Q# B0 x4 \
  49.         int fd, ret;
    1 e2 ~/ ^) b8 b! c' ?1 w! s7 }
  50.         e2prom_s_cmd arg;
    # {% z4 s+ |0 e# [- |$ }
  51.         unsigned char buf[0x18];
    & w( `7 W1 i: Y
  52. 0 H2 Y& x: e2 k' K* Q6 }  W- h
  53.         memcpy(buf, mac, 6);
    - H: V' H$ ]8 B# W/ N
  54.         memcpy(&buf[6], stbid, 18);9 [+ `+ l3 j/ B! _- A' {" b
  55.         fd = open(E2PROM_DEVICE, O_RDWR);9 _, c" o  x& e! l
  56.         if (fd  < 0) {
    & X  |' W! Z$ u- W. k% q  W
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 I: ~* n) W: Z4 L
  58.                 return -1;4 n4 E- G0 }/ y1 ]6 c1 ]
  59.         }( k7 ~+ O- F9 a
  60.         arg.sub_addr_count      = 2;
    / D' {1 d9 O) ?% n: T. U
  61.         arg.data_count          = 0x18;
    2 ^9 M# \+ n; a+ a' p
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      V2 g8 f9 }8 e
  63.         arg.e2prom_cmd_data     = buf;
      E8 n# l6 ~& C8 W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - u, M0 g, W/ l6 F2 }, m
  65.         if (ret != 0) {
    1 \+ g2 V3 C6 N! t& C! K
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);" c: j/ D! c! `) d! y& F7 [
  67.                 return -1;
    8 N9 v' a& r% S; G; X- z$ z0 J
  68.         }
    ; d" z9 w6 o1 b6 _7 m
  69. 2 V7 i, d3 S% F; |5 I+ r. O. q
  70.         return 0;
    , y! m% E4 K6 n
  71. }' {( p0 R% w; j8 O
  72. 6 ~: k; e) a' u- Z  `8 Q/ g
  73. int main(). M+ r# J' Q) _
  74. {5 ]4 R# G: `% h6 {6 V  `. \
  75.         char c;
    7 j: ~" a2 [& @; u  R# m
  76.         int i, macs[6];' |3 ?! l& B& |1 {
  77.         unsigned char mac[6];6 N' i* N8 z( t0 }
  78.         unsigned char stbid[256];+ Y0 D' a  e- ~4 S) q* u
  79. & L1 a# |( v4 P
  80.         if (readparam(mac, stbid) < 0)
    7 ^" _) w5 B5 B. g6 S. f
  81.                 return 1;
    + Y( C# g& ^% m: H0 Q! C
  82. * E' K% K; l8 i4 P- y5 q
  83.         printf("Current parameters: \n");. Z8 S5 [& {: N# t6 U& a4 Y3 p3 ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 r( \, I; B' ?) P. B
  85.         printf("  STBID: %s\n", stbid);
      A5 Y: @( o; Q7 T# s$ D
  86.         5 P2 p2 {/ I6 V# K3 \( l
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 y% N) d% x6 u$ s' ~
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    2 H; d& I) k; g5 a+ `/ r
  89.                 printf("Input MAC error\n");
    / G. F0 F0 M) H6 S7 }9 D
  90.                 return 1;$ m$ V4 H- Y. e
  91.         }
    8 v/ i- i" u+ Y$ A+ M# z; C, @
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( \' O* y, i7 M1 \0 B
  93.         printf("\nPlease input new STBID: ");, L( I' R6 H+ a3 l" ]
  94.         scanf("%s", stbid);
    / z$ p% x& k- R# b) A# b+ F! U
  95.         if (strlen(stbid) != 18) {
    % P! X. y+ N8 W% ~& ]
  96.                 printf("Invalid stbid\n");
    ) k% N  S! v7 h3 i6 y7 q) L; J9 Q
  97.                 return 1;$ n: i' ^7 J( R2 \! M1 |
  98.         }
    . c) t0 _2 W$ a- u8 J
  99.         printf("\nNew parameters: \n");; x1 E: @# k$ x  j1 l4 \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 s. a, J6 z' z; {5 E9 v/ @5 c
  101.         printf("  STBID: %s\n", stbid);: t; h; o7 F5 L9 l$ e5 v

  102. . ^0 a- f$ w4 I" T2 M
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 k! x  b5 \- b' W) ~
  104.         for (;;) {- A- `4 d! w( Y$ K( G5 ~8 J
  105.                 c = getchar();
    ) Y6 j; N+ Z9 n( n. Q
  106.                 if (c == 'y' || c == 'Y')
    ' s& h4 s7 A( I# d! Q) e/ w
  107.                         break;
    8 V" Z( G8 T3 \& D0 ~
  108.                 if (c == 'n' || c == 'N') {
    ! f4 n' w2 _" q2 l
  109.                         printf("\nAborted.\n");
    - Y: L- f$ A( W1 @5 @+ y
  110.                         return 1;3 Y- {; B2 f3 I
  111.                 }
    ; i0 f1 n  m: ?. ^
  112.         }9 z( P% d3 S5 k$ x# R% B) z6 n) A
  113.         if (writeparam(mac, stbid) == 0) * z) N3 P. G& }( X
  114.                 printf("Parameters changed.\n");. t. R" [4 x" e: m  \9 H" s6 D

  115. ! Y8 w% N& S4 Z5 {* ^
  116.         return 0;
    / Y+ }5 t9 K" o2 M/ R) r% h
  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
2 y$ P# p; _' r7 @: R" j. ^在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
) R$ z6 Z+ R5 f
你用的编译命令行格式是什么?
* q9 Q0 Z" F- i4 }$ W+ I) p- @
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-3 17:40 , Processed in 0.032918 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表