找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15619|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; p6 Z( A# a! B2 v/ u4 j) Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : ~) T: E& \% t- L+ c5 f/ v
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# \3 i7 n5 M0 t1 E4 Ousage: himr <address> <value>. sample: himr 0x80040000 0x0" A' b/ r9 i+ H0 S  V' s' y

- u! b: O* B- L6 b" m5 u. N5 W
9 n9 N$ h9 y+ M: ?# ~; e/ q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 l+ z# L* ~# J/ R4 P0 `
) O, D: X- e8 f6 J- E2 \
补充内容 (2012-3-8 09:42):" R, q/ H' |  R
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, s* P# K! X5 u这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。$ h" ]  a6 d' k; |1 @

# n8 T" i- G6 R( v; _himr <address> <value>. sample: himr 0x80040000 0x0
; E5 Y4 b: r3 a( r
6 z& H( ~- C% D% w例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。9 k& }% n) Y2 ]4 a
himr 0x80040000 0x00
) ?  f$ w. G9 ^) ]- a5 ehimr 0x80040001 0x11
" e# u! p8 |" i; ~* L0 `" P/ {himr 0x80040002 0x225 s$ o7 V1 s$ F+ n
himr 0x80040003 0x339 s; h: Y/ Z& e6 c/ ?5 c5 R
himr 0x80040004 0x440 y" x! |) M1 _6 W
himr 0x80040005 0x55
+ \, ]1 K. r( O) L1 h5 f8 f' `! X# ?' P5 w0 d# S
SN也是类似。2 z+ W5 G# u5 M. @8 s  `9 t( r

) F2 o8 H4 M+ x. @( v现在主要是,谁告诉我们MAC和SN的地址?
% s" O7 ^& J; C( L4 y' t! a  H
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 g) c+ ?. S$ {; a一直想找到运程修改MAC和SN的办法,苦于无解啊
7 R2 U( q# A7 w, A) [
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 l3 E* Y2 ^" D- B4 e
# u% E5 s4 K% p8 t& Q
修改的代码早有了。到今天不会编译。
3 D) o7 {& ^5 R. u4 b需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>5 M. X0 Y( q0 M- \/ @
  2. #include <malloc.h>& H2 f5 _* r  r) K
  3. #include <sys/types.h>
    & R4 u: }$ B$ Y. S* [) G
  4. #include <sys/stat.h>9 z; }) m3 s( P) @6 O( w( K
  5. #include <sys/ioctl.h>
    8 a% n+ H; }" s2 }. e1 W
  6. #include <stdio.h>/ t* A7 G. U; E2 |4 V6 c4 q& {& {
  7. #include <string.h>, a) E; k( g) b6 ]
  8. 9 ]( A3 \0 ]& F4 m/ p- D7 f
  9. typedef struct {0 A3 o) D2 _$ Q8 [
  10.         unsigned int        e2prom_cmd_sub_addr;
    6 H8 s4 R* p' o+ g  @' a0 [4 u
  11.         unsigned int        sub_addr_count;
    ( B8 E( T0 s8 x
  12.         unsigned char*        e2prom_cmd_data;
    5 |$ x- a4 j8 ^9 S! Y7 ?
  13.         unsigned int        data_count;5 f1 g3 {$ r; K
  14. } e2prom_s_cmd;
    4 q' p2 ?5 W8 q  P0 N9 J/ ^

  15. ( b; C- ?6 z9 y. t
  16. #define E2PROM_CMD_READ 1
    7 i# w  ^% ?# C0 V4 `; c/ O
  17. #define E2PROM_CMD_WRITE 2- W. R; h' ?# d) [6 W+ p2 W3 K
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    9 h4 P2 {1 E, o; N/ o+ k

  19. # o9 t8 X9 A) \
  20. static int readparam(unsigned char *mac, unsigned char *stbid); H3 `5 Z. j" K5 K
  21. {4 A: r; v7 o9 l& p/ ~& Y
  22.         int fd, ret;3 G7 U0 o( c7 j+ R* U9 I
  23.         e2prom_s_cmd arg;
    % B9 P) z- u7 g! Q
  24.         unsigned char buf[0x18];
    * O4 R0 T) a$ X/ ?, m* i2 k0 H4 B
  25. $ ~# E* [( e$ J9 O) n
  26.         fd = open(E2PROM_DEVICE, O_RDWR);% p" N/ m/ u; p8 s# _
  27.         if (fd  < 0) {
    , o0 j) p5 a9 e8 g/ q8 X) [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);" Y3 _  s; z7 ^6 \4 u
  29.                 return -1;
    . h$ C, l. B4 ]+ |0 r5 \
  30.         }5 p) X6 F6 _% E  U
  31.         arg.sub_addr_count      = 2;" p3 r" |* F! z, u
  32.         arg.data_count          = 0x18;
    7 j8 D' y/ T" P
  33.         arg.e2prom_cmd_sub_addr = 0x290;' n  h7 w! A$ t5 X
  34.         arg.e2prom_cmd_data     = buf;7 d5 n7 m; c( X0 N+ m. ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ e  v/ k* J6 Q) g7 `
  36.         if (ret != 0) {- B6 [9 A  B  W& R; a& C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 X- H- n, I5 L; _# G
  38.                 return -1;
    3 W6 M4 j2 n1 l8 _. j2 d
  39.         }9 H7 f% O" h/ `% e  m
  40.         memcpy(mac, buf, 6);& e2 }# f3 |1 h% ]
  41.         memcpy(stbid, &buf[6], 18);
    ; m! X; l* x) F8 W
  42.         stbid[18] = '\0';
    ; z: C! y9 ^! `2 n& q' N
  43. 6 l3 X% V' q. x' x
  44.         return 0;
    ! G% F4 i7 f2 V! k4 K+ Z5 u2 t
  45. }
    4 @& n) H; c/ ]6 X$ J) c/ j

  46. " R) u9 K3 y" d" `5 u. i& S, d# B
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    + ?6 G- g9 U" L) x$ S
  48. {
    2 I" h$ F; @( s  {; O) ]8 [
  49.         int fd, ret;5 i% a  ~7 D4 O+ D
  50.         e2prom_s_cmd arg;
    - P+ i  Q- l$ h2 K! [, q
  51.         unsigned char buf[0x18];
    % d" h& I$ _9 m0 b

  52. 6 K9 D! r6 w4 H: ?" Z( b
  53.         memcpy(buf, mac, 6);9 d) o# b& ]- X* e; q
  54.         memcpy(&buf[6], stbid, 18);9 m& U$ N+ D: J" {+ ^* Z( T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    - ?! Z  B! ]4 a1 A0 f
  56.         if (fd  < 0) {% W8 s4 {: c) V9 c
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 ]1 A! q" y5 @8 O1 w
  58.                 return -1;
    ' M3 y2 p0 O6 x. k/ C  z1 l
  59.         }
    * d  ~; W: ]% }
  60.         arg.sub_addr_count      = 2;
      ^2 Q2 g5 e! ^
  61.         arg.data_count          = 0x18;- C  M1 D, I' r3 V+ O, F# d) c  S4 H
  62.         arg.e2prom_cmd_sub_addr = 0x290;( }3 j, t; J# ?$ r
  63.         arg.e2prom_cmd_data     = buf;
    : U1 N' s$ D5 e5 H# ^; P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    % C) Z) p  @5 J7 c* t
  65.         if (ret != 0) {
    ( p+ a; Y8 v# @0 {
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& d) V5 ^, ^; h
  67.                 return -1;
    4 m4 B! t4 b' C% ?, R! j7 N
  68.         }! A7 s  r6 N2 z( v' X* a
  69. $ i5 M' y! y: I& P8 W3 x
  70.         return 0;2 t  v4 E; I# ]) g  L: l' m. `. y
  71. }
    * `( U1 G; \. L& Y

  72. # j, T" [7 Q& j) P; r% k' Y
  73. int main()" R) q! c) i% L8 ~! j( P& u
  74. {8 e8 y  A, V6 H# D3 g$ `
  75.         char c;) z  e0 }& i, Y) {! ^4 j( r
  76.         int i, macs[6];" l! u% P6 n+ R9 h! H  a9 W/ \
  77.         unsigned char mac[6];
    ) p8 A: v2 ]5 [; O6 l7 k
  78.         unsigned char stbid[256];
    $ O1 G- f1 t. b

  79. ) g7 b' `( [% {2 b" s4 ]
  80.         if (readparam(mac, stbid) < 0)& d1 I" B0 X: n. P9 S- T$ @
  81.                 return 1;8 V  D8 ~7 ]: e( T& j5 F. ]
  82. # d* \/ X. L% W2 X% x$ J0 e
  83.         printf("Current parameters: \n");& p6 f( D: T) u1 I& B) U5 X. ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - a' r# X4 ?) w0 E( K' `
  85.         printf("  STBID: %s\n", stbid);
    : l- h! Y5 |! `' K: D
  86.         . Z( S! q3 H7 `, X$ h9 U5 n' B
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( h* P4 g0 C$ k" `7 Z9 N
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    0 Q9 @' i- C3 e0 Z' ~, g
  89.                 printf("Input MAC error\n");
    ; M, l7 c& n# D) X5 X, Z7 Z$ g1 L/ Q
  90.                 return 1;" e+ |7 {4 L5 r+ W  W1 d
  91.         }0 R. P5 H4 j* N+ s
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 f8 s8 e: a$ P4 ^) Q
  93.         printf("\nPlease input new STBID: ");
    ' N  Q# R) ^' g7 N$ g
  94.         scanf("%s", stbid);
    $ S5 C6 e  G) Q; N# n! N4 w/ R
  95.         if (strlen(stbid) != 18) {' k1 c- p% `2 x( c! m" b$ r; W* F
  96.                 printf("Invalid stbid\n");/ w( h' O& ^, y; N
  97.                 return 1;
    ( Z9 W3 C6 v& ~8 U
  98.         }
    2 s! s" T8 V# J( ]9 B) b/ @1 r
  99.         printf("\nNew parameters: \n");& [  X, A6 I; ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 l7 @8 `' u0 {" v! _' m$ s
  101.         printf("  STBID: %s\n", stbid);
    , h6 @1 F; I( S/ ]. U
  102. * a8 J( {- `, J+ b  V1 F
  103.         printf("\nDo you want to change paramemters? (y/N) ");! [0 S/ K8 y. j/ O# @6 j
  104.         for (;;) {; y1 K" e! T$ x8 g) G) \
  105.                 c = getchar();
    ( v# t; }* j$ M3 O' m# g/ G8 V
  106.                 if (c == 'y' || c == 'Y')
      ~  Q9 ?* V+ E& s& M+ j+ x
  107.                         break;4 K+ E2 V. }; P. e" O
  108.                 if (c == 'n' || c == 'N') {
    6 F8 M9 n7 i, W$ [7 X* b4 a0 L& n
  109.                         printf("\nAborted.\n");* I# S" H7 @3 [
  110.                         return 1;
    1 b4 P6 U3 u9 Z# J$ ?
  111.                 }" p& ^9 l( G% ?# C
  112.         }
    - G& e6 {7 v0 }+ |: x  c; u$ s
  113.         if (writeparam(mac, stbid) == 0)
    ! u' Y4 }3 J4 w$ r' X
  114.                 printf("Parameters changed.\n");  i* ~4 F. f9 o1 v* x/ J; Y6 J" [
  115. 8 U4 I& ^$ f! P# ?) R3 o
  116.         return 0;
    * S) m2 N$ I3 ~8 m6 B3 W
  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   f# }, J3 T8 c/ T" f) I: |  E
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
0 v# z- c- s' @/ W+ n- E  q
你用的编译命令行格式是什么?* N4 N3 j- _& [' u) u5 n1 b# i
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-18 21:12 , Processed in 0.023603 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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