找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15232|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; {8 Y0 i3 x0 b5 j5 n6 `
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig( Q( n. P4 _2 z! y" B3 h5 L( h! G% f
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 o; T, i0 S6 O4 h6 d6 a
usage: himr <address> <value>. sample: himr 0x80040000 0x0
+ M; e( i& M. E4 z, ?. }) X0 _1 [+ `! f
- {1 z5 e! e+ S3 t6 o. s7 l; j0 ~6 {' ^! x( f4 o
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?7 x, C; k6 W3 e. h  a- D
/ L5 a5 \* V2 [6 r5 E, J# U
补充内容 (2012-3-8 09:42):3 ^) s, |) i; Q9 g9 Z5 G+ ^1 u
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: w9 C% D6 T7 N这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
+ H# Y; N' y# ^8 X
2 ?7 \' A9 k# Q6 B8 W0 S) ]himr <address> <value>. sample: himr 0x80040000 0x0
5 @1 H) X7 A' x4 [! u6 T! ~( j; B4 w* g) ^
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: U, p. k% s9 Ahimr 0x80040000 0x00
; M) r& a/ e; e4 }8 {) W" S/ ~himr 0x80040001 0x11: f0 f- z" e0 g4 M$ K; U6 l
himr 0x80040002 0x22# I7 `2 {) u) e1 M+ l$ K; [
himr 0x80040003 0x333 ~' _5 ~1 ~2 ]" x* ~6 P" `+ `
himr 0x80040004 0x44
# E0 a! U( z3 }+ Uhimr 0x80040005 0x55
, u7 ]) h7 f, F( E
$ F7 G. [9 ?4 ?SN也是类似。
  C* b  @" o2 v  f1 B5 H7 d8 w! ?* D3 t3 Y: R/ ^  J3 G4 f
现在主要是,谁告诉我们MAC和SN的地址?# G) ~% n5 v9 f  B" a8 t% N
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  ]+ R5 R! e1 \2 c) [# F0 r) D一直想找到运程修改MAC和SN的办法,苦于无解啊

$ |0 _' \( P% e. p6 U% l" U源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; q$ u4 u, M) P* I1 [1 d$ [

. F2 d* {7 Z3 s* H& p修改的代码早有了。到今天不会编译。
) I, P6 W+ Q( \! d; x需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    6 X% G, J8 ^+ Q3 N. {
  2. #include <malloc.h>
    ( E1 _+ I% |! y. Q) O2 O8 k2 o6 |
  3. #include <sys/types.h>
    1 M, D1 s  s, J) w1 h  v. W
  4. #include <sys/stat.h>4 }* t" F' h+ f# l' z  i2 Z
  5. #include <sys/ioctl.h>
    + B" c! H( {& p* }
  6. #include <stdio.h>  `; q4 C* q: a, r; ]
  7. #include <string.h>
    3 a4 I9 d2 ~- s+ T4 ]1 k6 ~
  8. . m1 g4 U8 O$ f
  9. typedef struct {
    7 f2 p# x  ]2 R
  10.         unsigned int        e2prom_cmd_sub_addr;4 e2 Y5 B8 U1 ~- r
  11.         unsigned int        sub_addr_count;$ e* c* B- c0 j3 B5 i3 t5 v
  12.         unsigned char*        e2prom_cmd_data;
    - @% D# W  a% n7 i6 c3 f
  13.         unsigned int        data_count;. J) }  K, o/ f5 J) v5 F
  14. } e2prom_s_cmd;
    2 }. ~  ?# E& y

  15. 6 G9 ~3 s! _9 p$ ]; [4 t
  16. #define E2PROM_CMD_READ 1: k  G8 s; X% E8 e2 O. ?# v+ a
  17. #define E2PROM_CMD_WRITE 2
    0 u+ _( N* w1 H& g9 L5 m; T
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 b& t) z. W+ Z- n

  19. + e3 f  E# E% i2 q+ D/ j/ ?
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 n) }2 o) _8 o* D' D. @2 |  t
  21. {
    2 K6 p+ D% J! _* `, W
  22.         int fd, ret;
    ) E, U$ \# W  q! g, X
  23.         e2prom_s_cmd arg;; A6 P9 X" r/ y5 f6 C
  24.         unsigned char buf[0x18];7 w3 }6 ]6 M7 X' @: M. P; u2 _
  25. $ h8 X" @' ], u; ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 E( d7 z: b( V% c; _
  27.         if (fd  < 0) {
    : E6 G& o( L( R5 ~) M* D: U
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) n1 J- D+ d' {. r( W! E
  29.                 return -1;
    8 o4 X" J! u" F: T5 p* i$ p
  30.         }& _# u$ ]) O# Z* J7 }, Y4 L
  31.         arg.sub_addr_count      = 2;
    & m, U8 r) Q$ c2 d+ D" M4 n) j/ |
  32.         arg.data_count          = 0x18;0 T4 V1 _- y' }+ o) ~3 k
  33.         arg.e2prom_cmd_sub_addr = 0x290;( U; F7 N, P7 S# E% `
  34.         arg.e2prom_cmd_data     = buf;
    3 I+ i: `+ A  H8 S$ i9 l
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' H- H! |* v( T' E( C$ {
  36.         if (ret != 0) {2 f' [; ?" p5 F! K8 t& B" f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % S1 F; O* Y% J/ _
  38.                 return -1;% w2 ?3 m/ o  w8 i, q
  39.         }
    ) N8 J5 a: a5 V: i
  40.         memcpy(mac, buf, 6);7 S. ]: g3 w  j$ l1 f- b9 }
  41.         memcpy(stbid, &buf[6], 18);
    ! \. ]8 ?! q( j. Q3 T! d5 h
  42.         stbid[18] = '\0';
    3 ?& H& o% w0 r6 E
  43. 5 N& j: l7 Y5 J7 J' o
  44.         return 0;# p9 u3 q' v6 v0 X6 ^  C4 z
  45. }
    9 z2 x. w1 u  J3 w% q

  46. 0 ?4 s" A5 p/ N: M2 s% v5 Q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)) x3 @, }6 O& c# Y& L
  48. {
    0 r. A7 `. W3 N5 h! h6 n
  49.         int fd, ret;
    ( F1 T/ k4 i0 G& W5 O& b
  50.         e2prom_s_cmd arg;# @! a$ |5 l# I# }9 X/ Q5 f; A! x$ \
  51.         unsigned char buf[0x18];* s  G4 k& T/ ]# i( J7 {" W+ a

  52. 4 N& v) L: i/ z3 [! |2 m
  53.         memcpy(buf, mac, 6);& `7 E/ `/ F* j3 H) p- i
  54.         memcpy(&buf[6], stbid, 18);
    ) ], |0 a) W- X/ Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! G/ l, T) q+ o& y! {
  56.         if (fd  < 0) {; g1 K- l& G3 b% }7 B
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 p  }: P( H, ~8 E( w3 {
  58.                 return -1;
    1 |% ]! I; H9 m5 M7 Z
  59.         }
    . f3 }( r" Y3 a5 ?$ `3 u
  60.         arg.sub_addr_count      = 2;
    ) b7 W/ Y4 y5 u8 U
  61.         arg.data_count          = 0x18;
    ' f( T8 w! x5 o/ s
  62.         arg.e2prom_cmd_sub_addr = 0x290;* u* R) G1 R7 V# X  N
  63.         arg.e2prom_cmd_data     = buf;% z/ c* v3 _& L6 ~0 a" l. p0 I
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);) o8 X' m8 M5 j
  65.         if (ret != 0) {
    0 L7 E8 N( U, J7 r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- K" U: x3 ]: V
  67.                 return -1;# J) M, x- j5 Z6 O
  68.         }2 Y- N- b4 L* R; e" z& w
  69. " u0 c  D5 A8 N1 M8 p
  70.         return 0;
    3 y% r& y' K* u* C; }+ b
  71. }
    & }. W! t8 \( z/ o

  72. & D( g5 R) ^7 j! P; `: _
  73. int main()
    ! R! S' S7 i$ D0 ?, b
  74. {) O" j2 i4 L! {/ P2 i0 H
  75.         char c;
    & m6 j9 O: P$ G
  76.         int i, macs[6];, S- l: V) S. D) F
  77.         unsigned char mac[6];
    # a. S8 Q- c% n; @# h
  78.         unsigned char stbid[256];% E, ^# Q: I9 L8 h! i1 Q
  79. ; r/ Y  a) m. E6 N0 Y% b" z5 B' h
  80.         if (readparam(mac, stbid) < 0)% {; F' Y7 x( \6 v
  81.                 return 1;
    + E( u& j7 l: t2 [" l  |  k8 |$ j0 c4 u

  82.   V# \3 q4 J* ^9 d% C) p! W
  83.         printf("Current parameters: \n");
    2 ^% j4 j( z" ?8 E9 q  ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 d% z' j' }$ ~1 \: p1 D
  85.         printf("  STBID: %s\n", stbid);- d  F5 {" k& T/ Z( i( F# R
  86.        
    ) A) W; d! B; X. p  D
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 v& A' u' L! N5 n3 w6 k* w2 W5 f
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ @* s& i) ^9 o; G$ p8 A
  89.                 printf("Input MAC error\n");6 j# i) B9 ^2 _2 K; ]
  90.                 return 1;
    ; f1 d& h3 p- e: i# `- r  D
  91.         }/ G/ P4 H8 [0 s! v- J2 p
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% [6 d/ y$ M3 t6 J1 x
  93.         printf("\nPlease input new STBID: ");
    8 d, j3 l+ I/ i' {: r
  94.         scanf("%s", stbid);
    ( f, J# u$ _! |  R
  95.         if (strlen(stbid) != 18) {
      u4 _! `- N# ]- o& Y
  96.                 printf("Invalid stbid\n");
    0 r8 ]4 r6 L$ F
  97.                 return 1;6 K) _1 P! K5 @. n( ?4 w& x
  98.         }
    4 c3 b4 z0 c* d& U
  99.         printf("\nNew parameters: \n");) ?4 a6 D& O: D# L3 N* I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 `5 u2 Z- `- r9 a2 f7 P. x, i
  101.         printf("  STBID: %s\n", stbid);
    + `. X+ X; h7 U+ w8 J1 A; d" W
  102. 7 U0 H, G9 _6 o/ T: d. D
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 B2 v5 U& M- A/ F3 S0 A' k7 i
  104.         for (;;) {
    & \: d$ E1 Q2 o( J
  105.                 c = getchar();
    & S/ Y# e! r, \" u
  106.                 if (c == 'y' || c == 'Y')
    ! V' K# ?5 Z, z  `6 w9 z
  107.                         break;
      N' v8 Q7 {0 Q1 q& n$ D- z: K* k
  108.                 if (c == 'n' || c == 'N') {
    , d9 Z& J" b8 s4 c: @2 d- b
  109.                         printf("\nAborted.\n");
    0 n+ i# J1 T& v0 C7 [3 j
  110.                         return 1;
    1 U) t2 J6 ?" f$ M8 H3 ?& Y* ^
  111.                 }
    . X$ ^+ m. k7 f" l- O' J
  112.         }" h9 L& Z# v& w' P0 X; E
  113.         if (writeparam(mac, stbid) == 0) * Y7 k( _* G: C, n' x
  114.                 printf("Parameters changed.\n");" N* t' U: Y+ O, h
  115. & s1 o, k# {) f
  116.         return 0;
    . a4 o. `2 c+ Y
  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 l; V/ b% ?  p9 `
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

- ^& y6 |3 D% R# }3 `你用的编译命令行格式是什么?
) d; {/ L; B/ K1 J
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-9 07:01 , Processed in 0.497027 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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