找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15238|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 n* M8 H# {, f! g  [, s
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 {9 B1 |& D6 D% ^. ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:) |/ [" N& }  c# }
usage: himr <address> <value>. sample: himr 0x80040000 0x07 O1 n/ k) \4 s2 |

6 L6 ~; n0 l. H+ b
  r4 u3 s% r3 S3 M不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 x' V/ C+ i6 ^* B- I& ?" f/ x2 H  v) ~! W
补充内容 (2012-3-8 09:42):; X4 D. O4 z( E8 L* |; e! n
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  |) D, F: o0 n  z  j  j  s  Y
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。( d3 W$ S) l4 z) n
" l, V! O7 y) W) D% {( Z
himr <address> <value>. sample: himr 0x80040000 0x0. o7 U6 Y( x1 Q2 x# g2 k5 e
/ f: ?7 n+ m8 p
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
# g( T8 K6 l5 u4 k% \$ L9 y7 y# [6 c- ghimr 0x80040000 0x004 e* V; ?  O- z
himr 0x80040001 0x11
9 v/ o) j* v. Ihimr 0x80040002 0x220 v" j2 I% ?4 m/ O
himr 0x80040003 0x33" r  Y, o/ X( Q
himr 0x80040004 0x44- T* N& t; S) M* M9 Z
himr 0x80040005 0x55. G, x. d0 L: G) G5 G

* ~' f+ I. E9 O$ l; e4 R) SSN也是类似。
- L+ h5 w: R0 ^' y2 {$ ]* K
, {2 o6 c; e8 z# C0 ~现在主要是,谁告诉我们MAC和SN的地址?, _& s* b$ |' Y9 r
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, Q; D; |2 p# i1 K+ K3 [一直想找到运程修改MAC和SN的办法,苦于无解啊

3 f- U: c: z1 ~5 N' Q: Z源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - e4 }6 F7 {; j* [8 _) a

3 I6 b; {+ _: w修改的代码早有了。到今天不会编译。6 t  k! L& R1 ]3 w0 k. Z1 G% e
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h># l# j! q& ~, i7 Z7 n9 a1 @
  2. #include <malloc.h>* F- j3 u! s* j4 M% }
  3. #include <sys/types.h>
    0 I" _. X1 }. g5 l( L9 N1 C
  4. #include <sys/stat.h>
    + |; x1 e; X* l
  5. #include <sys/ioctl.h>
    , o, e: N% p. D# ~6 f& J7 s
  6. #include <stdio.h>6 ]0 c) ^# L9 W8 T
  7. #include <string.h>4 f! h' P9 e3 L+ v# ?% w

  8. , A' N, u2 T3 ~! W& |& Q; H1 i
  9. typedef struct {" b2 z& D4 b% q/ `  ^. v! A
  10.         unsigned int        e2prom_cmd_sub_addr;
    + J$ C# a9 U( E$ D7 ]" ]% a" W
  11.         unsigned int        sub_addr_count;4 o/ K6 q4 T" R7 }" J2 P& K, {
  12.         unsigned char*        e2prom_cmd_data;' o, K; E' H' k) a" S
  13.         unsigned int        data_count;
    " f$ H6 F- q. d) C. j) m
  14. } e2prom_s_cmd;. ^4 v! u/ D" d4 c

  15. + o% c* T1 L/ `
  16. #define E2PROM_CMD_READ 1
    3 P  S/ f& p( X3 _
  17. #define E2PROM_CMD_WRITE 2
    % e2 u' ?+ W0 d  I; I* S1 p
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". w/ c# y  L! Y# x1 t# F& |4 s+ Z$ C

  19. # E) h. N3 l- r9 `5 s) D" T
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 f& e$ y6 s' t4 J* U3 d  U7 I
  21. {
    : o" P4 H5 A: h0 w5 A+ t
  22.         int fd, ret;
    ! Q1 Z! t; c$ n  z+ b# c, J
  23.         e2prom_s_cmd arg;
    2 p( |& ?- b! T0 T; ~+ A" T2 N1 s
  24.         unsigned char buf[0x18];
    / W/ W) m* B& q+ g# R3 K
  25. 2 _' |6 _& V% X
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 U& h% L" a% m4 \
  27.         if (fd  < 0) {* N8 k$ p! |/ V; j$ }- Q! f2 M6 i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; {1 y* M; P: ~
  29.                 return -1;# s" Z! E, S) V
  30.         }( D- l$ ], N+ p5 n" `; b. N
  31.         arg.sub_addr_count      = 2;
    # e- z$ f; ?% ^0 ?# [' x
  32.         arg.data_count          = 0x18;
    ! q! D7 m( @/ j
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 {3 J+ d" A0 ]' k* m/ }
  34.         arg.e2prom_cmd_data     = buf;
    , L" h$ m4 N( V* K2 e. d
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    8 \% A& g$ A( d1 c: b4 p
  36.         if (ret != 0) {
    6 N8 R, t( |1 A2 L
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    2 H" {' ?8 N, _
  38.                 return -1;
    5 _6 c2 P4 Q6 }8 Y, j
  39.         }# S6 K1 \- C7 e7 j8 O
  40.         memcpy(mac, buf, 6);: U5 ?  W8 f1 t4 E, M$ \; M7 w9 y
  41.         memcpy(stbid, &buf[6], 18);
    ) |, J4 T1 R7 ^; ?( W2 D( Z
  42.         stbid[18] = '\0';" |5 a; G$ z9 N
  43. 7 x; T- ]( j; P- g
  44.         return 0;/ V; j2 q3 z, E$ g; B4 f. b
  45. }
    ( X$ Z1 K# P/ g) J1 F. J
  46. ' Q* W, ?. M/ ?" _
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ; O& j# u9 @# c0 ^
  48. {) Y% _/ V* @2 L* f
  49.         int fd, ret;1 i; C- O2 d4 m! n/ s3 i5 G
  50.         e2prom_s_cmd arg;# i& h2 e( X6 Y: ^; c- _* a
  51.         unsigned char buf[0x18];: C: w- Z4 L$ `( f
  52. ) o! X* w4 y/ x3 f5 N
  53.         memcpy(buf, mac, 6);
    2 D: x: a6 E: f) K- L
  54.         memcpy(&buf[6], stbid, 18);; W. L5 s' c* T( i* n2 g! J# r
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  {, ]# \# u) I
  56.         if (fd  < 0) {
    " ]$ T% D$ V7 ^+ X) F  k0 q( e% Z& r
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 C8 t# F2 w: q# v
  58.                 return -1;
    8 ~1 u+ _4 I% G
  59.         }
    . R2 R0 u. H$ Y$ n6 S' V
  60.         arg.sub_addr_count      = 2;
    6 k- j- N. {: J
  61.         arg.data_count          = 0x18;
    & u" }& i/ |6 `( c5 E' @6 d
  62.         arg.e2prom_cmd_sub_addr = 0x290;& O, |( l: j6 B" u
  63.         arg.e2prom_cmd_data     = buf;
    4 W3 {! Q5 E2 L6 u
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + [, p3 G: t+ j# w& V
  65.         if (ret != 0) {
    : x. {3 m! C* I" a+ t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    7 }, q. l8 W- U! H* Z' I* P
  67.                 return -1;
    ; ?, m7 `2 e, x. I
  68.         }! R. F' ]8 n! p" a, c+ O) I8 z
  69. * u: j" D4 ?& W  c
  70.         return 0;
    3 c2 `/ |; }! }
  71. }
    6 Q& B, Q4 Y! r/ D' v0 [/ p
  72. 8 R$ V( m$ ]% j
  73. int main()* B! ]% G. [8 I, [/ y+ j
  74. {6 C3 |' C  c% W/ ?
  75.         char c;0 y* R0 K7 F) N- k5 g  S
  76.         int i, macs[6];
    0 H# O  A* C1 K5 e* N5 p9 c- y/ y
  77.         unsigned char mac[6];* Z/ c0 t! b: [! `
  78.         unsigned char stbid[256];+ p/ d5 G- C2 `. e" Q
  79. , r' o6 K/ O6 ^8 \
  80.         if (readparam(mac, stbid) < 0)
    * R* N' r$ u. W2 C' V: G* w
  81.                 return 1;
    # s5 y2 ]+ ]& B+ B) {+ [
  82. / V0 n' U& I/ Q3 a3 _! w( g9 y
  83.         printf("Current parameters: \n");+ A: @* T; q% N3 {0 z/ F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( ?* f9 R/ w, E7 W& M9 b1 {- P6 Z
  85.         printf("  STBID: %s\n", stbid);
    # ^0 m$ ]2 x' Z5 g" p$ X9 r8 P
  86.         * a* a( @% t- s; D4 {! K% j9 o
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 L4 y# C4 x' \  c9 O5 y' R
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 @; D+ z4 H- p. ?, K% ?- N
  89.                 printf("Input MAC error\n");
    / U8 m  D- c; f6 d( g6 r: ~
  90.                 return 1;, B# f# J/ K! a% ^, W  l5 M
  91.         }4 U7 @" D! ]7 L" Z& n7 Z/ u0 @
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * i# G% U% Z8 k
  93.         printf("\nPlease input new STBID: ");
    . l" a' v* K+ S5 q
  94.         scanf("%s", stbid);. O, y, R) x3 R% I/ @+ p
  95.         if (strlen(stbid) != 18) {
    0 Z. f9 N* ?- n1 _% r/ b
  96.                 printf("Invalid stbid\n");' v+ \! L3 K, R! A
  97.                 return 1;) X6 D- m/ p9 b6 N9 }
  98.         }
    ; n. D, F, Q) I$ z
  99.         printf("\nNew parameters: \n");% j$ v- y% \, t5 N& p3 y3 ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 g  A/ L3 c- R# L8 Q, h- T
  101.         printf("  STBID: %s\n", stbid);
    % R0 S6 q* |5 L! ?
  102. 9 ~" E% h6 A6 s
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    * x$ ~% W8 j8 M& P% b
  104.         for (;;) {% ^. G# h& d! P! m) c- I
  105.                 c = getchar();
    0 f+ Z& L" t1 B) n4 l
  106.                 if (c == 'y' || c == 'Y')
    1 a) Z+ W. l# s3 v* o7 G! O
  107.                         break;9 x4 y+ b  F$ J; w
  108.                 if (c == 'n' || c == 'N') {4 [5 o  Y( \3 W: g# W
  109.                         printf("\nAborted.\n");
    . `- Q. o4 }( O; ?& w& c
  110.                         return 1;
    3 w( z- K. P5 K& H$ f) I( N6 J
  111.                 }
    # ~" u& M& K* T% m: n
  112.         }1 H; @8 {8 A* o9 d# _7 T
  113.         if (writeparam(mac, stbid) == 0)
    " i) n; g; Q# @1 P3 F) j& o3 O
  114.                 printf("Parameters changed.\n");
    3 p, h9 H, |. s2 ]7 O0 I1 H

  115. 0 V, ]" K' r0 Z9 V8 U* w
  116.         return 0;" V; @) ^8 f0 ~
  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
( g9 R" }$ ]8 x) G0 E* X* t在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
* E! D. [9 W2 E4 [+ D1 J8 Q
你用的编译命令行格式是什么?
+ q8 K6 {& M6 ^0 R& R
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-11 10:28 , Processed in 0.023679 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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