找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15697|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr7 K' a6 r# I# f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 p1 l6 l' o; y( _8 u. h
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; k4 b( L7 c1 }* i
usage: himr <address> <value>. sample: himr 0x80040000 0x01 w! d8 X2 ?7 ]# P: F; S

( W- m( a9 ~0 g
* O' h7 k7 I  V- \不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 \+ L, @! i) c. r+ ?! I& K

. j( Q) @; z1 x1 \! H补充内容 (2012-3-8 09:42):- N) w7 F* v7 ~, d+ P9 Y+ g
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ x, w$ n! x+ s$ ?3 y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。) a- W# A7 K& Y0 f' L0 t/ Z; f

* Z, |& Y  K$ Uhimr <address> <value>. sample: himr 0x80040000 0x00 k, m9 i9 H/ n) }3 f
3 Q' l8 }3 U- r' _* W" Z: j; V; Q- X" j
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。. P0 ?' u( i3 y  s: F- Q  O- d1 i
himr 0x80040000 0x001 l# u- j; |% U1 w3 U
himr 0x80040001 0x11
1 n# H/ X, _( n! y1 vhimr 0x80040002 0x22. I9 \7 e; t% F
himr 0x80040003 0x337 ^  o4 P/ f% K. z7 ^3 [7 a
himr 0x80040004 0x44/ K8 w, @# Q0 f7 X% Q) \) o8 T- l) ]+ g
himr 0x80040005 0x552 b3 i! b2 p% M# S$ k+ a4 l; g

9 ^' V% s0 ^* z3 P6 B7 JSN也是类似。# o1 m* P' m+ N( K/ O5 H
2 o) P; _8 o7 `# `$ \* b) c: V
现在主要是,谁告诉我们MAC和SN的地址?# C7 S- l. |+ `, X8 \6 D
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 C. |) K0 Y9 g0 h7 N0 P一直想找到运程修改MAC和SN的办法,苦于无解啊
; V' k# F7 d% E9 \8 ^  K2 V
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
7 J3 \1 `8 r1 a5 q2 d" }
5 J; i" D# b3 L修改的代码早有了。到今天不会编译。
1 s* ]3 O  `7 m8 w3 T需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" c6 K+ R) `$ i; b( r( z1 O. U  h
  2. #include <malloc.h>/ C; r8 |* H! Q6 ^; @5 w
  3. #include <sys/types.h>
    , ~0 O& t8 b3 i, m
  4. #include <sys/stat.h>% L6 {# V" ?4 t
  5. #include <sys/ioctl.h>, S4 w" }& y2 E1 c
  6. #include <stdio.h># J! x( W! ?. Z2 _
  7. #include <string.h>8 {! p% u+ v: [2 Q, E# }$ V& W! q; |7 v
  8. - N$ @$ x% G# p. G
  9. typedef struct {
    0 {$ o; B# E9 A3 `. v2 W7 y/ ^! x2 p
  10.         unsigned int        e2prom_cmd_sub_addr;) Y& W, K- z9 m. p
  11.         unsigned int        sub_addr_count;
    ! }- |: ]: C) M1 o
  12.         unsigned char*        e2prom_cmd_data;
      H' ?  T1 v+ U% J9 T, e- H
  13.         unsigned int        data_count;* J" V4 i" x9 E( d# t& T, k8 p9 V
  14. } e2prom_s_cmd;" ^% ^" H$ a0 \2 `
  15. 8 i8 J4 u" M8 d3 D
  16. #define E2PROM_CMD_READ 1
    " W: E1 s) X' B* x# t  L; r0 D
  17. #define E2PROM_CMD_WRITE 22 q  k4 @# a! S. N( o
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    3 Y$ O6 t2 B: ]1 W

  19. # x; o3 n0 P: V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : V# O( f  _5 S' N* F
  21. {
    : I. r$ K" e3 Z/ n2 M9 x2 |" ]" ]& P
  22.         int fd, ret;
    1 L5 [( M; u2 p# Q1 H
  23.         e2prom_s_cmd arg;$ q0 H: O6 O* ^3 \& L+ @, W
  24.         unsigned char buf[0x18];
    2 v* P* N# x' X' Z. X. g8 {% V7 |
  25. # g  E# L6 q2 G9 \8 i% b  b1 U+ m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 }- I4 }) d1 }& u+ P0 o) S
  27.         if (fd  < 0) {
    2 A; _) `! u+ V7 i) M% `3 L1 H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 D( Z  d+ F+ I6 _) B$ _: S; {
  29.                 return -1;$ F; C3 Y- q3 B4 G0 O6 `
  30.         }
    9 N4 }3 q4 z0 `3 }: x
  31.         arg.sub_addr_count      = 2;& ]0 v9 Z1 Y/ K& f
  32.         arg.data_count          = 0x18;' I/ c+ T! `$ i+ ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    # E6 q  r/ B8 k$ W9 m8 |
  34.         arg.e2prom_cmd_data     = buf;
    0 T; I4 T- ~+ g* ?( ?+ R* N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: `/ n# }. h4 [
  36.         if (ret != 0) {/ w9 _3 @& `8 M; O" x
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ( z, w9 G/ z3 _/ s- r# U% w6 ^
  38.                 return -1;
    * T1 z0 p9 K/ j; C9 n) s, t
  39.         }
    * u: U5 p6 Y! E( f
  40.         memcpy(mac, buf, 6);( [. u2 @0 }" U
  41.         memcpy(stbid, &buf[6], 18);
    6 m# j' E, o  ~0 y
  42.         stbid[18] = '\0';
    # V( `( A3 R3 w& s
  43. + N0 k. L9 @- Y- e/ Z- W$ \) s3 I
  44.         return 0;
    / U6 l3 L( I" p
  45. }
    2 d  L; v# _0 R- j

  46. 1 a) y" b8 @+ H0 h5 k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : w2 K" E0 {6 D- ^. O$ A0 Q
  48. {& t' n. Z! D& \; U9 b3 ^
  49.         int fd, ret;! ^) ^$ L0 V- c) H( D
  50.         e2prom_s_cmd arg;5 f8 ]7 _" E7 }7 o/ j
  51.         unsigned char buf[0x18];: P4 u# L3 q& w
  52. * G7 j' G- o% B. M2 M
  53.         memcpy(buf, mac, 6);2 K- }& D0 t; W  M6 l, _
  54.         memcpy(&buf[6], stbid, 18);! h4 x4 N7 L1 U0 v7 m( G
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 u- x9 S% L6 }* j! a. i( [2 z
  56.         if (fd  < 0) {
    - a! a2 H$ {9 s# @3 z  A( ?0 O' j: p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);" E# S3 a5 I3 i' q8 n* E& O
  58.                 return -1;8 ^, v6 p/ X( K' {6 z" U$ m
  59.         }
    1 g4 z2 }" ?3 ~% o% y: @/ k- r, V
  60.         arg.sub_addr_count      = 2;$ m% ~! O% I# K1 [& g
  61.         arg.data_count          = 0x18;$ S; l0 C0 F. b, n  x
  62.         arg.e2prom_cmd_sub_addr = 0x290;" p0 L: J' G% w
  63.         arg.e2prom_cmd_data     = buf;
    ' L* h# ]. K6 [/ j
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / }7 _& \6 h& P; n2 Q
  65.         if (ret != 0) {. P, Q7 S3 Z  K+ }; M/ X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . k3 S# [' m" _) _
  67.                 return -1;
    " k' L' ]% ~0 l2 M' _: k7 B
  68.         }
    : ^' n$ {) d/ w; Y$ Y' g: Y- G! y
  69. # z7 x/ I! D( Y3 D9 A- U+ p& L4 u
  70.         return 0;
    4 c" y; `& i3 F5 A2 I
  71. }  M% x0 y* n6 f9 Y1 J

  72. * }+ k5 V- V) R9 c
  73. int main()
    $ @5 g9 }$ t2 I5 P, x: |1 D6 J
  74. {
    + a$ t$ N- O& o. g2 X5 C0 i4 O! w
  75.         char c;
    % j3 G9 d1 w" c) C- e
  76.         int i, macs[6];
    0 ~' U2 ?  B+ @  p, F- R  V, _" `7 ?4 Q
  77.         unsigned char mac[6];
    ) T6 o! T: s) j+ m
  78.         unsigned char stbid[256];( l( \- \2 C* ]$ `: w/ [' W
  79. ( m4 Z6 M8 @/ t4 L) R* F8 ~
  80.         if (readparam(mac, stbid) < 0)
    ! P+ J. z6 G7 I& e% A
  81.                 return 1;8 d9 x0 Z# x6 W

  82. 0 U0 Q/ a+ ^! k  Q
  83.         printf("Current parameters: \n");# _4 i* z( W: H8 d/ n; r+ J
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 s( J+ n8 f$ o' z, m3 w7 a
  85.         printf("  STBID: %s\n", stbid);
    6 y! ]+ f( M- I7 A: e! `( q* p) D' T2 K
  86.         6 _1 _5 g3 s( G; i4 C8 b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");9 u. G- V1 L5 t' q% `* t& b/ A
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - R& s) Y  Q) C. h
  89.                 printf("Input MAC error\n");3 h3 A7 a; a; H$ `2 q6 F
  90.                 return 1;( f) O" b% Z( t1 E
  91.         }' i; P! ?9 j! r2 q- c5 r
  92.         for (i=0; i<6; i++)mac[i] = macs[i];, d% \; X- F# m4 D1 h5 K
  93.         printf("\nPlease input new STBID: ");4 U' m, V* s* `; X( \% p+ ?
  94.         scanf("%s", stbid);
    " a* e% E- o! P, \9 K
  95.         if (strlen(stbid) != 18) {2 R" J( i( C' _6 d* Z
  96.                 printf("Invalid stbid\n");
    % l) n" J. ]6 Y5 L9 k7 W
  97.                 return 1;
      Q+ N* n! s2 m
  98.         }! `; W. K4 b7 B. }- J5 t
  99.         printf("\nNew parameters: \n");
    ! e9 Y$ Z% G4 A) y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 |$ X: U+ L( v; N) y6 _
  101.         printf("  STBID: %s\n", stbid);# w4 ?( d0 U" |* ]+ x
  102. 5 A/ K+ ^: o0 m4 E
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 R* n4 E4 C% R! A" i' J0 k' e
  104.         for (;;) {0 K1 f* |' q- P" t
  105.                 c = getchar();
    5 o. y) Q: m& D- b5 ^* |
  106.                 if (c == 'y' || c == 'Y')
    / C# c7 |% ]( ~" l: v/ z/ \
  107.                         break;' J9 k7 R5 t7 A' m' k
  108.                 if (c == 'n' || c == 'N') {
    " L! F1 `8 z  d# S: f2 x
  109.                         printf("\nAborted.\n");
      m# M0 _4 ]+ z3 k
  110.                         return 1;
    + T+ r# Y. \4 d: R4 [6 s2 S2 o
  111.                 }
    , n; b# E  G3 m: h9 A0 _7 b  u6 Q
  112.         }) h9 i" n- x- @. y& _( g9 C
  113.         if (writeparam(mac, stbid) == 0) 1 g' I& L: i2 E, ~
  114.                 printf("Parameters changed.\n");
    2 f/ o- G# ~. k1 ]6 C4 Y8 B7 x
  115.   N8 y% R* M2 o' l
  116.         return 0;# G8 H! u: r! a% _$ {3 C8 p
  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 7 g/ c7 D& L$ m( F( {7 h) F& R; P
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
. I% L3 D( t7 Y- `: k
你用的编译命令行格式是什么?2 o; I' Y% {  C0 K4 f
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-28 21:29 , Processed in 0.025220 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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