查看: 16430|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ j# |+ a6 \6 O; c5 @) h
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ; A$ M* O; R4 \* X
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:: R% v# t* j5 D1 `& e
usage: himr <address> <value>. sample: himr 0x80040000 0x06 p4 B' X/ ~# i8 R0 q; L' P& O

1 a! m0 R( y# u
. o5 m  }: P+ ?/ w! ]. X不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' X/ X  F: N. b$ [7 @7 x" ^

8 c' z' ^5 Y5 i1 ^( p) B! k补充内容 (2012-3-8 09:42):  B% @* W  d5 R% }+ U$ j
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 N4 [5 f& w% j& O. w" A这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
: }0 K9 I/ u! I& V- z5 a2 C( j- M2 i" a5 W4 c$ q
himr <address> <value>. sample: himr 0x80040000 0x0
3 A' r2 D1 ], n% f
# F8 }' b9 w& R例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。2 J% \1 k3 I# c. ]& b
himr 0x80040000 0x00
6 r% I( h$ g. l3 K- v7 p. Bhimr 0x80040001 0x11, a5 z) l5 o! P4 b0 M, M
himr 0x80040002 0x22
2 b5 R1 v6 l* D; `2 x8 S; \" W1 B0 Jhimr 0x80040003 0x33
1 y- `6 q* g# R+ e) w* C% phimr 0x80040004 0x44
" f( h3 t4 ~: W. A& }( v& b! K9 E' W  Ghimr 0x80040005 0x55; q) i7 T% s! P( v$ W1 Q1 I( ~
6 y* q6 U  z: n6 @! K  [+ b
SN也是类似。
0 m$ x. T7 {) `+ r2 u
0 i& e+ H' F/ ^6 }- q现在主要是,谁告诉我们MAC和SN的地址?
: D7 M2 o& |& j( I' ]( A
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : t" h+ d; T: V; m
一直想找到运程修改MAC和SN的办法,苦于无解啊

& |, p$ r2 ^% g* M3 o% ^" E源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . j0 R% z& W4 _6 F3 T
  ]' G% _4 `$ q3 Q; |
修改的代码早有了。到今天不会编译。' @" k1 A+ Y+ g# W& W! |
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- a8 }" e; G% {
  2. #include <malloc.h>4 N4 P% c+ q5 a7 ^$ Q
  3. #include <sys/types.h>
    7 M* S- x7 ]1 A( G% c8 i5 z
  4. #include <sys/stat.h>
    ' Z! f& Z+ \9 K
  5. #include <sys/ioctl.h>: \( c, K8 ]- _4 ~$ R) R/ i
  6. #include <stdio.h>3 G& O$ `1 Q% V8 S
  7. #include <string.h>
    9 s, u# O; b4 r: a$ u

  8. 7 k* y6 [: Z" I4 O  P* t* h# `% v6 ~
  9. typedef struct {
    ( S( [/ X: U$ w/ {; x/ B# q" {7 b
  10.         unsigned int        e2prom_cmd_sub_addr;! z' P% i8 S) c: O5 [
  11.         unsigned int        sub_addr_count;
    5 l5 e7 r$ B# Y: s; P
  12.         unsigned char*        e2prom_cmd_data;' g& P2 Y& I: P4 T; B3 E, p$ [
  13.         unsigned int        data_count;
    & @* o" _7 T  `1 G/ @8 Q: ^& O5 b8 Q
  14. } e2prom_s_cmd;
    1 Q  C, F* f8 l  K8 o  Y5 @' [
  15. 2 p# w/ n! _8 Q& [, g$ i
  16. #define E2PROM_CMD_READ 1
    ( x! V+ k! ^3 \9 N
  17. #define E2PROM_CMD_WRITE 2# s+ o6 w4 {2 ]: W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 O7 b5 k) \$ e0 N

  19. 0 G) Y( v9 ~/ J5 m
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ; J) j( I. h! Q) o: B/ i4 q5 q
  21. {% ~, D4 r1 w' c( q; \
  22.         int fd, ret;3 }, C$ }* _; g
  23.         e2prom_s_cmd arg;
    ; E% ]  \- Q, X4 z. G/ u
  24.         unsigned char buf[0x18];
    & R  _* z/ D, t1 @, L9 G: \
  25. + f- |5 k' n- O! _
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - D3 H7 l/ }  r0 f: U0 G, _# H
  27.         if (fd  < 0) {0 ^3 k( }& K* y+ g0 c5 P- {
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 q" u; ?6 c2 c% q. E/ e
  29.                 return -1;* Y$ Y7 q0 O4 a5 S
  30.         }
    ) c. U4 {- Y/ m9 i% B$ \- q
  31.         arg.sub_addr_count      = 2;0 a1 Z3 V) a# J0 K! U* f7 Y
  32.         arg.data_count          = 0x18;, a& t, s- i5 C- p6 P, ~( Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 X  j5 C& O+ v# Y+ j
  34.         arg.e2prom_cmd_data     = buf;. V# l8 p0 m4 w* M2 w* C) {2 H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' w2 T- ~1 c* ?0 b& L! J0 v; R
  36.         if (ret != 0) {' Q% F% I9 [7 Y+ E9 }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);' p1 M* V) s9 _$ n. _5 y
  38.                 return -1;5 u, x" p& o1 E( `; ^7 Z& m) a
  39.         }6 j. c! o6 Y4 [- q" z: ?6 O. g) }
  40.         memcpy(mac, buf, 6);* e3 I) D' p+ A$ C$ X
  41.         memcpy(stbid, &buf[6], 18);' H2 {, y( j5 t2 t! F& p
  42.         stbid[18] = '\0';
    % i* b7 b! n5 t1 A9 M

  43. . A) m3 e" n6 s, \% S# ^
  44.         return 0;: J" k- y( R% \7 i
  45. }
    & o; A+ H4 h" H9 F' d& L& u% l7 w

  46. 5 _* @5 I# I. H" x, h. p, I
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)) b( _  Y9 }, A, y
  48. {8 w+ a! L$ b# z, j6 d  ]; x+ j
  49.         int fd, ret;
    , Y, u, o- J2 J& U: M4 h2 M% ~
  50.         e2prom_s_cmd arg;
    ' C8 y/ n: ^0 H9 t" c# [
  51.         unsigned char buf[0x18];+ V5 P1 K8 h) E+ K7 ~9 t2 Y: k
  52. - i$ |+ K+ ~) g; e: H7 Z+ M
  53.         memcpy(buf, mac, 6);0 ]7 w& A' h  Y0 R9 Z* }9 S
  54.         memcpy(&buf[6], stbid, 18);3 _, ^* k3 {" p7 @% I
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / e; e) Y. k) z& n/ G- H" c, b
  56.         if (fd  < 0) {
    9 d/ B" k; A% z2 F% L# j" c/ x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  N! X0 ^8 g& B4 j1 A- _
  58.                 return -1;
    6 Q: p+ R  C' x! g0 s
  59.         }
    & @7 _& V3 L* P# w
  60.         arg.sub_addr_count      = 2;1 E1 s/ b! {( O" j- K0 Q- f! O
  61.         arg.data_count          = 0x18;( p" ~- M, Q9 T0 e
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & a  j5 a2 [) l
  63.         arg.e2prom_cmd_data     = buf;  {6 Q& k0 j0 ]6 Y5 A9 l$ L+ {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);% o6 Q8 t3 T# o1 v& |$ e% W6 F, T
  65.         if (ret != 0) {
    2 {  R" E% z4 t" B1 B
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    " Y) d8 O- k) B2 F# |( `& z$ U' l5 r
  67.                 return -1;
      a- w+ r1 Y4 S, T0 b3 i+ F+ A9 P
  68.         }0 Y8 q: M' j2 l5 ?& g- q: C0 h

  69. 4 }0 Y; c  o; y. i" x
  70.         return 0;+ j6 V; v; e) T  T* m9 ?
  71. }  k( [, Z* b3 H$ K, H; y3 j

  72. 6 I  @3 Y* N3 M
  73. int main(); j; I$ n' @* A0 L% Z( {5 k
  74. {
    8 a7 C: D4 `0 Z& \; p
  75.         char c;4 s& S8 y9 G1 H3 |+ e3 I! X6 b
  76.         int i, macs[6];9 c' T+ _* J4 S1 o+ [# K
  77.         unsigned char mac[6];6 i7 C8 S0 n% {
  78.         unsigned char stbid[256];! T+ V+ P3 d8 p+ D+ A! v& d
  79. 0 E% \0 v1 n$ }/ ~, ?, q
  80.         if (readparam(mac, stbid) < 0)
    ) ?* z3 r4 k" m
  81.                 return 1;7 ~8 g7 l3 {/ n. c6 x) r' R( _

  82. & P9 N( b4 v7 V- _/ R; k4 f; P
  83.         printf("Current parameters: \n");
    3 [# {) m( }) l3 Y- |& O
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: X: D4 r) ^/ H, P, U
  85.         printf("  STBID: %s\n", stbid);8 C, E% W  N" i4 i- A1 Y
  86.         " H6 \, U4 N/ F# ?4 a; u  A
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 Z5 p# {! K# a0 r( V0 N9 S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 o! A/ F2 h4 M, Y, F* h/ D
  89.                 printf("Input MAC error\n");
    5 v- q5 W) a+ w- t  t
  90.                 return 1;$ F" o0 g: H- L  o$ B$ i
  91.         }0 o) z4 L7 r! {) h
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' `' l" ]9 V- Y
  93.         printf("\nPlease input new STBID: ");
    5 W# s" U9 k0 W& u. x( v, e
  94.         scanf("%s", stbid);: m6 A/ ^0 T$ ]' k
  95.         if (strlen(stbid) != 18) {
    ' `. ]+ M6 j7 i
  96.                 printf("Invalid stbid\n");+ s7 k; A1 ~: q2 ]% L$ E
  97.                 return 1;+ `& n# {3 c& J7 s4 E
  98.         }8 `5 ]# E: @( W6 |1 `% ]. q9 S6 K
  99.         printf("\nNew parameters: \n");
    0 B! c" W! S. O1 @. k# C% \% |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 [5 q  Z4 F. J# m6 w
  101.         printf("  STBID: %s\n", stbid);* v- N4 @: G* ^

  102. 8 x& O% _, i1 f! t
  103.         printf("\nDo you want to change paramemters? (y/N) ");! ^' a" G* s* c- K
  104.         for (;;) {% q! l; y# t: [5 ]& f
  105.                 c = getchar();. b, j% q) I+ w# _" L- M
  106.                 if (c == 'y' || c == 'Y')
    3 G7 m3 o6 q. j" g
  107.                         break;
    7 |" f7 Y: k4 V9 Z$ D' V
  108.                 if (c == 'n' || c == 'N') {
    ' u9 a1 k9 G: W( m7 r# ]
  109.                         printf("\nAborted.\n");& s; o! g% u+ n, }# s( t" r  m& }
  110.                         return 1;& e5 v5 Q# v; y2 J
  111.                 }
    : d, j6 h( [( H9 X/ {
  112.         }
    " b6 S9 N" c) l4 Q, q5 \" I" H4 I
  113.         if (writeparam(mac, stbid) == 0)
    3 h6 s( F7 B4 B$ G0 w* U
  114.                 printf("Parameters changed.\n");
    - m: R2 S! S; H; X/ z
  115. , x7 m+ W# {- h* o
  116.         return 0;; H/ E8 @1 L0 D9 A6 z: v& X' ~
  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 1 h; Q2 ~8 {4 _% B3 J! P. j* O
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 P1 U, K4 t2 U8 M# H你用的编译命令行格式是什么?
) q, c+ P& i7 b* ^
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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