找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15074|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    - L+ q5 i+ _' y; `: R6 v3 Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 H9 z7 `9 P) w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:8 i  T1 \! ?0 {3 l8 a: Q
usage: himr <address> <value>. sample: himr 0x80040000 0x0
0 B/ Y$ @/ Q0 e
, _3 Z, H! C6 e0 n$ N7 A" s1 L& i7 {' S. m- B
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, H% V6 W0 c& i3 G& L% ~' b
; l2 ~# o+ v, g# S! w0 O# J
补充内容 (2012-3-8 09:42):  L  L$ F  X) j! r! L
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, {2 \: m% r8 r, Y  S6 `& T: z0 x: H% o这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。& y. t: C; B8 N
5 J' Y7 B: A4 N1 F* M& p
himr <address> <value>. sample: himr 0x80040000 0x0! |# v( T; M9 b" j5 C5 `3 x
% N4 J" {8 p/ H- V( ~! e' D
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" J9 |, O7 L+ ^+ c. y# @
himr 0x80040000 0x00
  d) K) Q) q. b! M. }himr 0x80040001 0x118 K. ~& x# a' O+ X+ h0 t: F9 W
himr 0x80040002 0x22
$ m! u8 x3 k1 q& m5 e% f: }4 dhimr 0x80040003 0x33+ f: o) W& q6 k. ?3 Q
himr 0x80040004 0x445 a8 H3 K$ }1 z! [3 W0 z6 e
himr 0x80040005 0x55
& i8 V1 I# _& j3 t, e# M  s; n
$ M% o0 f/ u8 L" q( k5 X+ hSN也是类似。/ p8 l) Q! M0 a. v: {# ~$ R) e
# r3 C& J9 V* S( I4 Z6 f0 Q8 D
现在主要是,谁告诉我们MAC和SN的地址?# T7 ]% _0 w4 i# g6 Y3 N' k
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 , R1 R6 S5 K4 A  h& v$ z1 T
一直想找到运程修改MAC和SN的办法,苦于无解啊
% v0 h; C1 N! M" V+ M
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 F: N6 V, E8 T! @; O% X5 p0 Q, q6 x1 P, J0 A; ~& {! {- z) i
修改的代码早有了。到今天不会编译。
2 C$ L  d) Y; s% \: t8 J需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 |- v6 P5 @* C% g+ W$ o+ Q( B
  2. #include <malloc.h>
    + a6 G# r+ s% u- J6 C% F& Y
  3. #include <sys/types.h>
    % B5 L. |& A$ E  s$ V
  4. #include <sys/stat.h>0 N" x# O5 A3 B# I& `& V
  5. #include <sys/ioctl.h>5 s& p) J* X& X# K4 S
  6. #include <stdio.h>4 j' R  b" ~# A% m3 L9 A# ~* b
  7. #include <string.h>
    ; U5 E: c% V6 G- K0 y
  8. # J2 q- `7 {" g: z( T- `' A9 k% R
  9. typedef struct {
    - A5 O4 G: T9 L7 L. H" _
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! }( [6 u+ t; F# n8 q
  11.         unsigned int        sub_addr_count;
    6 z6 s, _9 z/ z( R) o2 _
  12.         unsigned char*        e2prom_cmd_data;1 V7 n* U8 t- j. f/ V: ?1 J
  13.         unsigned int        data_count;
    ; x6 e8 H' J  `
  14. } e2prom_s_cmd;
    ; b4 w+ y& ?( n" i
  15. 3 l7 V9 x' J$ b
  16. #define E2PROM_CMD_READ 1/ T' f) X2 u* Y+ e7 p$ I
  17. #define E2PROM_CMD_WRITE 2
    ' Z2 |$ E, I! h5 g8 r6 ^$ r
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 ]$ x: `7 F3 ~5 `. z8 R
  19. , J+ [( w' Z0 A) X- i9 n
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    1 C) z1 [9 R& r" P
  21. {2 s' N  R8 C' C- z; w
  22.         int fd, ret;
    0 Y2 z8 P- [  Z' g: n) D( U
  23.         e2prom_s_cmd arg;
    ' z5 j( p2 ^1 h+ A
  24.         unsigned char buf[0x18];- N. j) Z5 f9 `

  25. * F2 @+ N# z8 c' A
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / z3 ?8 J2 i6 I
  27.         if (fd  < 0) {
    + K: M) g" ]- G* D* e$ q; X% y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 W0 _! ~( g9 K4 A3 T* u/ M5 M2 t
  29.                 return -1;' W; {- _$ M, z! B0 k0 w9 P) _
  30.         }
    * j9 q7 [! a2 k7 _" F/ b" b: W
  31.         arg.sub_addr_count      = 2;% |7 x; O/ \4 s8 f$ E
  32.         arg.data_count          = 0x18;$ F+ W8 @' b6 }* d
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    7 a* z2 r) H$ T# b
  34.         arg.e2prom_cmd_data     = buf;, M' [- S: W: J+ O, ~" r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - J4 n8 }8 u8 D4 m; L
  36.         if (ret != 0) {. Y  u! l7 V6 c  s( j4 ?; f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * N/ k/ i& T/ P) H$ e5 S
  38.                 return -1;
    ! G/ }. t. j  X4 {! S
  39.         }# W0 K# d, h4 Y
  40.         memcpy(mac, buf, 6);* M: O' g. P) w3 B! p" G9 S' e
  41.         memcpy(stbid, &buf[6], 18);
    - r4 {9 b  V0 o; W1 T$ u1 ?
  42.         stbid[18] = '\0';- H( X5 M% o! |4 |9 L1 P1 J

  43. ! @& X7 p( G' I" B( R' M
  44.         return 0;
    * [$ M, X: p  z
  45. }
    3 {( I3 V1 I/ X

  46. - [: |0 b9 O( D6 z# d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)5 ?$ e1 }  i" V" G# E$ |
  48. {
    ! J+ u9 z6 O. L' i
  49.         int fd, ret;
    ) {- P5 D; ?: I* ?0 p( K
  50.         e2prom_s_cmd arg;* ^/ a# y, I4 A$ U3 H# k) n+ `
  51.         unsigned char buf[0x18];
    ( z" S/ l% }$ K' A
  52. 2 J- w+ V+ X! b
  53.         memcpy(buf, mac, 6);9 Q* U9 O! B+ |6 h: S
  54.         memcpy(&buf[6], stbid, 18);2 B1 g. R! @8 l3 z8 I' S' U
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / j0 A$ h8 u& u6 m4 q3 `" S# _
  56.         if (fd  < 0) {) P7 @* J1 D) ~* _  W9 V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);' A( I6 o5 O$ g/ ?3 H) u
  58.                 return -1;5 T% E/ Y8 A/ b/ U& W9 I' B, P
  59.         }1 a1 \' [9 X# @
  60.         arg.sub_addr_count      = 2;+ `+ I: ?8 Q& ], r9 l
  61.         arg.data_count          = 0x18;. `0 h( \) U  x8 ]9 D
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      S* P, q3 g8 b8 x4 S" g7 A
  63.         arg.e2prom_cmd_data     = buf;& y+ ]3 Z4 t$ F
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! a1 d) `4 a; J+ I3 M6 x5 U
  65.         if (ret != 0) {
    2 h" w. v6 H' |; Q! _
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    4 S, I# Z% j9 ^7 x: h; [( G
  67.                 return -1;3 m' J/ T. ^( L7 |1 B: R6 l1 d
  68.         }
    9 `  T7 j5 o# D2 g$ c) s, C

  69. ' P( B3 K: g" E
  70.         return 0;
    4 O0 p5 {# P1 Q1 ?5 Q2 J/ R
  71. }
    - x5 p' D! F7 }2 u% q

  72. 3 k1 _" @  n# {2 A3 j5 q
  73. int main()
    , C) `; Q3 W" o- O
  74. {) Z9 B  O' Y+ [* k2 V4 O
  75.         char c;/ ]7 B$ b4 u  f
  76.         int i, macs[6];3 v' o8 A0 N, u. C: J
  77.         unsigned char mac[6];: \/ h3 s4 i( Y) w( B0 `: j& |
  78.         unsigned char stbid[256];2 R6 p, x! Q9 p% V

  79. # y  c  V/ f& o9 o
  80.         if (readparam(mac, stbid) < 0)/ L" f/ K) n% N: U7 ]9 W
  81.                 return 1;
      k6 I& u3 W8 [
  82. 5 l+ A. p) @5 T4 P4 L3 ^, j! T
  83.         printf("Current parameters: \n");
      q2 a6 f+ i- t
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ u: @( F6 W: B8 q1 i" J9 A
  85.         printf("  STBID: %s\n", stbid);
    3 L1 i; {6 B" ?# q: Z6 [
  86.        
    4 }- M. g8 U- U7 R' O
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    0 e( q. k- F' q) ~6 X
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {( z  [- H$ N5 Q
  89.                 printf("Input MAC error\n");
    # A2 x6 S# I& T6 i8 ^# L1 J
  90.                 return 1;
    * ?; f3 M: Y, @8 k
  91.         }
    3 {( U4 c0 I: l1 o. s  Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 k) R% \" f* s1 F8 r* }
  93.         printf("\nPlease input new STBID: ");
    3 @2 I. C, B2 y3 q0 a0 c9 L' m
  94.         scanf("%s", stbid);: X# f$ s: d; G$ _  h/ F
  95.         if (strlen(stbid) != 18) {) [! {: h* N6 T, |" p; M1 e' Q+ \& u' W
  96.                 printf("Invalid stbid\n");
    4 J: `. a: O: S" }' g9 g
  97.                 return 1;
    7 s) i9 h* w' r6 d+ E2 g! _
  98.         }7 Y+ G  G* \7 l1 l
  99.         printf("\nNew parameters: \n");; [- v4 x8 O: i" H
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& X( l6 q) ?8 e& n; z2 n: d$ [
  101.         printf("  STBID: %s\n", stbid);
    " S* Y: m( Q3 d! G& R4 P  U
  102. & J- \2 e/ d3 j* N
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    6 }; Z/ B6 S! F% }; a0 S5 W) L4 w
  104.         for (;;) {$ J% n% I$ g( Y. y% I8 i" X; j
  105.                 c = getchar();  `! V- o' a% _4 o* t+ L5 P- W
  106.                 if (c == 'y' || c == 'Y')% p/ s) Y% L$ }/ m
  107.                         break;# i: D' t  `- J8 p! O" V
  108.                 if (c == 'n' || c == 'N') {/ O4 o- l- K7 [4 k' p
  109.                         printf("\nAborted.\n");
    0 [2 g2 X$ J+ ?: f' t# D# P
  110.                         return 1;9 X2 b# B- |8 q6 e2 a  G+ ~+ R
  111.                 }1 }! H. \$ o9 _" l1 j3 `
  112.         }4 u1 X% j- A7 M3 z& w
  113.         if (writeparam(mac, stbid) == 0) 3 }3 ~5 y" v7 p* J
  114.                 printf("Parameters changed.\n");
    4 R" |3 r) P- m; Y8 H+ a- }7 X

  115. 0 L4 U& u8 }( x
  116.         return 0;
    5 |& y! R' j( b
  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
- J0 o0 }" K6 y& H在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
- B: J" K( A: R* t! p/ ]
你用的编译命令行格式是什么?
! k% ~6 f& a3 z5 W
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-16 18:57 , Processed in 0.025178 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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