找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15343|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    1 i: V4 f1 J$ Z5 @; b4 B) B+ T
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ; q4 a- F' U$ N& t* M# \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- B# v: o! @# I0 e% F9 F6 qusage: himr <address> <value>. sample: himr 0x80040000 0x0' o7 ~9 M( O1 u8 ?
( L0 W' M$ o$ n

; t- o) _$ {- B: c* c2 P3 M, A  G/ Y不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
6 _5 F% w2 Y5 \) h0 X$ b: l
) j" F; v! G- c补充内容 (2012-3-8 09:42):
; n; O- x; Q0 h3 E/ G  ~) i" chttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, p/ d- S, b$ W7 e/ u7 T- B+ m+ F
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。6 b/ d5 A, d% k

0 @* w% q8 d" W, R( H! x3 }% [! K" whimr <address> <value>. sample: himr 0x80040000 0x0
# h0 R" s" v& `1 Q/ K7 C" {  l. l  s- _4 n; N9 R7 J% \
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 l: `- |' O7 i+ }* L$ ohimr 0x80040000 0x00
1 c  ^) e/ Z0 H9 C- _3 t% Uhimr 0x80040001 0x11* }$ N; q7 x, q" k( D9 }6 R! \
himr 0x80040002 0x22
6 _6 J1 x& C7 \/ s3 mhimr 0x80040003 0x33
9 ?& A. K+ r/ \- ^  ^himr 0x80040004 0x44
( d& U: b7 i8 b/ n  s7 ~' Ihimr 0x80040005 0x55
4 s6 N- ]) a2 b1 u
. n! G: b8 i: a; ^" ]SN也是类似。5 P: u. l9 [  z2 R8 Y0 ^7 D0 H

, F% Y- z# B; c- W; U现在主要是,谁告诉我们MAC和SN的地址?
' N9 w9 G7 e) n% z' J& x) i
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ p5 b( K* k$ ^3 F5 l一直想找到运程修改MAC和SN的办法,苦于无解啊

" ^! V- R! k! Z$ U5 s源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ @3 O8 V" w' D: E% b. N4 ~
; d% v7 W8 q( p修改的代码早有了。到今天不会编译。
" v( F* I+ F( ]. A8 L, m3 Y需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>, e/ b4 p9 V% h* i( m, L
  2. #include <malloc.h>
    $ m4 ?+ T' O1 j" t; B( z9 j- V1 g5 a
  3. #include <sys/types.h>
    $ V1 ~* f& @% {9 a
  4. #include <sys/stat.h>' C: L+ p9 V1 ]( U2 E1 x
  5. #include <sys/ioctl.h>3 w* l7 z+ u5 J* Q4 ~# p
  6. #include <stdio.h>3 O5 |5 c+ `* e4 h
  7. #include <string.h>2 ?  P) M* S4 h

  8. 3 j8 _8 d  P" u, @" y# H  s
  9. typedef struct {
    6 d% I- d) S3 s- H
  10.         unsigned int        e2prom_cmd_sub_addr;/ t! Z- C- Z$ D% G9 P- B* I; N9 d$ R
  11.         unsigned int        sub_addr_count;: @1 C# N& f; y; e! ~' A4 d
  12.         unsigned char*        e2prom_cmd_data;
    9 O! l- M5 j5 k8 L' J0 F7 z
  13.         unsigned int        data_count;
    1 r# K) k( o* z$ ^
  14. } e2prom_s_cmd;
    : ~8 B+ e% i7 U

  15. 8 D- ~+ B6 ]) E
  16. #define E2PROM_CMD_READ 1) ?3 T% u, D- P3 n  J
  17. #define E2PROM_CMD_WRITE 2
    . o( w! i% S' U2 C6 }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    7 R' C& E8 ]1 Q+ x0 ~& t

  19. " |! E, q5 z) M# R' m$ r# C) C
  20. static int readparam(unsigned char *mac, unsigned char *stbid), r6 C$ d% M3 e" {2 ~
  21. {  m! s: e5 d% i4 ^6 X+ w+ Q
  22.         int fd, ret;: n* u% N9 ^6 D1 S/ V5 C
  23.         e2prom_s_cmd arg;: l3 Y1 b. ?  K, J; T
  24.         unsigned char buf[0x18];
    ) t' }1 h% O$ `8 d  z' A
  25. 7 O9 Z. y* S6 U: c0 |) s5 F
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ T, {# c: y+ t& e
  27.         if (fd  < 0) {
    ) l* H& q7 p! Y( S7 |) [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 x0 S/ e3 \5 @! K
  29.                 return -1;
    3 w/ S2 z7 B5 {) T  A
  30.         }
    . Z3 w+ ]% Y- g: Z
  31.         arg.sub_addr_count      = 2;
    2 f- d2 F/ ]5 w# Y- {4 b
  32.         arg.data_count          = 0x18;
    " S; ^% d1 E5 a: v. F, C
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    3 X, b3 P8 {$ [) t
  34.         arg.e2prom_cmd_data     = buf;
    7 [0 B3 G" x8 u9 H+ f9 Y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 [6 I2 Z2 `, b6 `2 C
  36.         if (ret != 0) {
    1 c/ d2 r: F; G
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);1 ]+ F+ s$ [. P# _
  38.                 return -1;) I( R1 u( _7 |# j8 y& G! Q% G
  39.         }
    1 n  ^0 Q* @* w; \7 o- F0 T5 m
  40.         memcpy(mac, buf, 6);
    0 b7 W) U' r$ v. \- v% w
  41.         memcpy(stbid, &buf[6], 18);+ q  l. V2 `* B
  42.         stbid[18] = '\0';7 [1 k1 {# z6 J* [# ]- I, ~& X

  43. ( ?* f* q9 ?2 \9 j
  44.         return 0;0 a8 C+ ~. b0 B3 V5 i$ v
  45. }
    % Q0 F+ k/ [# ~2 i% [
  46. ! r  p! ~& Y" }$ z, n& G0 v/ l# t& c
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 |5 A4 s3 m: `4 C& ]
  48. {  W, W4 G  A6 L
  49.         int fd, ret;: g" I% V: [4 u- `7 u6 ]& i
  50.         e2prom_s_cmd arg;
    ! g/ r3 c7 I4 n' ^5 V& e9 t$ P
  51.         unsigned char buf[0x18];
    0 j  y( n, x% E! ?
  52. 1 m& @( K2 n- g8 s. C0 z2 Z- F
  53.         memcpy(buf, mac, 6);
    : W6 D! |- z1 W7 c- b5 l+ O
  54.         memcpy(&buf[6], stbid, 18);- ?2 O" ^- o; t( X
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! q/ x$ F0 k8 o
  56.         if (fd  < 0) {
      D" s# @% c4 F5 [2 {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 j+ \2 J4 u6 v6 N
  58.                 return -1;
    ' r! b1 M% |; F; h7 f
  59.         }0 z5 _6 j. ~& r( H6 H
  60.         arg.sub_addr_count      = 2;
    + ]. ?: D& \2 i, a  ^, O6 `- y
  61.         arg.data_count          = 0x18;1 y+ j( @; Q% b
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 w- d0 M8 f6 }
  63.         arg.e2prom_cmd_data     = buf;
    1 p" X3 N: S+ i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    & j6 s8 J% B& B' j. V
  65.         if (ret != 0) {& T; [! o$ {( L" \; x/ ^* J" N7 \" |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 `2 c, f% ?. d* W* H3 T, u- A/ f
  67.                 return -1;# b7 z6 E/ ]( i0 i- x
  68.         }
    ( p3 \) Q% s2 v( l6 i
  69. $ x9 M% I9 p- r( c, p# v( U! E
  70.         return 0;
    " I+ b$ {% i/ F0 {5 e
  71. }
    2 @# y9 w$ f0 H5 h' E
  72. + b; S+ k! H  A- i; l
  73. int main()
    ! ?* X- ~7 N: H: i6 d! D% j
  74. {
    4 G, S7 [# _, G1 Q" V5 S2 g
  75.         char c;
    6 g5 b4 `3 C6 {7 a: O. \2 S
  76.         int i, macs[6];
    * V& O# j5 o0 ?: H* c5 g
  77.         unsigned char mac[6];
    8 r! s8 S1 Y) \- x
  78.         unsigned char stbid[256];2 i! b/ q! _% @# g* f+ |% U% y
  79. ; g% B0 f  f2 J! Z. d! y
  80.         if (readparam(mac, stbid) < 0). A- E+ b/ _. k2 Z/ c! O
  81.                 return 1;8 d) v* Z2 T' J
  82. ) c6 P# t: `6 ~
  83.         printf("Current parameters: \n");
    4 J% M9 `. _! {# m! {1 h
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 I( e( U( n- U3 }1 T
  85.         printf("  STBID: %s\n", stbid);$ D5 w0 ^* ~" b4 e. i! f# ^
  86.         ) z! K' s) m5 H* }* B- c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");" O) Z  d' Y" Y. s$ I. Q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - I) `( P2 H9 _
  89.                 printf("Input MAC error\n");3 v5 o0 p, o; h  F
  90.                 return 1;0 W" `. a! t. K# X
  91.         }
    ) w$ Y# h% X$ c& H
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% c8 \  F$ N% B0 j$ X+ u
  93.         printf("\nPlease input new STBID: ");: d) f, [* [' J% Z. }; x) N
  94.         scanf("%s", stbid);
    / G% V8 ?' D7 R# u
  95.         if (strlen(stbid) != 18) {, h- y4 D5 _) m" e$ k7 j
  96.                 printf("Invalid stbid\n");" d$ q) m# f9 K/ m& m$ s. |
  97.                 return 1;, F  V( L9 @: x. k# g2 \
  98.         }
    / X' ]) U; Z7 ?5 c- W
  99.         printf("\nNew parameters: \n");8 S$ t5 I# v" a' D, X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ m' j  R! E  p' E# E# H4 y6 c
  101.         printf("  STBID: %s\n", stbid);& w6 E- Y' n' ^/ M) e
  102. - q# q  U2 Z# z3 t4 g! T' l
  103.         printf("\nDo you want to change paramemters? (y/N) ");' X% J  ~- R) E& @# E1 w
  104.         for (;;) {5 |# D& z. ]& c# W9 i
  105.                 c = getchar();5 P% K1 T8 A9 r/ a, y6 X, o
  106.                 if (c == 'y' || c == 'Y')
    : H) q9 r# I- O  j8 f' L. c8 }
  107.                         break;
    . r# c3 ~1 ]4 D4 Z# `
  108.                 if (c == 'n' || c == 'N') {; `- r3 D9 t- N* w
  109.                         printf("\nAborted.\n");
    % u1 e  D% R7 y4 A
  110.                         return 1;
    4 @) _& X  h: H( \
  111.                 }
    + {2 n6 `7 y9 r3 }& D! g5 @9 j
  112.         }) t' F( g9 K! I. A& x# z5 p
  113.         if (writeparam(mac, stbid) == 0)
    % R7 V" ~% Z! G! S; s
  114.                 printf("Parameters changed.\n");
    * i3 y. A$ v# i! q% X! \7 Z' K8 ]
  115. ) F$ X% |+ {/ `+ Y8 z- p2 Q" M
  116.         return 0;
    3 ^- l& @+ r! U! v2 K4 H2 {! e
  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
' E5 e: u/ Q( @; }: U7 S, X在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 T  F1 i: V! @  R/ w1 F你用的编译命令行格式是什么?% \' S2 B( \& V# f+ h
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-25 03:21 , Processed in 0.077271 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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