找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15367|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 Q% y. p* o2 X6 M8 L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ A2 \" A: f- E/ \3 e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- z* ]+ A! ?: c# p# H
usage: himr <address> <value>. sample: himr 0x80040000 0x0
- F+ ^8 s. E" C0 H# _0 ~
8 E3 `, G8 c2 P0 j; l  j
: ?! b; Y/ q: q  e不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?) }. l4 C) {8 `
% U5 ?* }: C/ ]) ^
补充内容 (2012-3-8 09:42):
: X% s; k% Q+ {# T' zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 b: D" P" o; |" j; t' e% T" \+ D这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
, a0 _) ]3 E/ W0 ^0 @* @- y! ^
( I! t5 l; ^, ^+ ^" S% u+ nhimr <address> <value>. sample: himr 0x80040000 0x0
* u7 i! G5 W2 t& k( s8 a3 Z1 q+ J4 T+ F
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。: c* y9 ]7 R' ~/ D2 E' w+ v
himr 0x80040000 0x00
$ P, O3 S% q1 E  Whimr 0x80040001 0x11
* S5 ]1 @: n. d8 w: D" g: x1 R2 @( r2 Jhimr 0x80040002 0x22( X" |  x5 C" D4 t
himr 0x80040003 0x331 R# Y  ^& f% L6 `; Q4 T
himr 0x80040004 0x44
. x/ ]9 _+ F6 i# D+ s8 ^) K' Qhimr 0x80040005 0x55; {5 {: d! G& d- c
% L- W9 u+ d" S, O1 q7 b- G, i
SN也是类似。
3 E! h$ S* k5 [- M( s6 x) z! Y2 S9 f& ^7 m" \7 v7 R- R
现在主要是,谁告诉我们MAC和SN的地址?
0 F$ q: `6 H4 d. b
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ A, A' i, g& o  S% m: b  r! `; G一直想找到运程修改MAC和SN的办法,苦于无解啊

6 r. ~2 V0 @( U" ^( O, i) v源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 B" ]! |9 ]  V0 }& k- O; J. n4 k% m! b
修改的代码早有了。到今天不会编译。
' r  v% x# b+ u& ]' k需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , e" U* N9 {" A3 p7 L2 J
  2. #include <malloc.h>- t5 M- H! J8 z. i" m2 {1 X
  3. #include <sys/types.h>
    8 C. R' ^, d: w/ A" e% e$ Z
  4. #include <sys/stat.h>
    9 B+ y; M; D) I  ~! W# E* D
  5. #include <sys/ioctl.h>* A& M# b; w" I$ q: s1 v3 e; y
  6. #include <stdio.h>: X( m( y& H) C1 g# T
  7. #include <string.h>
    6 J! u0 ?  `, @' B$ B

  8. 9 d& g2 n: G  a& G+ G9 d
  9. typedef struct {( t" k/ ?# W. ^- e( @4 _
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 a- g7 L( \, H+ i/ k" e
  11.         unsigned int        sub_addr_count;! y5 i8 q; ]1 w
  12.         unsigned char*        e2prom_cmd_data;% J) s7 |* ]- X5 ], J0 ~% p+ b
  13.         unsigned int        data_count;) \5 i: Y* @4 J0 V9 |" x. Y
  14. } e2prom_s_cmd;
    % q. M) C5 x* b2 p6 h
  15. ; ^+ {4 G3 T5 A9 V
  16. #define E2PROM_CMD_READ 1
    : m! Y* R1 G- d# v7 f9 h
  17. #define E2PROM_CMD_WRITE 2
    : Y* C6 u; l+ s0 r. J4 C6 V
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 Q6 Z8 S% @: d# A' H

  19. 4 Q$ s5 p+ e) N* D2 W' w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    * B+ J% M% K# t" ~5 A
  21. {
    5 _' w0 |" N0 C* y! @
  22.         int fd, ret;7 |. m; f" N+ k) U: b: h1 k
  23.         e2prom_s_cmd arg;% L3 K% p4 [; K& D- s
  24.         unsigned char buf[0x18];
    ' b1 J: F$ z5 a# l% Z7 u- V* q) L
  25. " ~/ }. R$ ~( O! q' E
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 L2 r. \. T' y9 U
  27.         if (fd  < 0) {
    1 v5 X0 X# Q7 b" i% L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . X: W8 ~# {1 t0 i, ^8 y' b) n0 ?+ Z
  29.                 return -1;
    ( w( T2 Y+ C! i2 d4 ~/ T
  30.         }( R/ ^; r5 B7 A1 X& N5 x
  31.         arg.sub_addr_count      = 2;" r3 X4 [( R: ~7 |$ z
  32.         arg.data_count          = 0x18;/ P) [  \& c5 |7 y
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 e) y8 V3 L; \/ j/ m) R
  34.         arg.e2prom_cmd_data     = buf;# d$ `( f, c; p7 k3 s. F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 @1 x8 C, N! O$ L
  36.         if (ret != 0) {- Y2 t1 k/ R$ D- h: D' E8 u! n$ T
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    5 s  i. M4 o4 e5 x
  38.                 return -1;, Z  N9 Q& ^; N6 C
  39.         }( C/ k- g# }% Q; ^3 e
  40.         memcpy(mac, buf, 6);
    6 H5 _9 u/ P" E
  41.         memcpy(stbid, &buf[6], 18);
    5 `: `7 b% D% P/ y2 |
  42.         stbid[18] = '\0';
    3 i% Y6 J* ]* X7 ?; W* x- d- {

  43. ! {0 b+ S  ^, X' }
  44.         return 0;$ T8 ^+ q6 u% U
  45. }% b7 v6 ]: m- R* j% A: p% K" \$ M

  46. . q4 d5 B, ]% L7 U5 F2 _* [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    % U9 v) {: ~% K- _
  48. {
    / ~7 W+ J# x; e- f- A# j$ b
  49.         int fd, ret;
    / q% H2 r" D' i. ?7 M3 {. {* r) V
  50.         e2prom_s_cmd arg;. R  [" t5 y6 I) p4 d
  51.         unsigned char buf[0x18];
    3 T. U$ ?4 [3 C, i0 d

  52. 7 d/ p' k5 F( e% }: y+ q
  53.         memcpy(buf, mac, 6);
    2 e; a& e( U( X  F) Y9 Q. |
  54.         memcpy(&buf[6], stbid, 18);
    & Q8 [4 F0 B( s+ g6 C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 y" u8 w/ x4 u4 y$ E. P- ^7 {
  56.         if (fd  < 0) {
    $ H0 y7 ?' C5 t  N$ x8 g
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 [* g/ O, L. L) s9 ^8 S
  58.                 return -1;& X$ L! J! d$ j' d" U1 Y% @
  59.         }- _. ?4 K7 P+ f/ |' D
  60.         arg.sub_addr_count      = 2;
    8 S9 J- t; s/ F* Z( ?( |" ~4 P
  61.         arg.data_count          = 0x18;
    $ u. H% Q, T7 |0 Y& Y. c
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 \, _0 ?; B" f* r' v8 J
  63.         arg.e2prom_cmd_data     = buf;* l; m( W5 c5 v9 t( C: e/ Y% j
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 k/ @# T3 o' o8 t6 A( h, m( j
  65.         if (ret != 0) {3 |2 f9 Q, \- S2 R# T% s/ }
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. e# ^; d" B. u0 `5 q6 {
  67.                 return -1;
    " t. P4 N+ K9 z" J, ^
  68.         }
    ( j6 l/ L$ \1 i+ H- g5 F

  69. ' y% `+ n: b$ _* O
  70.         return 0;
    5 s5 Z+ w- R4 ^/ r1 ?5 }
  71. }
    + C: f: \+ E8 ~, g4 N- E: A9 P4 C
  72. * J, p0 g9 j3 x! s
  73. int main()! Z/ y2 S0 O# Q# W
  74. {  V: I/ K. \# ^0 ?) R0 j$ S
  75.         char c;# |) d( _" `4 C) C2 t  V* g4 j
  76.         int i, macs[6];1 N* E. H5 E) n5 G# y# |8 s/ Y& [4 V
  77.         unsigned char mac[6];% j! {3 B$ o  |: J
  78.         unsigned char stbid[256];) T% ]4 j2 m: s- R

  79. # @( r$ n: c+ m4 a& E
  80.         if (readparam(mac, stbid) < 0)
    " ~2 P2 O: D3 B0 M5 V% Z- o
  81.                 return 1;
    * u5 e1 p6 m1 D4 y" J# a0 U; w3 P

  82. ) i* X$ v' f5 F# ~3 l4 h( s. f
  83.         printf("Current parameters: \n");
    4 X6 E( O/ |, a; K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % p! R: k4 a& ?: ~4 A$ G/ `
  85.         printf("  STBID: %s\n", stbid);# Q/ ~, ]/ s0 _6 M
  86.         3 |4 a. R; W7 M5 [- h- \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    & l0 W3 ]% F7 z" n, O" i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 Y, P" B/ ?* |# q7 O  n  t' _- o
  89.                 printf("Input MAC error\n");9 P3 c7 L; e1 G& M$ t! U/ B; B( ~
  90.                 return 1;
    5 v! Z: d0 q3 a# W4 R
  91.         }
    8 h( O. c8 u* O& Y! k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    $ ?  G7 O5 [6 e" X( R5 H
  93.         printf("\nPlease input new STBID: ");
    ( S* E) n7 }0 M$ U2 g1 v- v
  94.         scanf("%s", stbid);: a; U; H4 K6 }' T
  95.         if (strlen(stbid) != 18) {
    $ |  U, i6 N5 @0 l  q
  96.                 printf("Invalid stbid\n");$ w" K2 h: y; `
  97.                 return 1;. m! n' s+ Y# |) I: P5 q' D
  98.         }( }) \, e& g0 D/ m& k7 p7 [( L# e5 t
  99.         printf("\nNew parameters: \n");
    3 Z: @( y  F4 O) m
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : h# G2 _" [1 y
  101.         printf("  STBID: %s\n", stbid);) p& g5 s. o1 B1 d" R5 i8 `3 X
  102. ) y3 l6 Z3 W8 a0 G/ h; |
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 y! U' G8 {( M
  104.         for (;;) {
    4 H  ]4 P0 p8 q7 s6 p+ B
  105.                 c = getchar();3 k& i7 Z- D' Y% ^. N
  106.                 if (c == 'y' || c == 'Y')
    1 \! A# ]0 h: P
  107.                         break;( r9 _! I: f* a: e6 \
  108.                 if (c == 'n' || c == 'N') {
    3 w, m8 n9 d# ?, m: _7 m9 ^! R3 [
  109.                         printf("\nAborted.\n");
    7 }. e, z9 i9 m. _8 }
  110.                         return 1;; Q$ E4 m% S- L) w" L" }' v
  111.                 }0 j% L1 h1 S; f6 G
  112.         }7 F4 L* f+ P3 |0 Z/ p" d! e: c
  113.         if (writeparam(mac, stbid) == 0) ! y7 ~' P; D" Y' Q$ d9 V4 Z
  114.                 printf("Parameters changed.\n");7 b2 }& ?" h: V0 P. c6 e& C
  115. + A  m0 e. s' {% o
  116.         return 0;" G, g# o# e8 V) H! j
  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 I$ y5 y; X" F4 ?! r
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) z  C. w4 b0 V. u- @% c+ S你用的编译命令行格式是什么?5 \! |7 {% d) Q; H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-29 17:27 , Processed in 0.025301 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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