找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15773|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr, s4 f  G; V( g# o  |' m9 t% G
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . L* T* [7 T- p( b
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' D! V/ x6 k- c/ `: |9 \
usage: himr <address> <value>. sample: himr 0x80040000 0x0( C' t5 ^" T" ~8 t6 I

: Z$ b6 q; C; A0 n; M1 P! Y
/ e$ j& C' y$ R8 q7 h不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?* |. Z: G. c& ~6 a/ t2 \
. R2 r/ ^/ ~6 I' F' l
补充内容 (2012-3-8 09:42):  A! m; j' o; d
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ x9 u1 Z3 J8 R) a$ F0 m! A这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
5 Q+ m9 o5 }+ [* d% j6 _9 m) S# w6 ~8 k0 H: K0 j% u
himr <address> <value>. sample: himr 0x80040000 0x0
. a9 b9 D6 |* i- a4 g- G% b( ^- J( Y, m& L9 D- B$ S# x& J
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 a. S6 A7 k) N8 d* @. D0 \himr 0x80040000 0x00  i7 l7 q( P( i& ~
himr 0x80040001 0x11
2 c1 n0 K. y2 `0 J1 m# r. ohimr 0x80040002 0x22
) R6 |$ a! p8 _himr 0x80040003 0x336 s# ?) |  o. J1 a0 s1 m" `
himr 0x80040004 0x445 ]5 s" H( [* _2 `0 T9 J7 k
himr 0x80040005 0x55
+ j1 R. M& Q; ?3 x6 y: |6 n1 T7 r2 ]0 \6 \5 |
SN也是类似。9 d2 A! {$ w: F& G. }
' A! ?# Z/ A8 a) T
现在主要是,谁告诉我们MAC和SN的地址?& O6 U- q. t4 {1 f8 \$ w/ a# ^; e" n' y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ; ^' J! }2 t* D, k- e1 M
一直想找到运程修改MAC和SN的办法,苦于无解啊
6 U8 f: K* k5 L1 A
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - |' |+ S+ w. _- q6 C/ s

5 u& o& U1 X3 ~1 ^修改的代码早有了。到今天不会编译。  L' h4 ?5 R3 T( N: H8 H
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: S8 q2 H* {+ K
  2. #include <malloc.h>
    ! O' J( r. {9 m2 B
  3. #include <sys/types.h>
    " M$ t; F: q$ }( U0 c* `
  4. #include <sys/stat.h>
    ! s/ c8 y$ g" v: r
  5. #include <sys/ioctl.h>
    0 g4 i: T$ ~, E4 X+ e: l1 A% f# q
  6. #include <stdio.h>
    & ?- e, ]7 S5 R( q1 k  ?& K  P; G
  7. #include <string.h>& E8 E2 r/ F0 V% I% b2 e4 ^
  8. ' L  }5 k$ T- E3 i5 a
  9. typedef struct {
    # T* \' L1 K( G# y4 ^% D8 d5 c
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! r( `/ o5 n/ P" B3 |
  11.         unsigned int        sub_addr_count;5 F: U! i' v- J- B* a. C4 g8 ]
  12.         unsigned char*        e2prom_cmd_data;
    ( V' C6 h6 S6 V! T* _* }! O; I4 Q
  13.         unsigned int        data_count;" Y2 L6 {( Q7 |; t0 a# S
  14. } e2prom_s_cmd;
    : d, T6 b/ F" ?% E

  15. % {7 O, Z4 \% N& w! x; V
  16. #define E2PROM_CMD_READ 1/ ]+ f* K" _- P6 f
  17. #define E2PROM_CMD_WRITE 2# p+ C5 }# s  {
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    - ]5 L/ k. |7 n0 e
  19. * ~5 [9 f9 \0 s! K  `1 D* M
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 H8 q$ X0 ^7 N+ e7 a6 t( A! ^9 S% R5 J
  21. {' {* L; S; w* \- J
  22.         int fd, ret;
    . i% E6 Q: l" N8 D' L
  23.         e2prom_s_cmd arg;
    % K" M* G/ n8 s: ~; P4 y& Y
  24.         unsigned char buf[0x18];+ C5 x$ u0 F: M6 Z1 ?/ H! n
  25. . W, m$ }7 X8 s5 B) V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 ]6 V5 ]2 z+ X, W9 A
  27.         if (fd  < 0) {
      h! v. r! \( H  L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);' b4 n" Z4 m4 M. U/ b) p
  29.                 return -1;
    7 e) T$ s( E3 G+ g0 [+ |
  30.         }+ B' h$ _1 o+ ^" j' ^& F1 |5 ?
  31.         arg.sub_addr_count      = 2;  n$ v5 E  m, t' @1 K4 D
  32.         arg.data_count          = 0x18;
    ) o( _! g$ T7 r4 v
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ! i0 r. T: {# t
  34.         arg.e2prom_cmd_data     = buf;
    ( z; r, O5 i$ }4 C1 e- G
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * }& ~( ]8 Z9 {  k" l
  36.         if (ret != 0) {
      M! E% }( e1 i: \
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 p6 Y. u/ V) H9 n7 O2 B
  38.                 return -1;0 S+ w) [5 w6 s" p0 `8 G
  39.         }! M% B& F$ R7 Q- L0 I9 |7 T( y
  40.         memcpy(mac, buf, 6);
    7 k2 Y, v1 U. T. U8 r, D% e
  41.         memcpy(stbid, &buf[6], 18);! s! r. K: q7 v; l, m
  42.         stbid[18] = '\0';. ?+ }7 k- M$ Y
  43. 6 J, p, I+ N- s: a
  44.         return 0;( q# e3 B4 f. }0 |  ^5 Y- H
  45. }
    " L- e! E9 v6 x

  46. $ ^# s4 W9 Q  V7 ~# z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 S' b  J1 V6 \* v% v: `
  48. {
    ! R& |+ A8 o3 }. d6 `  ]* _
  49.         int fd, ret;
    ! l2 v: I* |' p8 H$ m( z
  50.         e2prom_s_cmd arg;
    . y1 [+ z5 F3 V8 r' P) i$ M* ]5 P; L
  51.         unsigned char buf[0x18];" [: n& x+ o( i5 i+ ?/ \3 [
  52. / s0 k, i) O0 S$ I7 l
  53.         memcpy(buf, mac, 6);
    : O9 ^1 Y: d5 p
  54.         memcpy(&buf[6], stbid, 18);
    5 M1 h3 H2 x  v- C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 x( k2 p/ Z+ X+ J* c
  56.         if (fd  < 0) {+ V3 i  k: a3 `  Q! t# \
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 D7 ^! [  J) V
  58.                 return -1;2 e; m+ H  k+ c7 j6 P, S3 E
  59.         }5 k! f. R# Z( A+ M9 n1 f. }  t
  60.         arg.sub_addr_count      = 2;
    2 m6 i# x' r8 H
  61.         arg.data_count          = 0x18;" k% p. {' J4 W7 F: U+ e
  62.         arg.e2prom_cmd_sub_addr = 0x290;+ }, J$ @( t6 n' d8 \6 z' k2 d- `
  63.         arg.e2prom_cmd_data     = buf;1 H- C9 R) l6 i* `( D
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);( r* U8 b* \) l( Y4 t
  65.         if (ret != 0) {& k6 v2 B& O% n; a$ L$ h2 R
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);6 f. ]4 v" _+ E  {
  67.                 return -1;
    ' {" U# K" s8 H4 k6 ?
  68.         }, K9 ]; H# \8 z
  69. 3 ]/ j$ ^; J9 i' T
  70.         return 0;
    7 J0 v) {7 `4 j+ Y5 ^' m
  71. }2 d, \6 y5 x. |$ ?/ {; A$ D

  72.   g" c3 m- n8 s. i
  73. int main()
    + `) X- ^! ~; D6 J5 k+ e  Z9 d
  74. {
    4 ^4 ?- N' z  H
  75.         char c;. w& w7 }. I1 h. [) o
  76.         int i, macs[6];
    * k! T9 P" v% x/ q% X' Z% P
  77.         unsigned char mac[6];
    ( x( d) h: q5 _6 G% c) |& D
  78.         unsigned char stbid[256];
    4 S7 @9 N2 ?0 k7 C0 o/ k9 |* E

  79. % Y! n6 `: s9 M4 j
  80.         if (readparam(mac, stbid) < 0)
    6 C1 E, d4 w7 e7 d+ u* k
  81.                 return 1;
    ! X+ G. t1 |: J% b' V! ^) S) }- E
  82. 9 ~* s: y5 F3 Y0 r0 f
  83.         printf("Current parameters: \n");
    $ |6 y$ m' x4 @3 l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( x+ c$ {5 o  o
  85.         printf("  STBID: %s\n", stbid);; V- E4 t& y: u0 v+ K+ a
  86.        
    5 x* V2 L: e4 Z* A6 m6 K; \- L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - B& D# i. `  C% `' ]6 m- R9 ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    0 W6 N- k& q: l/ |5 j' k
  89.                 printf("Input MAC error\n");
    / J# A$ H4 o/ L
  90.                 return 1;
    7 g5 w7 u& [; Q3 X% m4 x4 @
  91.         }
      i, `0 I3 m4 l- H! U% o
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! T# K( ^  a$ d  F+ |
  93.         printf("\nPlease input new STBID: ");
    7 g" t" ~9 j4 X
  94.         scanf("%s", stbid);
      j# ^; d& p; O  B( M. v% q
  95.         if (strlen(stbid) != 18) {2 m8 A, l" \2 _2 W7 L
  96.                 printf("Invalid stbid\n");, d& D  M: x) Z& Y3 ^
  97.                 return 1;
    4 m7 b# b* Q$ `3 p
  98.         }% I# q( F$ ~' J2 I* O% [  h' S
  99.         printf("\nNew parameters: \n");+ ^6 \! B2 B1 @' Q+ U3 c2 S- R
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% a+ J/ o6 a! S' z
  101.         printf("  STBID: %s\n", stbid);( A4 e3 o9 [/ o! @( O  f
  102. 0 J% q1 W1 }! |5 g* p
  103.         printf("\nDo you want to change paramemters? (y/N) ");& `! o0 |$ \8 E' `0 j- V6 w
  104.         for (;;) {: M- `  @. p. S# R5 \4 Q
  105.                 c = getchar();
    ; l1 x' ^% k5 M0 {# u5 `
  106.                 if (c == 'y' || c == 'Y')
    ' a" u* G+ S# G* e! U* E" p
  107.                         break;) A: W0 L& L( z0 ]6 q' a
  108.                 if (c == 'n' || c == 'N') {9 D# l( G) z2 m! m7 W
  109.                         printf("\nAborted.\n");/ A( R% l9 |" g1 \3 {5 G! ~
  110.                         return 1;
    2 L/ h, ~! V( \3 a, X
  111.                 }
    3 E% t' W6 u! C/ }  Q# I6 D
  112.         }
    ) F; f3 J  ?2 I: ~0 C5 l; S. C
  113.         if (writeparam(mac, stbid) == 0)
    9 y: y) r! l: }' E
  114.                 printf("Parameters changed.\n");/ H9 }' s8 @5 O! Q

  115. + R( U, Q1 ?! r' |! S
  116.         return 0;
    ! V7 X% P7 J6 X2 V3 O
  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 0 d8 m+ ]* N8 w! Q, U) W) w2 f
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

  X; \+ b# u2 R你用的编译命令行格式是什么?
( @* F/ t% G6 J# {, n  ~% H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-16 18:37 , Processed in 0.096165 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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