查看: 16202|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ( p4 U$ j* _2 P& }9 x" ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 G4 W) E+ ~2 W8 K, B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ O6 T& R- }! y5 B1 g. C: \$ @
usage: himr <address> <value>. sample: himr 0x80040000 0x0
0 i9 O: V/ n7 _2 h
! |2 e, h: {) T5 e
; N4 S& Y. ]( Q+ N6 F1 L& |9 v不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 B0 _" l1 d8 K( [6 I

( y  l( j- U  ^# X; x补充内容 (2012-3-8 09:42):
/ D& t' V# h! N7 B7 W5 \4 a2 z6 Khttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, J8 p6 s+ _2 q  N/ m这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。0 t& z; ^4 ]; X' D+ ?+ ^

6 g9 U  B( _: U. `$ R: g9 Bhimr <address> <value>. sample: himr 0x80040000 0x0
7 k8 W0 Z! `: W( o6 J9 R/ Y
( J  [+ {# m( C# ]4 Z$ `9 e例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。/ f7 \0 I# X/ j- C8 q, D3 ^0 e# S6 H
himr 0x80040000 0x00
* X+ }7 N  f  Thimr 0x80040001 0x11
% {* W. v5 z" Dhimr 0x80040002 0x22
- g! p' U, n* O3 X& G, |himr 0x80040003 0x33  n3 y- ~% T8 n2 _2 E& |
himr 0x80040004 0x44" s) J$ }, ]) Q. \
himr 0x80040005 0x55
  F8 w; Q( Q% R. z. |8 s% k+ l' K- B! Q, y! Z2 M* N
SN也是类似。
0 R" q( ~6 |5 O; M4 y  Z3 j  J) R4 c9 t) {, ?6 V$ p
现在主要是,谁告诉我们MAC和SN的地址?: N& c$ J# o* }' O. }
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
. k6 n' d5 G$ J# O. M- F- N一直想找到运程修改MAC和SN的办法,苦于无解啊
% a4 c$ L+ w. N1 u8 j' M( R/ x! m
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 F4 c' K/ Z: y, Q  O0 y# P8 m9 D- f0 m2 J5 U+ ]; p
修改的代码早有了。到今天不会编译。
. X9 d( ~; A& g$ D' e+ X5 i需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" F# t  Q1 ?5 P  ?
  2. #include <malloc.h>
    # R. y% {8 H" d+ u5 |& j0 K, [
  3. #include <sys/types.h>
    + Z6 a- u/ a# L" i  z+ q( Z4 |2 {0 ]
  4. #include <sys/stat.h>4 n3 r9 B0 _: o
  5. #include <sys/ioctl.h>9 s) _5 I9 d' T
  6. #include <stdio.h>" {6 {; q, N" d$ L0 D$ G' A
  7. #include <string.h>
    * l+ _+ L1 u6 b
  8. : E2 {5 L9 ^" E
  9. typedef struct {
    / f# b9 {6 H9 `& n8 A! Q
  10.         unsigned int        e2prom_cmd_sub_addr;
    $ S. W2 P2 j8 N2 V0 p% [8 @. }
  11.         unsigned int        sub_addr_count;; o/ A6 A2 l7 l2 T3 P: d* v5 ^
  12.         unsigned char*        e2prom_cmd_data;. g' C$ _4 s& ^+ d* h2 @4 n1 f
  13.         unsigned int        data_count;
    % F2 g+ R- t  ?9 l# m% [  |' B3 j
  14. } e2prom_s_cmd;
    7 @" q7 o/ K1 E1 e0 A1 w

  15. . q) p& `+ f( e7 b1 ^
  16. #define E2PROM_CMD_READ 1$ E: p( F. z- `' }7 u4 U9 O
  17. #define E2PROM_CMD_WRITE 25 K: R: M  e) b; x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"1 ^6 W% \, x0 a, f! H0 f* o
  19. 2 f5 \; {7 d1 i' G/ ]0 J# f" i
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( F9 i& b+ \7 M; }
  21. {
    7 G; P/ J/ P: j
  22.         int fd, ret;
    ( V7 N( h. G; R3 k+ J0 C, B% b
  23.         e2prom_s_cmd arg;
    # J& A& c9 S% [  p
  24.         unsigned char buf[0x18];/ w' P: W9 @0 o% F

  25. - H. e+ F7 r7 [1 N6 ?& }
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( S1 j7 t# x5 t& L& A6 j2 E$ U
  27.         if (fd  < 0) {
    ; T" i  u3 H' K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);: c9 o! [: w2 ^
  29.                 return -1;0 [$ h7 S5 k: y: {$ f+ ?
  30.         }
    4 f) b$ y! i: H4 Y4 h. c4 n
  31.         arg.sub_addr_count      = 2;
    - e9 ^$ b4 P$ q" U; P' t
  32.         arg.data_count          = 0x18;
    ; i' F$ V& N4 P
  33.         arg.e2prom_cmd_sub_addr = 0x290;" X7 A5 O+ P( G* }$ s& V
  34.         arg.e2prom_cmd_data     = buf;$ l. `- t9 ~. M+ N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! U) r- A4 Q, ^( F
  36.         if (ret != 0) {6 z0 Z. G3 A  ?. Q" g, b, h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 \) C9 i8 \' q, ]
  38.                 return -1;
    2 ]$ h# v+ H6 P9 Q) U' p1 q
  39.         }2 L% i$ [9 c9 ?8 F1 f" M
  40.         memcpy(mac, buf, 6);
    . J. a% m+ ^, G5 f! h
  41.         memcpy(stbid, &buf[6], 18);1 C5 j* I5 }/ J# Z; D4 Y& J0 [, L* {
  42.         stbid[18] = '\0';
    2 S1 n( [1 n5 P4 c) z

  43. " h2 I( y: R- s) y2 k
  44.         return 0;) |: G8 G, |6 p& }! s# u
  45. }& q1 t7 n: U( l
  46. & h& x) Q$ }- S
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ y9 F. W  K: u  M5 E2 n+ e
  48. {
    + Q8 j: m! O) D+ g4 R/ A  w
  49.         int fd, ret;
    , s7 `9 H* w  v; v
  50.         e2prom_s_cmd arg;
    4 ?: {; R! U( m9 `9 _  I* b% O2 _
  51.         unsigned char buf[0x18];
    , J( X6 [: z6 h+ z
  52. ' }& c2 J: O/ h# u6 x
  53.         memcpy(buf, mac, 6);& ?0 G7 C' Q6 s; |. w
  54.         memcpy(&buf[6], stbid, 18);
    6 Z4 V6 l6 ?% ^$ U+ ^! ~0 e
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 F( Q6 }) o# m8 N- R/ w
  56.         if (fd  < 0) {
    9 v( w1 s' e* k: c6 u
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! N0 g9 j2 `6 U" Z" m* r
  58.                 return -1;( Q: F) L# i$ q" ]* o# k0 K- C
  59.         }( J5 o, \9 M" c$ i* f! B, J
  60.         arg.sub_addr_count      = 2;2 F7 t: Z+ ~# c* o
  61.         arg.data_count          = 0x18;! }, E; D' ]+ E( Z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) i* [8 x4 F# y1 K$ Y' w
  63.         arg.e2prom_cmd_data     = buf;9 i  `. `0 Y& W6 `
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , Y$ V1 p$ Q; e# [
  65.         if (ret != 0) {9 [6 V5 p0 B! ~+ e7 o( r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);! T) ~0 w% ]" S8 k
  67.                 return -1;
    * t( U- b+ r- s0 n! b5 e
  68.         }) J3 E; F. A# s
  69. 4 _" _5 y% K( _0 x1 S
  70.         return 0;" v4 ~$ _6 |& U2 ?7 O
  71. }( n) P' e0 g3 G6 p
  72. 9 M1 J- c) T& B( Q, ~3 j# `5 }
  73. int main()
    + s) k1 F! n! k) |- G  Q
  74. {
    6 s9 G% n9 L; J7 X$ l) ?# \
  75.         char c;
    & u& L9 T# d5 l4 L1 n# \+ ?
  76.         int i, macs[6];
    : R7 A8 e8 l* x# D  q  A
  77.         unsigned char mac[6];- N0 `6 G$ A& B: R7 Q
  78.         unsigned char stbid[256];
    . F. i4 M* d' Z, m, d2 c" l
  79. ! G. D4 |% A' o
  80.         if (readparam(mac, stbid) < 0); w' i- {1 H  h' _* D
  81.                 return 1;
    . }3 f' R2 T& y% q0 f2 `6 F" N
  82. * R. j# E* B3 }+ E& L
  83.         printf("Current parameters: \n");' j  q. n% |8 J2 Z6 H4 E" J
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % ^2 R- X, `5 ~6 |6 I
  85.         printf("  STBID: %s\n", stbid);0 F" ~) N+ x( I! h
  86.        
    ( f0 [' l$ O  i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * g& A/ o0 M' I9 T
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 H/ B( I) l. a; i) Z
  89.                 printf("Input MAC error\n");5 {; G" e* c$ w% D
  90.                 return 1;
    2 k: [! e- ~- m+ L: p
  91.         }
    5 @- H; l+ V- p7 K; ~5 D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];3 U( q- n. f& x
  93.         printf("\nPlease input new STBID: ");, o, r: D/ \  ~3 V- H# M, n* y
  94.         scanf("%s", stbid);- h- S; R2 h  Q/ [5 O: J$ V
  95.         if (strlen(stbid) != 18) {
    - Z: Y) c' m& ^7 V+ c! [; q# f" q
  96.                 printf("Invalid stbid\n");
    3 o4 {$ ?* q3 ~9 N1 ^
  97.                 return 1;0 D1 r% K8 i* ]$ I0 m5 ^
  98.         }+ P; L3 _1 Z0 f; {- g  F; k
  99.         printf("\nNew parameters: \n");
    % l9 U, ~5 C: I) T/ j' @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. Y' k+ z( y9 e2 w  O- ~6 h$ p- G
  101.         printf("  STBID: %s\n", stbid);
    . l3 [# I8 c3 [1 ~+ Q1 T

  102.   l  D5 U; S' u3 z. V  F
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & g: z4 ~8 ]7 T
  104.         for (;;) {; j6 p+ y1 F' |- ~! m5 |6 [
  105.                 c = getchar();
    5 Y: O5 R6 H4 u, b% O) C( L
  106.                 if (c == 'y' || c == 'Y')
    " n) ~5 F' }3 g6 x. B
  107.                         break;
    $ x! V6 g3 x. A
  108.                 if (c == 'n' || c == 'N') {5 R* l1 J% M+ ]" X; L/ M
  109.                         printf("\nAborted.\n");3 g) w- b" t2 x+ Q
  110.                         return 1;
    4 D  {. F5 {$ d& Y. [
  111.                 }
    7 w0 b6 Y5 Q5 Q' x% [7 M
  112.         }6 W3 G6 ?5 k  o' k* w
  113.         if (writeparam(mac, stbid) == 0)
    : D' c( P/ P( x6 \; H
  114.                 printf("Parameters changed.\n");
    9 f- }2 P: L# U3 @( l9 M* L: f% w
  115. & I- J: F' h; `! p' Y$ U
  116.         return 0;
    : l- a+ v% ]% d" 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
2 p; @5 L$ s, H% v在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& b) w/ P6 k# l3 V7 o你用的编译命令行格式是什么?
' T: J6 k) O$ a# F) R; t
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部