找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15324|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr( T% y4 H3 n3 u, p+ i
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ t0 o: \! h1 ^0 F5 ]3 i
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' Q1 c2 G: R: q& s
usage: himr <address> <value>. sample: himr 0x80040000 0x0
* q& o  R# `% `8 _3 I# R, K0 u* \+ M, z8 l! m
- n8 o8 o. `1 L- A7 ^. {, Y
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?8 A$ e, D) C% n* K- i' Q" F4 J, s. X
' R/ K( s9 ^  Q/ `6 A" k6 |7 h
补充内容 (2012-3-8 09:42):
0 `1 L+ Y: T( ~% Ihttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ ^$ w# F% s7 V2 ]这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 L) ?5 X. N1 l* h% \

9 B0 a/ z+ }! E, T% \himr <address> <value>. sample: himr 0x80040000 0x0
7 ^* f8 A1 b/ S: K; O2 f) _2 |# ]' `
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
! p; X+ k8 ?; ]' ~himr 0x80040000 0x00
8 b$ c1 E' q  f1 khimr 0x80040001 0x11
: V! o& S. d. s. Q4 }/ @5 Y9 Qhimr 0x80040002 0x22; f: n: J  E7 w
himr 0x80040003 0x333 i9 b7 l3 ]4 S  j" ?
himr 0x80040004 0x44# v! h  a) y' l; D
himr 0x80040005 0x55
) D* v7 C7 g( e, g
4 _' @' f& X; ^% K/ U" B- A2 Z  fSN也是类似。
( Z! G6 q) y0 U9 g" \; @7 p3 Q* n! D8 c0 Z5 k; I& k& r
现在主要是,谁告诉我们MAC和SN的地址?
# l0 m+ t" j3 J; K% l; {, C
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
' v7 P: x- e/ X8 D% {+ Y一直想找到运程修改MAC和SN的办法,苦于无解啊

; ?1 K1 ]9 Y! y8 j5 z$ i2 B1 \源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 2 P0 ~1 z/ H! @5 m5 u. @& D' M
1 a5 B4 T3 a& u+ |
修改的代码早有了。到今天不会编译。
' j6 O( }+ E" [( c- ^' i需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) h0 O* k! S+ [9 r+ S" ^, A* ^
  2. #include <malloc.h>: @/ S1 }# F" V
  3. #include <sys/types.h>
    ' Y: h, b5 f  V( s
  4. #include <sys/stat.h>
    " }! y5 Z& @/ W, F- M! L
  5. #include <sys/ioctl.h>
    - P- ]8 t9 U6 e: g& E& G% d# j. s; T  l
  6. #include <stdio.h>1 E" H) H  ?5 K# x
  7. #include <string.h>+ V% B) B- i8 e
  8. % z1 k4 ?! u1 E/ _9 {; C. r
  9. typedef struct {
    ) P8 ^+ n4 u/ i* J6 a
  10.         unsigned int        e2prom_cmd_sub_addr;# j+ }7 S7 B/ L
  11.         unsigned int        sub_addr_count;
    ' I$ h  J$ h# ]- P
  12.         unsigned char*        e2prom_cmd_data;
    # v) h+ o. g# D  V. {: t% n
  13.         unsigned int        data_count;3 r% H7 q1 M# ?% ?0 d
  14. } e2prom_s_cmd;
    $ X4 c: y  b$ e, U4 O

  15. # a# D. Q, `: u
  16. #define E2PROM_CMD_READ 1
    : n# ]0 e* o0 N0 q( }6 n
  17. #define E2PROM_CMD_WRITE 22 s" l+ }- S' o. S1 X- L
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 u7 `) z  e  i8 j8 `: U4 `* q

  19. 9 [: ~' Y% m3 ?8 J4 V4 d" q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& c/ d  E$ T0 [+ a2 P( s. m
  21. {8 h) o( }! F+ `( e/ l7 u
  22.         int fd, ret;
    $ D5 R+ t+ L6 F) _
  23.         e2prom_s_cmd arg;
    ( E6 [+ c) w* Z& o7 n: E( b, D
  24.         unsigned char buf[0x18];
    5 J% ~. h( c$ |' n" [

  25.   m% @% Z1 A. v/ D
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 g/ `  R$ \' U* L( @* W
  27.         if (fd  < 0) {, R1 A! Z' [) a: ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ Z, A: k4 i+ n# l; v2 K- h
  29.                 return -1;
    # s  f+ H* D" @0 _( {  s
  30.         }
    6 Z' l5 O$ L. z9 y. y& ?
  31.         arg.sub_addr_count      = 2;7 R  [  Y% ]9 M- Q3 h+ O1 _$ X+ I
  32.         arg.data_count          = 0x18;/ F% ~7 ?" P4 O* z" n. P! M
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    5 ^, K5 H- `' z" O% w+ _. ]0 c
  34.         arg.e2prom_cmd_data     = buf;; \/ [0 _0 Z) h& c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' q" c( d) T" I# ~& d, ^( i. n0 I
  36.         if (ret != 0) {
    6 v% y5 k+ R7 J- S1 i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ L. t: A. D, B0 U" r
  38.                 return -1;
    " g, r) Q1 I6 Q4 `  z
  39.         }
    ) C5 v8 m( r" t: D' D- U, W: F+ n
  40.         memcpy(mac, buf, 6);
    ( r; r: K3 f/ i- @& ?! Y6 _
  41.         memcpy(stbid, &buf[6], 18);
    ( c( r; ]  k, q) Y( V; a5 [
  42.         stbid[18] = '\0';
    4 s$ \8 t. d- k* c/ x8 n

  43. 4 t! A) [3 u; R! f
  44.         return 0;
    ' `7 @( K* b* ?8 }; M3 n0 C, P
  45. }3 T  y( e1 H! \7 y3 @

  46. ; U/ c- V2 h$ w' n1 X
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! v% Z7 S& x$ E8 y; R0 Q
  48. {
    0 M. `! L  K9 M# q/ J* V; u
  49.         int fd, ret;
    ) A" [  g! U3 Y2 F+ p
  50.         e2prom_s_cmd arg;  f4 U  z1 L( `8 q# ?* P3 \
  51.         unsigned char buf[0x18];0 r$ f# h3 A2 r- T  q2 e7 ]

  52. ! ]8 p/ Z* A8 A/ w8 J
  53.         memcpy(buf, mac, 6);
    8 `2 U4 b& [$ r
  54.         memcpy(&buf[6], stbid, 18);
    - K) }! L) ]/ N0 p5 U: n& y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 b) c" A( f0 S) h3 Q. a5 c
  56.         if (fd  < 0) {2 y+ z& e! \. |* z7 J/ p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  F9 S) c! V# D& e  O5 I" p
  58.                 return -1;
    0 \, W! ]- h' O, R8 Y
  59.         }8 n! F9 B% }( h! ]; z9 u) ^. j2 S
  60.         arg.sub_addr_count      = 2;
    $ }) |$ u- Q5 A) I
  61.         arg.data_count          = 0x18;! \1 S8 w# I/ q4 C+ q5 u* w
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 a  u) |: B, T& |. F4 ^8 u5 Q- u3 W
  63.         arg.e2prom_cmd_data     = buf;
    ( W+ ^& m! p* B
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);! w  S; C& q7 I# Z, k
  65.         if (ret != 0) {- E, H% `5 R5 O9 }- u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    & ^/ U9 C5 \3 O/ ]3 C2 m" B( M3 J6 n
  67.                 return -1;
    9 a4 l7 o0 I& z+ e) l
  68.         }7 L; W7 a+ f4 `- x, t
  69. - i( {) p) K3 F: o- L0 T- X  {
  70.         return 0;
    ; b# l" ]& h. Z% q/ _
  71. }
    - n7 `3 T; w( y; \1 `

  72. ; C+ c& v! n0 K1 C* l" O9 y7 p& H8 v
  73. int main()1 t) N$ ?5 O4 G1 d1 t/ s
  74. {
    # F1 P1 s  L/ N/ s
  75.         char c;
    9 \, k2 a$ C6 i4 j6 Y" s' k5 A1 {7 O
  76.         int i, macs[6];9 C# [$ h5 T) l6 L" P, `  u0 V
  77.         unsigned char mac[6];
    3 I# k2 i& [4 d( ?$ K2 R$ P
  78.         unsigned char stbid[256];
    ' C3 d9 _) i. |' z! W7 |8 j

  79.   I4 L2 ?8 d6 k5 `  T! u( X" O
  80.         if (readparam(mac, stbid) < 0)
    $ M- M4 S$ Q2 s. Y8 b/ ^
  81.                 return 1;7 x" \  ~+ x& ?0 m! Y' _& w0 S
  82. $ e% `2 b- ^5 s0 j- R
  83.         printf("Current parameters: \n");6 _7 v7 |* }; v# K! b1 A+ [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; f( t2 W5 ]+ y% o7 F! t/ ^
  85.         printf("  STBID: %s\n", stbid);
    . a$ r* H7 a* I( \* n9 H1 B
  86.         : y7 m! T. N8 [: s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( j3 F5 r2 O2 s2 M: c/ s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ) h5 S& M3 @  ?. g6 Y
  89.                 printf("Input MAC error\n");
    + F& L% F2 L2 f+ }3 p
  90.                 return 1;
    5 {- X% |5 k. u0 T$ p- I! Q. Y
  91.         }
    - D, v7 l- h- i9 D7 B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( M. \6 M0 J$ e9 p
  93.         printf("\nPlease input new STBID: ");
    # S# c  m, A3 k
  94.         scanf("%s", stbid);6 p5 q! ^1 Q. M% `  _% i' ~# G7 B
  95.         if (strlen(stbid) != 18) {  w( h: s0 z9 f) ~% T! i# G8 m
  96.                 printf("Invalid stbid\n");8 e6 [1 c$ t+ o! a
  97.                 return 1;
    1 ]& U9 C, M6 E3 q& \
  98.         }
    " e# o, v8 ]! X6 B# o: H* l6 i- l6 t! A
  99.         printf("\nNew parameters: \n");
    2 c  }4 p4 N9 N) |% [9 m4 \9 T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + x/ ^2 J7 m* J  k7 C
  101.         printf("  STBID: %s\n", stbid);
    8 b; ?; {6 }& t7 J' F
  102. % y: B; J2 y6 ~' l5 U. ]/ m* f
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - `* N9 z" l, d& k$ q9 F: k
  104.         for (;;) {* V6 S/ W% y/ Z5 ~6 s& D
  105.                 c = getchar();
    . d6 _) u0 V  l2 F% j* X
  106.                 if (c == 'y' || c == 'Y')7 N) y5 V1 W$ f% M$ A8 [, X1 y$ C
  107.                         break;
    6 K+ q+ J' @5 O# h
  108.                 if (c == 'n' || c == 'N') {/ I! |8 r& Z$ x/ z) z3 p
  109.                         printf("\nAborted.\n");
    ( q* Z  j3 Q: g. z; |
  110.                         return 1;# n0 [1 j; j* X) b1 c' X
  111.                 }& x* h+ L" s: q! t: |
  112.         }
    9 O" t0 ~$ Q- F
  113.         if (writeparam(mac, stbid) == 0) / A, Z7 ~& o# a+ C, z
  114.                 printf("Parameters changed.\n");- c4 R6 A& O) f. i0 D9 c

  115. - W+ W4 @- Q0 {8 P1 n
  116.         return 0;
    & U9 P' o1 K. |2 }
  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
2 Z9 Y$ {5 k% S! L' k' J5 }9 C8 ^在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 O- ^) M# g/ Y& k0 \' h你用的编译命令行格式是什么?  w, ^1 x/ T# k2 i5 W6 Y8 X, J, o
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-21 21:23 , Processed in 0.051789 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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