找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15448|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr' H8 ~* O! j; y- h, b2 Q( j
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / g9 o* \! K; g8 [0 Y! i
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:) J8 U1 {7 }) d& S$ b( U# B
usage: himr <address> <value>. sample: himr 0x80040000 0x0) s7 r) Y0 ~, D1 Q8 e/ p

$ P/ P; |9 o& B& l) W# [# ]% g- u1 U$ T& C, @0 r3 U
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' X0 a0 ~  R) L% K' O. E9 d( M/ u- ]9 m
补充内容 (2012-3-8 09:42):7 Z7 v0 a# @% {" a& L' \: B% H
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, ~; k1 d) q2 s- k9 T( _. Q" v
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
+ G( ^( K7 h) U+ R0 f4 s* e& A7 g+ Q$ T( q( b8 _* S
himr <address> <value>. sample: himr 0x80040000 0x0' g) I& J8 W7 F: u; q9 I
3 P% T8 ?2 L$ b4 O- D. ?
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ e* s- r$ T/ V/ {% a$ {! A8 Q3 ^: t
himr 0x80040000 0x00
: |3 }- O$ }) mhimr 0x80040001 0x11; A0 C9 h+ Z1 J9 d: z5 d
himr 0x80040002 0x22
0 w: ?7 }; p; o5 e0 _8 R" |$ n+ {+ ^9 Dhimr 0x80040003 0x337 u2 F2 M3 J2 Z/ a& p' X
himr 0x80040004 0x44
7 E: ^+ X9 Y, Q6 K$ J3 Jhimr 0x80040005 0x55: k) b. i9 B: P$ {
$ h" q! _* r/ f% `
SN也是类似。7 _/ W# N, n) i. U) z
$ b% r0 Q1 f, F- K! m. _
现在主要是,谁告诉我们MAC和SN的地址?3 d% ?0 K' c' @6 c' Q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
) r0 @0 D& }1 m3 e& R# J一直想找到运程修改MAC和SN的办法,苦于无解啊

5 Z5 U) t) z7 J源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 2 [( f' K2 o) \- Z2 D- S$ d
, ?" n+ T7 V8 E1 M+ T; \
修改的代码早有了。到今天不会编译。. q& u* p/ h, |
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; z3 B1 l& F- F
  2. #include <malloc.h>4 S, r! L- r0 ~
  3. #include <sys/types.h>6 r# X: n6 s5 [. {
  4. #include <sys/stat.h>/ X9 S7 i! j# g& H
  5. #include <sys/ioctl.h>
      N8 I4 B$ A+ d. c8 e6 F
  6. #include <stdio.h>
      [' F8 y. m; c
  7. #include <string.h>
    9 J( R& G5 F* z: {1 N
  8. 3 @8 q/ P& {$ \- y! n- w1 q
  9. typedef struct {/ Z# C3 {7 t2 S0 V  z2 X
  10.         unsigned int        e2prom_cmd_sub_addr;
    5 J7 S, p5 g4 ]/ L  @
  11.         unsigned int        sub_addr_count;
    - K+ k9 R6 i' V7 k; k# @
  12.         unsigned char*        e2prom_cmd_data;3 V  {. d8 |! V, D# r
  13.         unsigned int        data_count;" h2 _: i4 V. {' N* N" H6 t
  14. } e2prom_s_cmd;4 A) k2 _3 `& |$ X% W

  15. 9 T! Z- |7 s& r
  16. #define E2PROM_CMD_READ 1
    5 G  S0 \# Q+ _* l# b
  17. #define E2PROM_CMD_WRITE 22 l" S0 u) N/ h& M7 {' E+ T$ Q8 U! M3 [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 x2 p  v# s* U) ^0 E, B

  19. ; n; i  a# s2 D, Y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 i0 w% f! W7 l' Y
  21. {
    1 G4 J. v" K2 F1 C1 G/ u) c! z
  22.         int fd, ret;. r0 p; m$ p) p
  23.         e2prom_s_cmd arg;
    ; @$ N. W0 d; U: S6 M* ]# C8 T* T
  24.         unsigned char buf[0x18];8 r/ E2 H, O1 E, r

  25. , P) Q& B: Q& Q5 a8 c- ?, K" z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" W) c+ \7 B8 F
  27.         if (fd  < 0) {& ~1 E' A- Q. h/ P, Z3 w  c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ w( y6 j: Q. J
  29.                 return -1;
    % w6 |: R: N$ Y# S5 }, N
  30.         }
    $ @8 V( x0 `; ?/ E
  31.         arg.sub_addr_count      = 2;
    ; w4 P. r9 V3 e8 s8 r; J! e' A
  32.         arg.data_count          = 0x18;
      l' }" ^" s7 y% U" L( [1 F- V
  33.         arg.e2prom_cmd_sub_addr = 0x290;! f! y5 I9 S! O, @) x
  34.         arg.e2prom_cmd_data     = buf;* C' `% f6 z/ o) e1 M4 x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);9 m% b( d$ v3 M' {6 Z
  36.         if (ret != 0) {$ E' O  f' [( i% j+ r2 f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);" u* t8 d% p5 B2 Q1 Z; k* e
  38.                 return -1;! y% C! X9 P9 w# s+ q1 h: e
  39.         }" y3 ?5 Y" J% e- y
  40.         memcpy(mac, buf, 6);
    7 H( s$ ?2 Q  B. ]5 x
  41.         memcpy(stbid, &buf[6], 18);% p! q, z! j; g% w' }$ Y4 }" r
  42.         stbid[18] = '\0';* O& }( `5 i" D5 F2 M

  43. : A% A6 B- `  z2 r3 g3 x# `
  44.         return 0;
    : F9 J. s: s0 k! p1 ]3 \; T
  45. }
    1 ]  B7 W  e& j+ k, L
  46. 8 w& d2 u( n% j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - m9 o' d6 i3 _! Z8 ]$ L  Y2 v6 e
  48. {
    " V$ h; L& c7 j5 A3 y, |
  49.         int fd, ret;
    * B3 f( d& }4 C5 X- z
  50.         e2prom_s_cmd arg;
    : m* q3 o, }1 g0 r
  51.         unsigned char buf[0x18];
    . t/ O8 L: @4 x# x9 A

  52. $ C! G5 ^; x0 J+ y+ I
  53.         memcpy(buf, mac, 6);
    + t% e! G" E' i9 Z4 M  J
  54.         memcpy(&buf[6], stbid, 18);
    ) ?1 e& D2 ~( E0 q( i/ z4 @
  55.         fd = open(E2PROM_DEVICE, O_RDWR);/ g# s6 |9 G6 N& L+ j- q2 m& A
  56.         if (fd  < 0) {
    : h$ S3 y0 i! C& S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 s# F% ]; q6 e" n
  58.                 return -1;$ E- O( B7 t8 B. }9 ^
  59.         }9 b  y0 c. N" n0 {
  60.         arg.sub_addr_count      = 2;) q- h' ^" f: h9 U
  61.         arg.data_count          = 0x18;3 Y# `- E" y1 A" y( D7 s, q
  62.         arg.e2prom_cmd_sub_addr = 0x290;* U2 k: V. b& x) S( S( U
  63.         arg.e2prom_cmd_data     = buf;6 s' s) {2 a! L6 U6 P& P: k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);( Z( o7 d/ C/ Z
  65.         if (ret != 0) {
    . ]: s+ B% Q$ @0 F( g$ H+ |% W4 d
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . x7 y- G8 I0 u9 F8 Q# W- X
  67.                 return -1;" d# j* W' x. b2 V
  68.         }
    , V7 a0 d# S% `8 ?) y$ d2 p; s. \! R" e
  69. 9 W  [+ V& N* p& E
  70.         return 0;
    8 R( n* X0 n) I' B. Q# U
  71. }) a$ Z/ T2 o1 Y( Y1 w/ Q; s

  72. : F( \  I. p2 S- d" D4 |! r& ]
  73. int main()
    ( h5 A0 h9 K/ P& E
  74. {
    6 _5 ]4 l/ p/ F6 N1 j, I  w) m
  75.         char c;. }, Y2 k$ }  L2 M
  76.         int i, macs[6];
    ) a) J3 F3 H8 s& j% O) x2 v
  77.         unsigned char mac[6];
    ( P. W: W7 ?$ ~: ^0 G) N" w- M! I2 z
  78.         unsigned char stbid[256];
    * k+ W& z* R3 x4 K
  79. 9 R/ M* _0 y0 Z- I
  80.         if (readparam(mac, stbid) < 0)
    ; |6 W. K8 Y* R! @  Z+ x2 c
  81.                 return 1;
    * I! H6 W' \( Q, y, H- z) T$ r
  82. ( F' e+ \" V$ |( x
  83.         printf("Current parameters: \n");
      B  E3 R* ?# L$ B3 u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* ?8 z* \. x0 m+ z
  85.         printf("  STBID: %s\n", stbid);
    1 t) ^! T/ f4 }% c: b
  86.         7 m4 b. r5 q, t8 h
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");4 e1 N, ?& H: x/ K& u6 i9 i0 f
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 ~% H  I2 l  T# O6 Y3 X! t
  89.                 printf("Input MAC error\n");
    ; \% }1 y8 a# K* c; V
  90.                 return 1;( P8 E" x9 b: p# f" `, S2 J7 M
  91.         }3 X! r6 @' J  `  j6 s( n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    . `, Q& k! p; u: E1 Z, K
  93.         printf("\nPlease input new STBID: ");
    1 l9 R) U0 X7 l, C$ v; R$ g
  94.         scanf("%s", stbid);8 E* y$ L; }1 D9 T( r2 A/ ]
  95.         if (strlen(stbid) != 18) {9 k. r; {! Y, j' q  X4 p- l
  96.                 printf("Invalid stbid\n");
    & m- X0 ~6 \* g# F
  97.                 return 1;
    6 W2 [% j/ A& r2 i% Y
  98.         }6 M" W( W. k2 P
  99.         printf("\nNew parameters: \n");
    / ~5 g9 K" G% o" \, A1 w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ a6 s7 D7 p' B
  101.         printf("  STBID: %s\n", stbid);1 C5 Z6 c2 F* I& }. ~
  102. . G" Y) L2 @% U
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 @( P+ {3 `* m& n! \
  104.         for (;;) {" `* n1 V/ p  o& g, E" ^5 ?
  105.                 c = getchar();! u/ d0 R: W- ^8 C
  106.                 if (c == 'y' || c == 'Y')
    " J- {' R; b* k. g/ y! |) o- y
  107.                         break;
    ( n5 _' N% @# ]5 Y, C4 S% b1 ]& ~% f
  108.                 if (c == 'n' || c == 'N') {! p; M- ^4 A# f; C' z) ~
  109.                         printf("\nAborted.\n");
    2 d3 o, X" ?( c" d
  110.                         return 1;+ G! _1 G0 w; O2 h& R( b' Y
  111.                 }
    * ~3 b+ `. s' M: ^4 @) k
  112.         }
    , T1 C3 V% U( V* y
  113.         if (writeparam(mac, stbid) == 0)
    % g; o' D3 |" d; G, P
  114.                 printf("Parameters changed.\n");6 i3 a/ J8 b, ]' T5 u+ k8 h: g9 s

  115. ; a& O' j/ z; P- W/ `9 x
  116.         return 0;/ T( f' p$ Y' S5 k$ _. v3 _
  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
' O+ y* o: I: H4 ~$ M& T在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
! \' F2 N3 @0 A8 N, N2 ]
你用的编译命令行格式是什么?
8 E. t8 b% w2 }5 F* {1 e) j
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-6 09:48 , Processed in 0.023343 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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