找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15359|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 j! R# s0 @& Y9 y: c
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    " e- ^. ^3 ?4 A0 g! `9 J8 B2 y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' P! V' S& J2 `( e0 }4 W  T0 l
usage: himr <address> <value>. sample: himr 0x80040000 0x0
3 w& J* C7 B5 a* n- B! s2 m) P; n/ E+ }
2 N: ^' W3 _( K" U7 ~& H$ d3 ^
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 X* Y# o' O! }
" I) |# s( X1 A4 h9 Q补充内容 (2012-3-8 09:42):
! I# q+ v) e9 J0 O# C2 mhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 ^! ^  W( F, m8 @2 w$ h9 @8 w这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。. L- h! C% W' B& ~7 ^$ {

# X' b4 y7 R& E: H5 y1 }, Jhimr <address> <value>. sample: himr 0x80040000 0x0
- s5 W: i0 p$ c( I! C
- r8 g1 m* b+ W* e( v$ K- P例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  r& i6 ^  p% s0 \- l
himr 0x80040000 0x00+ M5 m  F( N( L2 S0 C4 y- ^
himr 0x80040001 0x11  E8 j# U. _% w, b6 j
himr 0x80040002 0x22
$ O8 S8 ~: |) n0 khimr 0x80040003 0x33
& h* G% v% x" U) Y9 z" K; Vhimr 0x80040004 0x44
& @5 V5 G( _1 b5 l" N3 w- Yhimr 0x80040005 0x551 s" a6 N+ s) }: ?/ n
% O1 z$ G! X! N- `3 k2 r7 E, A! ?
SN也是类似。$ ]$ \& v# D( k& ]; O* S( x

+ L9 X0 O$ a; z, f5 w' Y现在主要是,谁告诉我们MAC和SN的地址?
1 [9 W, f. k! j  S: L- c
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- l$ \/ ]: R! Z% m5 ~" Q( J一直想找到运程修改MAC和SN的办法,苦于无解啊
' [8 C( ?+ H" T6 h: W
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! u) t! T3 K5 X
9 p5 I) O, }8 a6 O8 f! n/ R
修改的代码早有了。到今天不会编译。* q9 v0 m9 ]! t9 U) Y4 h: h
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    * j5 Y$ i4 ^* `) }
  2. #include <malloc.h>- f: s0 ]9 x0 ^* f+ r! g" A
  3. #include <sys/types.h>
    8 m, X' |7 W! F' ^
  4. #include <sys/stat.h># I& ^3 j' ~  M
  5. #include <sys/ioctl.h>$ }2 X2 a+ ?: t* K% s. |+ k9 x) ?3 E
  6. #include <stdio.h>* g" U4 h+ b3 x$ Z3 l# e! r; K7 s0 Z
  7. #include <string.h>7 Q2 u' I3 a' ?
  8. & e. w& S2 C, R* m- a8 a, K
  9. typedef struct {
    ) C; |1 _/ R% {- w6 T' L
  10.         unsigned int        e2prom_cmd_sub_addr;( A6 B% A& g' f+ p& W2 m
  11.         unsigned int        sub_addr_count;
    " Z3 z! d' B, T! D
  12.         unsigned char*        e2prom_cmd_data;% J/ W& C1 w5 c& B& A
  13.         unsigned int        data_count;. J, u0 h$ _( W/ Y
  14. } e2prom_s_cmd;& r3 t! M& B. s7 l0 ]4 X  o3 m

  15. ' _' ?" ^3 c5 O
  16. #define E2PROM_CMD_READ 1$ B9 n3 f# i+ I8 W
  17. #define E2PROM_CMD_WRITE 2% Y7 N) ^$ S  d: ^
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . w. B4 z! b/ f
  19. ) D3 [$ ?9 L, `! l- O, h1 Z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 `7 {4 g' k- Q* L; B4 j" ]. A
  21. {
    8 W, b! E8 p" Q% S$ @; `& X8 I
  22.         int fd, ret;0 P3 B6 Z+ |3 [; w& [6 `. F
  23.         e2prom_s_cmd arg;9 {8 e" k1 _0 N) h- x5 l
  24.         unsigned char buf[0x18];% g. w, ]$ I3 z5 j0 {! C8 ~& V1 S
  25. 7 s; E/ o  Z8 \3 |$ ]% z. N. h; Z" f
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 _$ D3 s1 g1 u1 r9 D
  27.         if (fd  < 0) {
    3 Z4 v. @( |  K! b- d
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 V6 ^- ?' E: b2 K$ }
  29.                 return -1;
    8 k/ k; f5 y9 e. K% l
  30.         }! w' R- z7 @4 l* @* W$ z
  31.         arg.sub_addr_count      = 2;1 r8 ~% t0 O4 f$ X. C
  32.         arg.data_count          = 0x18;
    9 _2 z" g: ?  |/ j
  33.         arg.e2prom_cmd_sub_addr = 0x290;; [* T% i- c& {
  34.         arg.e2prom_cmd_data     = buf;' {- D. h: M: }  v, }& g( o$ Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);/ _. H. M- e) r! x) R/ |
  36.         if (ret != 0) {
    . ]' g" h8 ^5 r& s  S% Y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, t4 G* t7 X9 u% q5 J5 G$ ]/ I/ F
  38.                 return -1;3 x! D5 d8 o, X: K, o! ~
  39.         }7 `) I" M: y5 k0 z
  40.         memcpy(mac, buf, 6);
    ; \5 m0 U+ J/ y" t
  41.         memcpy(stbid, &buf[6], 18);
    * V8 U& @) ]* d0 f/ L$ x- x, H, h- y
  42.         stbid[18] = '\0';! f+ \9 Z; f: \( V$ U# E
  43. - H, K) w& k1 h3 w5 t/ i2 @; }$ |
  44.         return 0;
    + w* f4 K2 q, }/ Y" N/ n
  45. }
    2 u2 J- d) ]; L' c% N9 E

  46. 3 S/ W/ E6 V) z% c7 V4 v
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    & Y1 H( a+ ^# R" r$ Y5 `$ a$ z. \
  48. {$ a5 l- c' N0 b. d
  49.         int fd, ret;. n+ q1 k; Q6 ?3 ]% j
  50.         e2prom_s_cmd arg;
    " O3 ]& [! _+ R& l
  51.         unsigned char buf[0x18];; I+ w% ~: ]/ G0 c. P) K6 W7 r

  52. 2 N: j* P' T! G9 m- e
  53.         memcpy(buf, mac, 6);. `) E1 m3 C# R1 f* }7 Q
  54.         memcpy(&buf[6], stbid, 18);
    & A& S- K* A& j) r3 T5 b
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    , m" n9 f2 |3 ]
  56.         if (fd  < 0) {( ^8 x1 [; L; l, ~
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 t* _7 `7 h( k3 }1 ?
  58.                 return -1;
    - Q4 f* Y3 ?8 X4 h5 U4 ]* o
  59.         }! [, B% d. }( `4 ^- }
  60.         arg.sub_addr_count      = 2;
    : q/ t: M8 A* F" b
  61.         arg.data_count          = 0x18;- g1 K0 x0 D% @" p+ P) p
  62.         arg.e2prom_cmd_sub_addr = 0x290;' K- G* r' {- i) o5 F. ^
  63.         arg.e2prom_cmd_data     = buf;
      T% N5 _5 s7 f3 p3 f. M: s% \
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);* a0 m9 b- C* U& k2 W( F9 J$ }- k
  65.         if (ret != 0) {
    ; L9 M' \/ u2 x- A" g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 U- B: j) x! f. m/ Z$ [1 R5 U
  67.                 return -1;' x& A' Q* i! R- I) Q9 ^
  68.         }* Q7 u8 E4 Z8 e/ [# [

  69. + h$ ]3 @& B+ m  ]; z; s
  70.         return 0;9 e# g) E& J3 `& u4 q2 X
  71. }
    : O; N2 z/ G4 w4 ^4 D: G+ H: Y  F

  72. $ `: w  _" O: V
  73. int main()5 L6 h$ ~+ U2 g# m) g
  74. {' m" y) o" k6 j, Q
  75.         char c;
    / a9 j2 H1 t, f3 \: A& l
  76.         int i, macs[6];0 S% ~7 n% U- x' J% V
  77.         unsigned char mac[6];- T8 |9 y  A7 B. _
  78.         unsigned char stbid[256];
    2 s: m; \: B5 l" U- r6 h3 e( x

  79. 1 C$ Z! O1 c5 ~5 Y+ o0 Q
  80.         if (readparam(mac, stbid) < 0)$ ]% }3 U, _  t2 D7 I7 O
  81.                 return 1;
    : G) ]6 x0 t1 E

  82. ( u" `5 r# T8 S. F
  83.         printf("Current parameters: \n");
    1 y" V1 z- {( A8 A  F9 E
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 Z  f  l; {9 v, ^+ u; N2 b
  85.         printf("  STBID: %s\n", stbid);
    ; L! p  i% U' I
  86.        
    5 s7 {: q) k, G9 ~3 w
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");6 C5 P; H, y1 O/ M1 _3 {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. q2 w& Z# Y3 l7 ?
  89.                 printf("Input MAC error\n");
    0 `4 r6 R$ \3 q! C! P3 u
  90.                 return 1;2 T- B" h! l% \0 @& t
  91.         }/ i' [0 W6 u- H& _" x4 N
  92.         for (i=0; i<6; i++)mac[i] = macs[i];3 ?- ~) d$ c, e9 B+ b
  93.         printf("\nPlease input new STBID: ");8 L7 {# Q9 |) {
  94.         scanf("%s", stbid);
    $ C$ [$ D, v9 Q: g! B( ]9 b8 X' V
  95.         if (strlen(stbid) != 18) {
    6 \6 k  q" n7 F: i
  96.                 printf("Invalid stbid\n");- H, k& |8 R3 C( e
  97.                 return 1;
    5 q! \* U/ y9 A1 w
  98.         }
    % B! D! m( \, r6 j% W
  99.         printf("\nNew parameters: \n");# p- _5 n* D5 i$ p1 M, H
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( u4 m  O1 ~+ ~7 i) L! g1 i4 Z
  101.         printf("  STBID: %s\n", stbid);
    * J  ^: U! J2 D& K% \
  102. * P9 G' [6 a+ B5 Y6 o( Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");, l! ]4 U2 }' o% S' w! J! ]" z; }
  104.         for (;;) {. h4 s8 }) {4 {5 P) I  i; O4 C! ?' e
  105.                 c = getchar();
    ! y3 E1 R, w, E$ Y
  106.                 if (c == 'y' || c == 'Y')
    2 _- k. R9 }1 ~) q+ i0 `
  107.                         break;: j( }8 O( X5 W3 R3 [) G
  108.                 if (c == 'n' || c == 'N') {- v* q. {; k7 d* _0 c$ U
  109.                         printf("\nAborted.\n");
    + ^  o; g8 W9 y3 b( K: x4 a
  110.                         return 1;/ y7 t9 ~. R' K3 P% D) F
  111.                 }
    % v; a  U7 n" @  N+ X
  112.         }$ w2 `- b$ G( q# {
  113.         if (writeparam(mac, stbid) == 0) 1 M" Y) M4 G5 ]
  114.                 printf("Parameters changed.\n");
      o7 ]! M. m- o+ b+ G8 b
  115. : P2 [, r, v/ c1 @- C4 ^9 j
  116.         return 0;
    + e  o. m1 j8 V8 O$ `9 D8 @  U
  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 / {- H$ M( b, q$ t! s
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

* |6 p. i1 Q! A# H* ~你用的编译命令行格式是什么?. B( ^  W  O* \2 U" C7 u
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-27 04:20 , Processed in 1.803386 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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