找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15256|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 b* d* P6 a. h
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    8 u' C! D& q4 x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
. u0 V" X9 K# _9 y# w. Ausage: himr <address> <value>. sample: himr 0x80040000 0x0* K. W- q8 c8 {- V$ ?: q4 U) }& t
: C2 S, K  U' _2 P  Z

4 c" i' C  ^/ b3 R0 P不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
% y: F+ R' {" l: a
2 h4 w0 H7 y0 U2 F5 S补充内容 (2012-3-8 09:42):3 ^" @2 F3 {. A, u
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数# S3 k' v* ?3 ~: l
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
) P6 b; p" @0 v9 ?( m# s
+ ^) T. F" N+ r' I) Lhimr <address> <value>. sample: himr 0x80040000 0x0+ y7 z5 q* n: ?- a

0 }% T+ A! F- Q9 P例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。9 i' g( L6 C9 [
himr 0x80040000 0x00% w+ o/ |" x+ z
himr 0x80040001 0x11
. }1 ?) ]5 [% V0 l* L- shimr 0x80040002 0x22
$ D9 p/ ?  W! k: n: N9 @$ h  ]" s# fhimr 0x80040003 0x33
% u5 X9 F' _+ G; O0 M$ ?himr 0x80040004 0x44( _/ y: d# z1 Q- F1 P4 l% t( L
himr 0x80040005 0x55% g$ A# Z6 T" R6 Z8 ]7 }6 q" b: l  e
8 V( {+ r/ |; r' o6 X. Z! P$ r
SN也是类似。; f; R% A% Z6 s2 |$ ]" _8 Y! }
7 l/ A! V5 W( g
现在主要是,谁告诉我们MAC和SN的地址?6 K& d4 K- n: M# P2 [# c/ Z
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 5 B  F9 e/ y0 ?4 E/ }7 \! @
一直想找到运程修改MAC和SN的办法,苦于无解啊

' B5 T) |) [; S: c源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - m+ Y3 c0 J, r) S; W0 p

/ @4 ?7 h6 E  {3 m1 K+ z修改的代码早有了。到今天不会编译。4 U/ g. j8 R& n' d5 _9 L8 @7 N
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>& I2 @7 Z1 }8 p  e* N5 o! A, I
  2. #include <malloc.h>* s8 i' u( T% c2 |3 {
  3. #include <sys/types.h>0 M; s, L8 R6 r
  4. #include <sys/stat.h>6 q. I8 ]" X5 v; \; }
  5. #include <sys/ioctl.h>
    / m* z! m  h6 }# i) p
  6. #include <stdio.h>! A1 q& H2 f5 U
  7. #include <string.h>
    % _9 k6 g( [, E% l& v& ]

  8. ; ^8 A  F  }0 {( E
  9. typedef struct {
    & d/ }0 A. j- w! p5 {
  10.         unsigned int        e2prom_cmd_sub_addr;' M) `) |) `9 f' j9 D' G
  11.         unsigned int        sub_addr_count;  T" ]' g: C* x! k: j( t  C
  12.         unsigned char*        e2prom_cmd_data;
      f! e: @  ^$ r" Y& ~* U
  13.         unsigned int        data_count;
    1 T5 u/ S  e3 V- \. f
  14. } e2prom_s_cmd;
    * \+ ]+ z1 ?! [$ T( z6 |; _

  15. . l( J7 v6 i& J4 j' X1 [7 k. {0 n
  16. #define E2PROM_CMD_READ 11 L+ h3 D; n; S5 X( M2 F; F
  17. #define E2PROM_CMD_WRITE 2( T5 R( m4 ~0 x- C
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 x$ V) b" C9 I4 Y3 X! p9 H

  19. ' T4 z5 [& s5 @' H& `
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    5 I; _7 f9 ]0 n/ u3 y5 x
  21. {
    " V  J6 O5 Q# G" ^
  22.         int fd, ret;
    ! Q0 d8 ]- {/ S( y
  23.         e2prom_s_cmd arg;
    % n. {+ @+ o0 d: s) t
  24.         unsigned char buf[0x18];
    0 q+ L; K% W1 C5 ^% n6 Z& f! q

  25. 9 ~3 L2 G1 H" {" n6 o
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 @8 [$ ^9 E6 x( ^% ~: N/ d
  27.         if (fd  < 0) {2 f9 K$ X2 G* k) O) H; c* F+ f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 t4 C# A8 z4 F
  29.                 return -1;& B/ i' M2 w$ [1 n# `: G
  30.         }
    % F2 g; i& t9 m" J0 L. }% Q
  31.         arg.sub_addr_count      = 2;
    ( V/ w% w4 d" W9 t/ r
  32.         arg.data_count          = 0x18;2 z% H. H6 F; y0 w! P( [% b8 Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & B' i" {+ U6 w7 b% m; o0 O
  34.         arg.e2prom_cmd_data     = buf;) J5 F: o" v% r: U. }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ W  }. z, \: t* W" A0 K
  36.         if (ret != 0) {0 i5 C" ~' L$ t2 t- c- B6 |
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 o  J6 U+ t) j4 N( S% W( `8 _
  38.                 return -1;
    6 `  P+ R3 Y5 D
  39.         }
    ( S+ }( Q5 m4 h
  40.         memcpy(mac, buf, 6);0 f  h' |0 L9 _5 k( S# C: r- a- U( y! @: T
  41.         memcpy(stbid, &buf[6], 18);
    4 l8 M, Z: l* Z5 ?) \" j/ c
  42.         stbid[18] = '\0';" H+ @' T  U& T6 K& D

  43. 0 m$ _' A3 O. p# J
  44.         return 0;& {4 r9 X5 f1 {5 F
  45. }
    , u, N5 _" n: J/ P& q: X* S' J' V' ~

  46. 1 x% u+ G3 w1 u* P4 B
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 F# _7 [7 [" ?2 P( _
  48. {$ @3 u& I5 b. V6 e* J. I
  49.         int fd, ret;* N; o: ~, t3 f/ S& _% ^
  50.         e2prom_s_cmd arg;
    ' f; j7 h% q6 f9 F2 N* y
  51.         unsigned char buf[0x18];6 E" G! W+ ~8 i- A

  52. 7 w0 t7 P0 F1 p) ^  [. k: r
  53.         memcpy(buf, mac, 6);! p: S# N0 ^4 v8 D& t
  54.         memcpy(&buf[6], stbid, 18);
    7 g/ o9 R3 C" ]3 P6 c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 l6 U' Y% o7 g7 h* c
  56.         if (fd  < 0) {
    " c. Q' V. K) M% @
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . V6 r5 E1 J& s6 ^/ A
  58.                 return -1;
    9 ]0 J' j. P3 d. r" H1 b- s
  59.         }. \' Y0 f" [* a' G1 J: s. o% O
  60.         arg.sub_addr_count      = 2;
    * J- u5 q! [/ r+ Y, Z
  61.         arg.data_count          = 0x18;' y% v: {5 `4 x; z7 W" @. Z. F, _
  62.         arg.e2prom_cmd_sub_addr = 0x290;+ Y/ |: v& g% M- N
  63.         arg.e2prom_cmd_data     = buf;: `( e5 R9 A* @7 L9 p9 U9 f, l
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 ^) H9 k/ Y& u: H
  65.         if (ret != 0) {8 k5 y& S" z$ \7 e9 D2 Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);) S5 D0 h9 J: T1 d
  67.                 return -1;
    - N7 K3 c- h2 D. a- r
  68.         }
    ) n; v+ T# ^: J/ X) S  y/ t! O: j0 _

  69. * l' M, b, x8 R; F6 h
  70.         return 0;5 X: _8 U' |% ?0 w4 h8 y2 {
  71. }# i/ w4 t' k2 ]( Q9 t
  72. # n8 T3 j" k9 g$ }0 @+ }
  73. int main()! b  V7 N, }( R
  74. {
    4 x3 X. v2 J2 g: c
  75.         char c;
    ' j; ]2 y$ I3 z8 o
  76.         int i, macs[6];
    ! f. s% [- r, N! ?! P+ M
  77.         unsigned char mac[6];
    4 _- N/ T7 ^3 b' O' ]7 ?
  78.         unsigned char stbid[256];& A8 q7 O6 c1 ?) a  x: Q

  79. . Y* [8 u/ I4 u8 C' k
  80.         if (readparam(mac, stbid) < 0); I" N1 K+ c" X# `/ ?
  81.                 return 1;4 x' [8 b$ j7 X' H# H% q

  82. 1 Y4 m8 {3 L: n  w& l- `5 [9 _
  83.         printf("Current parameters: \n");! @: u6 B0 v* s4 o1 w0 `1 V, m/ Z3 @
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 E- v6 B$ n" M# N' J! n/ d& J
  85.         printf("  STBID: %s\n", stbid);1 S! N' S/ c  y" L! \4 h8 M
  86.        
    + f- O6 \9 M/ r5 n3 h9 f1 z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 H1 t& ~* ^7 r9 ]& B
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    1 Z- D" B! L' |
  89.                 printf("Input MAC error\n");
    % w4 y! z% c. y4 C2 m
  90.                 return 1;
    % [  F+ _% o# M' ~+ G- q
  91.         }
    . j  ^& @) x4 Q6 \4 q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 [6 F3 Z) g! V0 V
  93.         printf("\nPlease input new STBID: ");
    % n7 K5 V( |7 B
  94.         scanf("%s", stbid);* K5 P- j+ n1 K* ~! `' V
  95.         if (strlen(stbid) != 18) {
    2 o# D6 u9 C4 s1 J
  96.                 printf("Invalid stbid\n");, B0 P, x2 w* q- F
  97.                 return 1;: d& `) Y9 H8 B. [: U6 u
  98.         }4 s) U6 _' v8 K2 H! H: }
  99.         printf("\nNew parameters: \n");
    5 T; \+ ~8 S' q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 N+ e1 h8 u& c2 a
  101.         printf("  STBID: %s\n", stbid);1 e, M$ v0 X! C/ y' U
  102. / s! k! l) F. e1 O' y! R5 [
  103.         printf("\nDo you want to change paramemters? (y/N) ");; ?; \, Y9 W$ O- m6 u" R  X" o4 a
  104.         for (;;) {
    7 l" X: M0 H  r4 c9 r
  105.                 c = getchar();
    : R% Z" ?0 K8 N' L5 ?$ ^; I
  106.                 if (c == 'y' || c == 'Y')
    ! E' C' ?  n: E' m* \9 [6 v
  107.                         break;6 v7 r) y0 c1 R. U
  108.                 if (c == 'n' || c == 'N') {
      y. X9 S. w  l' I: J& Z
  109.                         printf("\nAborted.\n");
    4 K- V( ]: e9 }6 r& S/ Y* M; Q3 L
  110.                         return 1;( S6 D0 @/ O6 P+ A
  111.                 }* e" v# C& Q/ @* [' A  @3 D
  112.         }, A6 b6 Y+ V4 I3 ]0 \6 T; O' J+ m
  113.         if (writeparam(mac, stbid) == 0) % I( H5 M; x( c- t
  114.                 printf("Parameters changed.\n");3 m) ~  _0 x, v$ e- ?$ M
  115. + }% |. C2 Z6 J9 ?% X
  116.         return 0;
    6 u, b- X4 I0 h+ |) 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
) k: D0 J1 ^6 d, G$ z4 \在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 }1 ]2 R4 o1 ?2 v
你用的编译命令行格式是什么?
$ ?/ k0 Q0 J- h$ W: B8 @
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-13 10:37 , Processed in 0.030252 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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