找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15742|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr1 I$ k1 t3 s+ \, I! Z. P
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# N9 L& a2 e; a' V- j+ R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
) H3 G( H" q; J! q$ h6 V* tusage: himr <address> <value>. sample: himr 0x80040000 0x03 @. E1 l" G5 K' b8 M
9 @- a* Y" |7 ~$ L5 m7 |

% V% V- Y- v8 J' B0 l. c+ x! H不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, N. W+ Q; L: `; U
% d" \, i' L( D! b) q
补充内容 (2012-3-8 09:42):
" h  R! H  U# [, r9 `; d9 j8 ohttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
6 G. Y0 B! @5 ~4 `' [这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。# C; W* d7 }0 `% s
( @6 {: F1 z# L1 w0 I
himr <address> <value>. sample: himr 0x80040000 0x0% E2 X* x0 x2 R9 ~

; O" Z  E, T" ^9 i+ b$ a4 \8 y- p$ W" c例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* e9 _; z9 B. j8 [3 |2 G
himr 0x80040000 0x00! y% f. k8 W% v, n) V9 ?0 _' ~( F
himr 0x80040001 0x11
0 ^4 g7 D5 h( C6 t- A3 N1 F$ dhimr 0x80040002 0x22
& M( d. c. F0 `9 Y! b2 S, j9 xhimr 0x80040003 0x33# U6 `+ h- L9 }0 Y8 H" D
himr 0x80040004 0x44
1 O- u1 Z' {) ^himr 0x80040005 0x55
! y; ^5 U  `% \& a" h- ?  L( [+ O& F* Z8 F  y
SN也是类似。
( _; O% Y$ S) J
, L. n$ y2 B+ N; E) @现在主要是,谁告诉我们MAC和SN的地址?! t7 A, X4 N- Y; r" U# D+ _
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 j6 c/ s5 G- ^6 K. K一直想找到运程修改MAC和SN的办法,苦于无解啊

' {# p7 S0 r0 A9 P7 E源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 8 C9 V" Y9 W5 C- U: S) m% e% {" u

! b# Q" E+ q' l: ]% v修改的代码早有了。到今天不会编译。: [+ K# `2 Y; l
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' f3 J1 V3 B3 b+ Z; S4 R, n
  2. #include <malloc.h>" s5 o% R9 s; i8 b' @+ X
  3. #include <sys/types.h>
    / e" |; _- i: o% J
  4. #include <sys/stat.h>+ q3 I  ^  J; q0 K) U
  5. #include <sys/ioctl.h>
    0 E2 }' n# j2 n& k5 @/ O: f
  6. #include <stdio.h>% D4 p0 |) y$ p
  7. #include <string.h>3 o+ R, Q7 ~; P) p: T: P+ I
  8. $ K) ~: S- f- A! J4 p
  9. typedef struct {
    5 F: h% n( G  M0 g! R! Y3 k9 k8 Z( Y2 z
  10.         unsigned int        e2prom_cmd_sub_addr;
    ' w1 b6 N! Y8 Y/ G: Z2 r, C. u
  11.         unsigned int        sub_addr_count;
    % h, t; I5 o: S: z6 O9 w
  12.         unsigned char*        e2prom_cmd_data;
    + W4 p  Z/ B1 [+ C. h$ a0 c
  13.         unsigned int        data_count;
    3 t" t1 T- Q0 q0 z5 u8 u9 x7 m* [
  14. } e2prom_s_cmd;1 ?7 g5 ]+ o5 P2 [

  15. $ K- v9 R: X  S+ J. Z
  16. #define E2PROM_CMD_READ 1
    2 T- W  F5 F3 ]! |
  17. #define E2PROM_CMD_WRITE 25 p" K6 u, e: ^1 S$ c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % W: @1 l3 Z! ?3 n0 j2 g
  19. & ^& T, t( M* s# e3 k) `$ @
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( g# Z6 U3 D5 d8 ~0 f' o- a
  21. {
    + }% O7 w0 K) ~7 c3 G/ b- \
  22.         int fd, ret;
    " _( @2 P* M) F' w6 ~4 b
  23.         e2prom_s_cmd arg;
    ; L4 v% ~- z3 P0 ?4 c( l
  24.         unsigned char buf[0x18];  d9 N; T1 Z2 L& z/ y% S

  25. % _# K, F  d3 X4 B6 g
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : R. _; G: b$ K3 v# k3 o+ U
  27.         if (fd  < 0) {8 V6 s3 c& Y3 k0 {- j& j& W8 t0 _- R+ d
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) l% V) G4 v7 o
  29.                 return -1;- X: p2 A# S# {
  30.         }
    7 A. j+ d; |1 I! D0 z* M
  31.         arg.sub_addr_count      = 2;
    # Q! p; A, ^6 _# g5 A
  32.         arg.data_count          = 0x18;2 M* R# {4 Y4 ]& C  `. e; ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) k$ d- ?! _. k: f- ]0 L+ [, Y
  34.         arg.e2prom_cmd_data     = buf;
    8 h' Q4 r# h4 h9 T+ y" Q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 K7 ?0 H/ Q% U( p3 U
  36.         if (ret != 0) {
    ( u9 M/ N4 q/ d, E! ]; K# g
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ' ]" m1 M0 P) A  ^6 [% R
  38.                 return -1;/ O: D" e7 X# c6 V
  39.         }
    ' P( M' S& K- a4 M2 {2 W
  40.         memcpy(mac, buf, 6);
    # l; O: p& G( c' b1 [
  41.         memcpy(stbid, &buf[6], 18);. m/ z% Z% m# S, N4 m4 Y
  42.         stbid[18] = '\0';3 n* u) T# h2 B5 ?6 n' z
  43. % X3 ]0 d/ W0 ?, T/ H+ h0 J
  44.         return 0;! k  L9 i- q1 g. `, c" G2 u
  45. }4 Z% G- ?, _* U
  46. 8 }* e! S1 ^' Q" C' S, k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 ]: i, u3 w& b6 M
  48. {2 z+ Y% O% s7 n. `- l
  49.         int fd, ret;
    " y: A/ W0 N7 e8 d
  50.         e2prom_s_cmd arg;$ g6 M* |6 P2 ^; G2 N7 c* j& y- m
  51.         unsigned char buf[0x18];
    : ?2 P2 ?' Q+ o" T  y. m4 H2 X, g
  52. ' _9 X- c4 X7 v
  53.         memcpy(buf, mac, 6);
    ) T7 Y4 W  s: N! X) V% l$ S$ Z
  54.         memcpy(&buf[6], stbid, 18);
    2 b: k. R" E$ G. r1 @$ I+ k' K: z8 F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . L8 s! u7 i. r9 R
  56.         if (fd  < 0) {% t( [5 P5 ^, x* D% p! e- x" b
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);; q; g! c% Z0 Z* V, {( ~
  58.                 return -1;
    4 F- k8 x5 ^- C2 f4 L
  59.         }
    + }  r2 E& o& N( [
  60.         arg.sub_addr_count      = 2;$ K. T' {5 Y1 ?) M& _! g9 H
  61.         arg.data_count          = 0x18;  }. W4 r4 z+ J/ M! d
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % h  _: ~! }0 O$ N) d
  63.         arg.e2prom_cmd_data     = buf;
    8 v, F3 `( a: F5 x* j
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 S1 L  Z3 `0 [9 ~
  65.         if (ret != 0) {; {+ V. ^9 Z+ J* f- j: b% b! Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    + x" ]: O9 M" e
  67.                 return -1;( J7 ~8 h; S" `9 r( d$ W0 j! M+ c
  68.         }
    ; g" I% g4 j. _
  69. + n" n) O. ?6 L/ Z. t9 t! u" W$ Z5 H
  70.         return 0;
    5 T2 z, q1 g+ T3 I, R! D
  71. }
    , y  N! f, I. [: E
  72. + X# `3 F0 Q+ t+ y4 S0 Y
  73. int main()' k  m" j+ S' Z& H, k- R; V- J# K
  74. {' d% o" y, v: v8 C
  75.         char c;
    " i5 }3 U$ y2 |' S. ^
  76.         int i, macs[6];
    0 I$ Z2 }1 {$ ~  r. O, M) _' f
  77.         unsigned char mac[6];0 u8 ~# J2 L) r4 g) G$ q4 a
  78.         unsigned char stbid[256];& N$ `! r" `8 d, m* v) n
  79. / P7 o2 b* b" l8 r4 a" H. E
  80.         if (readparam(mac, stbid) < 0)1 S6 s( u% |! D1 H' c6 W% N! A! R* |
  81.                 return 1;/ g% ]# o1 _: c/ k1 K

  82. ) S9 D) z- c; t7 ^1 G
  83.         printf("Current parameters: \n");/ \3 k0 \' I, `  E! k/ c) S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' @! W  |- @- x. e
  85.         printf("  STBID: %s\n", stbid);6 M- B1 M0 k& e6 o: m
  86.        
    8 a8 H3 L% Y0 Z4 F) v( Q: e
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ K& t/ I+ h  Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! q/ Y/ D4 V, z% r4 z8 w/ Q
  89.                 printf("Input MAC error\n");
    8 o# ^) c! T7 @8 w) K
  90.                 return 1;
    % d: f& \+ i8 k! }/ A7 F! S: T
  91.         }; [* n+ m4 u: n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    9 N2 a( W; d3 f. N; \
  93.         printf("\nPlease input new STBID: ");
    & @9 ]  S. d/ Z, x- U9 l1 H
  94.         scanf("%s", stbid);
    0 Z2 K. G1 Y& m6 k8 j% o  b
  95.         if (strlen(stbid) != 18) {
    0 B% {: \" W) r
  96.                 printf("Invalid stbid\n");4 Z; e/ _, o: o/ S8 V) P
  97.                 return 1;6 \; z2 t1 M) P- N
  98.         }
    , L( B6 N& e9 @) r1 T) i: P
  99.         printf("\nNew parameters: \n");0 C* s+ q+ W9 i: W1 t7 R7 C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! C' L5 J8 [- L7 v
  101.         printf("  STBID: %s\n", stbid);
    & C8 x" v0 K5 M# B
  102. " I# w+ N; t2 U% S
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    5 H6 f$ @9 Z) k6 r4 ?$ t/ o
  104.         for (;;) {3 L+ {: K) j# ?
  105.                 c = getchar();
    ; v& X/ T# v7 G; ?) I8 V7 I
  106.                 if (c == 'y' || c == 'Y')0 V9 B4 A2 I( u: P1 _  c
  107.                         break;; F6 }# J5 i: J
  108.                 if (c == 'n' || c == 'N') {
    ! z. _( c# ~5 m8 F/ o9 u/ i) `
  109.                         printf("\nAborted.\n");* V- G! [6 T) l+ s5 `7 [1 I
  110.                         return 1;
    - V7 ~9 n  y. k7 ^$ U. e) t5 e( d
  111.                 }! b% j7 [4 r* q8 m6 V2 \
  112.         }0 \; N0 A+ j  \2 n6 [8 G. W
  113.         if (writeparam(mac, stbid) == 0)
    + g7 m! v5 \) |, p, V  g
  114.                 printf("Parameters changed.\n");2 s6 A3 Z6 o2 k' A
  115. , o  M* p9 B$ ]. z( q+ J. v
  116.         return 0;; v0 t. G3 M. ~6 L3 T4 E
  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
4 e& S2 O, S4 |+ ]) x在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

- @, W- [% ^  j6 i你用的编译命令行格式是什么?
1 Y& U1 P1 D8 ~- \8 s, N2 @
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-11 15:33 , Processed in 0.033140 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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