找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15312|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr+ x% n5 l/ P2 B1 e2 p2 a2 y- @2 Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 K, U2 |5 m# Y2 L  b5 H' S8 k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! g& W8 S/ ^4 W( m( w& zusage: himr <address> <value>. sample: himr 0x80040000 0x05 v+ l1 ~0 r, N7 y7 w. I$ O+ e4 ]

2 y7 Y9 d7 u  J1 ~/ f6 Z2 q
9 Z4 L* i$ v* b( P# _6 A2 o不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ s9 [  X. ?. C- ?
3 c$ t6 G% b: _( J1 v# {- h补充内容 (2012-3-8 09:42):
6 D  C+ D- \5 Fhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. b* P1 j/ F% I* }( X
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
) j& M7 v+ y4 o& M. ~$ n: H: `2 e% ]8 z6 q/ U
himr <address> <value>. sample: himr 0x80040000 0x0
: p1 i% x9 N9 o) `# m: u8 h# |& F
+ E5 {7 H* I$ x8 l0 @5 p5 D例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, ~0 e: b$ f' `4 thimr 0x80040000 0x00
$ Y+ T. s8 }4 ahimr 0x80040001 0x114 E! N% @2 S1 X- f" }' f
himr 0x80040002 0x22: W3 v  Z; G  M4 e! x
himr 0x80040003 0x33. p0 i' y+ H8 G- U( c. u6 P' _+ H
himr 0x80040004 0x44
1 F& c7 G; M2 xhimr 0x80040005 0x55
+ e9 A# ]! [' W  N* r- N; L$ u7 U& C& W* g
SN也是类似。
/ _; f4 A7 T' L" n7 p" {/ U5 C: Q6 E  f9 G* e
现在主要是,谁告诉我们MAC和SN的地址?* |4 }2 c6 y5 _; x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 Q8 {: |; \7 N5 A1 `. \0 J一直想找到运程修改MAC和SN的办法,苦于无解啊

2 |! i) d2 v& ~( N5 |4 W; L4 a源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! p4 w: C6 r: s( G' |9 d0 c2 \

+ w3 g7 \3 N9 p/ M修改的代码早有了。到今天不会编译。1 H0 X8 F, l. x6 s* T( o
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    2 N' a: q, T5 l
  2. #include <malloc.h>
    . \& Y: ]8 z$ V% i- P, e$ H# o
  3. #include <sys/types.h>
    2 e5 m" A7 v$ ~/ h6 K3 D* [
  4. #include <sys/stat.h>+ d1 l2 U4 e- C. K2 y
  5. #include <sys/ioctl.h>
    7 N! N4 R/ f& `- n4 I( n- p: E
  6. #include <stdio.h>
    $ m6 B1 I) x/ H2 T
  7. #include <string.h>
    , Y% O8 }& j* a. L# U2 N
  8. , l& Z3 P1 f8 @9 v
  9. typedef struct {
    # Y( e5 c  L- D/ Z. J
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 o. b6 l$ b! P. ~) f$ ^
  11.         unsigned int        sub_addr_count;
      K1 f5 r3 P  E! D
  12.         unsigned char*        e2prom_cmd_data;
    5 I  n) }9 c( E7 T3 l
  13.         unsigned int        data_count;
    ( I" |& u6 u/ X
  14. } e2prom_s_cmd;
    6 o0 M7 ?8 t5 M3 n# T
  15. 0 G3 u% f& s) x2 d6 N, z) E5 l
  16. #define E2PROM_CMD_READ 1
    , d, K1 o5 \6 O! x% q4 ?
  17. #define E2PROM_CMD_WRITE 25 c, H& }, \5 h" ^
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    # M2 r- w, {: R7 m) O% l( B- V

  19. 3 _) T! i4 u, ~, s& G" I# k
  20. static int readparam(unsigned char *mac, unsigned char *stbid)' C" f' L. @9 R) z; P, s
  21. {
    / }8 z$ z, s1 \5 l' o" R( k
  22.         int fd, ret;
    # K) Q# a2 g! c8 \1 z) D* U7 p
  23.         e2prom_s_cmd arg;  Q6 F" Q/ Q* R" b0 u
  24.         unsigned char buf[0x18];+ U2 P& R5 u$ y1 Q& @0 \

  25. , M! F9 ~8 Q6 H! ]& ?# J
  26.         fd = open(E2PROM_DEVICE, O_RDWR);% Y; a( H' e4 O3 X3 Z
  27.         if (fd  < 0) {
    - n  [, N, M1 G3 K0 U* \# ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 H* e9 U9 Z" ], K1 C# P2 z
  29.                 return -1;! a! o/ L) `1 @/ {
  30.         }5 h; [. [6 z% o+ p: O
  31.         arg.sub_addr_count      = 2;
    : T) \1 _% v$ `( B  g3 h! o
  32.         arg.data_count          = 0x18;6 U0 K+ C3 H# `7 x
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    3 |* y# B3 q! f0 \: L" A
  34.         arg.e2prom_cmd_data     = buf;8 x- R7 i2 ~) f# ?" H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, Z( L5 E) [( O( J6 S
  36.         if (ret != 0) {
    $ E4 R, A1 `% `" h- n  p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - F8 M0 g$ C: E$ X7 B# @
  38.                 return -1;
    3 v0 g  ]' \5 k9 ^+ i
  39.         }$ V! x/ A& R% O6 u& Z
  40.         memcpy(mac, buf, 6);! u- @9 e; ?' j, f9 x; v
  41.         memcpy(stbid, &buf[6], 18);8 T; ^  H6 ^0 b( p$ K
  42.         stbid[18] = '\0';5 C$ O9 G8 N3 v* G# u* v
  43. $ K2 F6 X& F' z- U9 E: I, ~
  44.         return 0;; ]5 L6 c- g0 p6 e$ Q1 q" X6 j4 O
  45. }$ [  ?. Y4 q: d7 v

  46. 6 [' `$ @: C3 Q* {5 D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    5 w/ E9 c: D6 F& f: z% A
  48. {
    ( [9 j: m) _; F8 J& ?) }( Z. u1 u* ~
  49.         int fd, ret;  C8 j( T& h: a+ e& l4 o% m, L3 J
  50.         e2prom_s_cmd arg;$ A' d5 U, F; H( u4 i5 o+ P
  51.         unsigned char buf[0x18];. n: x. y5 c) A0 x0 Y6 N- w; R

  52. 1 Q6 i/ D# B& s9 |; V
  53.         memcpy(buf, mac, 6);1 N# m% @! h+ e3 m3 C4 |
  54.         memcpy(&buf[6], stbid, 18);
    ) }' _8 q) l3 {4 v) W0 U) c  E7 s+ ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 R  L5 Z' ]8 `, _
  56.         if (fd  < 0) {/ \9 F' c" h/ N" X: _
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( w0 b3 P0 T. E
  58.                 return -1;
    * a2 R7 J+ E2 u0 i& D& V9 e
  59.         }
    5 Q6 r/ t. W8 i4 Z6 l/ f) s1 J
  60.         arg.sub_addr_count      = 2;
    4 L$ c% S8 O, P* q  d/ P% j
  61.         arg.data_count          = 0x18;8 C5 g& Q' U1 f
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    0 @$ H/ r2 I0 A; A, y3 K7 T
  63.         arg.e2prom_cmd_data     = buf;( a" \+ _& H$ E9 o* d, \3 L
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);8 X3 [# s; V. v
  65.         if (ret != 0) {0 T" E( }" G  ]
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * E! ]: E2 x7 Q9 m/ n
  67.                 return -1;
    . M0 L# N0 p4 }9 j
  68.         }' [  x( @4 h- u; p  A
  69. 6 p& o8 `9 h/ x9 u( H% D) a6 E9 v
  70.         return 0;
    1 v6 `. ]# w3 O  J7 G
  71. }0 O" r) S6 p3 Z; e# c( T. j
  72. ! P: b, ]0 f# H8 I4 _2 c6 G
  73. int main()
    $ I. w1 {' I5 p* ?) ?4 e
  74. {
    ( o; y9 }# F0 @9 l/ a. Z5 ?
  75.         char c;% j" `0 C+ l& E! j: Y0 t2 \
  76.         int i, macs[6];
    + |$ B' k0 L/ N3 T9 e* J7 J# C
  77.         unsigned char mac[6];
    ( N9 u3 o; h, l. E! L/ |
  78.         unsigned char stbid[256];& V+ q. Q4 \0 c: ~' ?
  79. 9 C4 p$ @9 u/ _8 r1 v# a) w
  80.         if (readparam(mac, stbid) < 0)
    * f' P, ^) S& Z& H, x2 k
  81.                 return 1;
    . M9 E( {, R; g" g

  82.   ]& I6 ?$ q, M+ Y2 u
  83.         printf("Current parameters: \n");; z' V8 f" F! K7 v3 y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& e) r. q9 R3 b; t; {
  85.         printf("  STBID: %s\n", stbid);. S' E9 ~7 ^; T& Q5 S
  86.         % ?9 L9 G; _' d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& F- H: c, v$ Z: Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {: G3 S8 ~: w! G5 z2 F' M
  89.                 printf("Input MAC error\n");5 ~! w+ f* Y, v( M$ N
  90.                 return 1;9 F3 a4 D2 W3 a  Z8 R
  91.         }$ V0 @% ~0 O& f' K  i& g5 h. b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) G4 ~; }2 ?+ M4 c8 o
  93.         printf("\nPlease input new STBID: ");
    " x' }* b& ]) [' {
  94.         scanf("%s", stbid);" X( r& p2 a, ?; a. k$ n/ z
  95.         if (strlen(stbid) != 18) {
    & k0 a" _# v4 C, G* n2 g/ r2 P" A
  96.                 printf("Invalid stbid\n");9 s$ S3 g, h/ G  s% U* Q
  97.                 return 1;1 m5 q( j# @/ \8 P1 J. h0 x
  98.         }; U! @/ b/ _# w* k$ a2 L' f* `
  99.         printf("\nNew parameters: \n");
    * X0 {- G/ k( c+ K, M
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * @' @8 a1 F5 `2 k" Q0 }) \
  101.         printf("  STBID: %s\n", stbid);4 o6 w2 |; w, Y$ z; r) A8 I, L8 t

  102. 9 {3 ?& u: }; }9 j$ W+ j
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # {7 [& {( X4 n
  104.         for (;;) {
    & _0 R4 T% `3 P& n" ]+ K
  105.                 c = getchar();
    $ ]' _/ P) [8 q7 z1 T$ v" }: K. |& _
  106.                 if (c == 'y' || c == 'Y')  z, o( h4 x0 G
  107.                         break;) @, W4 n& Q% m4 w0 ?
  108.                 if (c == 'n' || c == 'N') {
    % R; Q# C- w/ w; v( ]0 J9 I; e  z2 k
  109.                         printf("\nAborted.\n");* ^( p# X, F# ]5 A- a- }& |4 {
  110.                         return 1;, v: l" d5 d, D* Z  }
  111.                 }* c3 A- t6 O: A7 o% T
  112.         }" N# m0 ?* _2 u
  113.         if (writeparam(mac, stbid) == 0)
    , c5 ?" W4 U5 v0 e( c( |) {9 r
  114.                 printf("Parameters changed.\n");3 z/ {& J) a% _  z  Q

  115. 3 c# \2 P( J% O5 q7 S
  116.         return 0;. n& W* L8 X9 t, n) A
  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 6 O- Q0 x* F2 i7 ?
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 w  [8 I) ?3 y- n你用的编译命令行格式是什么?
% K$ w8 r3 W/ i. ?2 n
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-19 11:21 , Processed in 0.043923 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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