查看: 16505|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr4 C) e& D0 H2 F; w
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) e& V5 b4 X6 M- f, b' h" U
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* K9 A0 k4 v7 a
usage: himr <address> <value>. sample: himr 0x80040000 0x0  |- I3 o+ t2 `) Q) A$ f/ V4 T* x- p6 w

9 U, X; [8 r: X5 O3 }  _% b% z. ^1 s  n
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?1 C7 A3 T+ \& l
1 E( [. U2 l* e( }3 Q3 t' R
补充内容 (2012-3-8 09:42):5 Y( L* [  r/ P+ x8 ?, i
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! e1 q6 d& W' z" P" s. @# c6 I这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
" u% S7 \( i$ [3 q! c) ^0 p3 G/ a. h2 K* N
himr <address> <value>. sample: himr 0x80040000 0x0$ {: Q4 }$ i& U3 y
6 k3 G( ?5 `0 [4 D1 G) Y: t
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, F+ V3 m8 W1 a7 i2 K
himr 0x80040000 0x00
  {: ^8 X2 v! z  q9 q( Mhimr 0x80040001 0x11$ G5 K- W5 G6 i
himr 0x80040002 0x222 Q8 Q) V5 E8 }; F2 X' R
himr 0x80040003 0x33
! G% {2 G# g$ \- ]  v( lhimr 0x80040004 0x44, Q$ Y4 p6 q% [( {' W( R) n8 M
himr 0x80040005 0x55
; [3 V4 l6 p, t, z( ^/ f; A4 h. U* C/ j/ F7 o
SN也是类似。/ M. P$ X* D* `. _. m+ F
) {1 Q0 e& X1 k. W. d# [3 f* r8 c: Y
现在主要是,谁告诉我们MAC和SN的地址?
! @8 K, O- R9 K* ^5 S/ C
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 |# z* L+ n& C8 L* y" m# O一直想找到运程修改MAC和SN的办法,苦于无解啊
/ K  X  f( Z# j& Y* j
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + v9 [2 k; C+ Y& R
" ^$ ~0 x4 ]7 \2 }7 A* l
修改的代码早有了。到今天不会编译。; A% b3 Y$ z7 d/ X9 z6 |
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* M* E( U/ s4 _
  2. #include <malloc.h>2 Q8 s4 b2 F9 C( j; L4 G
  3. #include <sys/types.h>
    " q) n6 ?# D  W0 L# C2 y# \: y
  4. #include <sys/stat.h>- F2 o3 O$ B, l! z& s6 u3 k
  5. #include <sys/ioctl.h>% |% O" T3 _0 {7 w, I4 `
  6. #include <stdio.h>! J6 Q7 f- I% i' b! {  N# l
  7. #include <string.h>$ k( z2 A: j7 ~+ J% t% K% W

  8. . p: M; t# h& S% h/ C0 e: o! [
  9. typedef struct {
    $ |  b: P( s9 @
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 q& Y9 e) i4 @( o
  11.         unsigned int        sub_addr_count;
    6 o1 E% ^, k3 w9 ?" o! g
  12.         unsigned char*        e2prom_cmd_data;/ p' }2 N+ Y' Z& z
  13.         unsigned int        data_count;# }- c' {! }+ [6 R, ^4 p$ y
  14. } e2prom_s_cmd;# k2 M. O" ?. W# T

  15. 9 z9 [% ]& [* }) t# n/ n
  16. #define E2PROM_CMD_READ 1
    & G9 y* v& C; N( B
  17. #define E2PROM_CMD_WRITE 2
    ; A0 X4 D( M) \* T1 N
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      Q6 y, N7 I  k" }0 u3 |. F
  19. 2 H5 V- @  Z6 u  o- h
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 v5 K) T$ t- X
  21. {# w, G/ X2 Y5 `) b4 M
  22.         int fd, ret;# ?( k% [8 ~4 m5 p+ ~
  23.         e2prom_s_cmd arg;
      r3 ]- X9 s" A4 U  m) W
  24.         unsigned char buf[0x18];( q& a/ N! F7 t* D
  25. ( a2 n' e+ q  J7 w% M2 X: V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 X# B2 \0 A6 B
  27.         if (fd  < 0) {
    8 R* u# C* K$ ^
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& N! s# H& ?/ o3 A
  29.                 return -1;
    " t6 Z2 C1 a9 z' L! y0 s
  30.         }3 |* {/ i4 n% n
  31.         arg.sub_addr_count      = 2;% `( Y& K- \3 _' e. X
  32.         arg.data_count          = 0x18;
    ' S; c. Z) u' f1 g" X* a
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / B6 m$ y/ k6 t" B6 Y& ~
  34.         arg.e2prom_cmd_data     = buf;
    3 V* X6 N( G# H+ @* C, S4 i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' G' @7 `! `+ u! B0 L2 @% `1 ?
  36.         if (ret != 0) {( }. U& `& Z" R* Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # T0 s. `0 v' f0 s/ q! y  b
  38.                 return -1;7 R3 a' v$ F% N  q; n7 r5 U
  39.         }
    5 _+ ]: x  @, y3 M; K  L+ e7 d
  40.         memcpy(mac, buf, 6);0 F, |# A9 N$ |) o3 \4 r
  41.         memcpy(stbid, &buf[6], 18);& n6 y$ a4 _8 V' L$ k+ x# m2 [9 {
  42.         stbid[18] = '\0';) D( t5 Y  z: r; [) [2 B
  43. 3 r$ y! ?  a" f3 E9 n- }
  44.         return 0;& \. j. r$ F1 M$ S# @
  45. }
    ; v* n. P! T/ h  G& u$ ^5 `- {3 E

  46. 8 i$ Q  v2 z! o: R6 d! F3 T: N6 ?
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 l5 g  L) d0 G* T+ s& [
  48. {
    * O' D! r2 ?5 g7 L# ~+ w
  49.         int fd, ret;
    & y' i1 E6 w1 Q" k$ Z
  50.         e2prom_s_cmd arg;
    ! E3 I/ B. _- x" A4 j5 m- A' D4 V
  51.         unsigned char buf[0x18];
    $ g; y6 B7 B3 U
  52. " ~$ S! k! F. O" A
  53.         memcpy(buf, mac, 6);3 J; e: D7 t& H! _4 B; D
  54.         memcpy(&buf[6], stbid, 18);1 K$ {( K$ A( X8 V2 h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' p% F1 ~' z3 l7 z7 L
  56.         if (fd  < 0) {* G) ?, Y. |3 M' D5 Q6 j
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) w+ c3 D/ W$ @6 U% D
  58.                 return -1;) G/ w1 r* W6 v6 R
  59.         }! }! k7 a! N( y# m' E) |& ~* ~
  60.         arg.sub_addr_count      = 2;
    , B0 _3 l' D) j' D3 [
  61.         arg.data_count          = 0x18;
    , Z" W3 a- A9 \& S5 v/ a% Z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : c! K4 P' ^0 T- s& S
  63.         arg.e2prom_cmd_data     = buf;( M' ^6 I7 n; H7 p/ ?& q0 z" `
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / L1 V- H/ Z) F2 a+ b( A: c3 U& x
  65.         if (ret != 0) {, s- e: v0 G. U5 z% n2 R; f; N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % Z8 }6 H, [+ q* ~  G2 P
  67.                 return -1;. Z1 Z# V) N/ _
  68.         }: p, q0 f5 a6 z9 S' S$ v6 P2 t& Z
  69. ! t: e) w* n/ x. K. |1 G
  70.         return 0;
    . p6 @/ M4 p/ S  Q3 U+ X2 P+ l
  71. }) _1 ?( ^8 n4 U2 U( ]

  72.   g+ z, {7 e; M( {0 L5 T' m
  73. int main()
    # e9 u, d! G" W* h  i& Z" G' H
  74. {# l0 j4 D! x, l* L# ]9 S  i$ y, R
  75.         char c;5 T: d# G) ]# f8 I0 T& ~1 @
  76.         int i, macs[6];. m+ ?6 `" m. x% l: V: `
  77.         unsigned char mac[6];! P' M* q! p: N( F4 Q$ u% ~  D
  78.         unsigned char stbid[256];+ G1 \. A* [: `' T" R0 z

  79.   A5 U( Q$ p0 z+ ~
  80.         if (readparam(mac, stbid) < 0)* z* }, ?" e% ]4 M9 f6 s: Y
  81.                 return 1;
    3 ~- C0 |8 r9 M& i% t

  82. ' c8 A, _. Y" u9 M  s  F0 Q
  83.         printf("Current parameters: \n");
    + g2 b" n/ b7 w- z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ x: G$ U0 K9 V- ^+ p8 d
  85.         printf("  STBID: %s\n", stbid);
    . |2 ^9 Z7 e8 z& i( t  U( q7 b, h
  86.        
    % W, N# i! r/ r2 c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ c3 }6 F; r8 G3 J2 C
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 O# @4 W% L7 n! _
  89.                 printf("Input MAC error\n");( @) _0 k2 P+ \8 B/ Y# ]6 [
  90.                 return 1;1 V) Q: C1 y6 @0 z8 v8 g7 |
  91.         }9 r6 M' y; C$ z8 O1 z. B1 {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 t# z1 X. O# D
  93.         printf("\nPlease input new STBID: ");8 {& \$ W4 h; H$ S1 X. c
  94.         scanf("%s", stbid);0 @. Y! w. U# @/ p4 B+ u6 R
  95.         if (strlen(stbid) != 18) {
    " b) d# r, g; `& U2 u
  96.                 printf("Invalid stbid\n");
    3 I% m% [* @* e: o: M/ y
  97.                 return 1;
    & }" }1 Y. W* g/ V0 I6 {+ p, D
  98.         }; J' t" W& g  Z. @- q& [
  99.         printf("\nNew parameters: \n");
    % c1 o+ p5 C1 G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 S9 H) v5 ^4 H- R
  101.         printf("  STBID: %s\n", stbid);. w( Z" X6 w% e7 \8 K  c/ S- a

  102. . q* z1 n& J3 u! R2 I4 S: _+ k+ _
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . e+ w; C1 B3 W
  104.         for (;;) {
    ' V: D) F+ g, h% `
  105.                 c = getchar();9 ]" d0 s) p! V$ N6 m
  106.                 if (c == 'y' || c == 'Y')
    1 J8 P; g& t) _. A# @: ~2 p! A
  107.                         break;3 w& _9 K7 F2 V
  108.                 if (c == 'n' || c == 'N') {
    , s5 C5 w6 @$ i7 S4 a: h- _( j
  109.                         printf("\nAborted.\n");: ~0 t% P4 B. t, x& Y2 m
  110.                         return 1;
    ! ^! q, r) x, q9 ^1 ], b, O5 z4 E
  111.                 }% Z" d. Z: D: l. C
  112.         }
    % P; W, C+ P0 J0 M
  113.         if (writeparam(mac, stbid) == 0)
    ; q8 V+ m' z9 P: w+ K5 e# @
  114.                 printf("Parameters changed.\n");
    5 [; V! ^3 j" s% K- o
  115. + h# h' i7 }9 H) ~  `7 F
  116.         return 0;
    1 n1 y! f; m* [* g
  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 # z7 Y  K: h5 x
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
; I# I3 m% s) \
你用的编译命令行格式是什么?# K. L% ^3 G0 D& @+ v5 X+ ~8 C4 p
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部