找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15457|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# w6 `! J& Y$ g3 A# J( W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - z3 E, C1 T! y; m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:  p% K% W" S9 n9 |
usage: himr <address> <value>. sample: himr 0x80040000 0x05 V8 \/ b+ z' L% i. j

# I6 h3 I5 i$ D" H
" ^' j) ^0 I0 w不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?! M- B* Z. L7 }. ]# k" D
$ }& }- _6 D2 [, c5 a
补充内容 (2012-3-8 09:42):
- q% v9 y. g6 b3 ]$ Q; q0 `- |http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ L3 V- j" O9 M' G- l5 o+ |# D% X7 \6 X这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。! M9 H" i" T, c9 y) U

% R! ~5 g+ f1 K# |; \' phimr <address> <value>. sample: himr 0x80040000 0x0
2 }  G: @& u# h/ {  ?' h8 \
9 _+ D/ |" K( s7 c% K# k例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 l) h& \$ H4 O# H0 v& p7 o4 `  F
himr 0x80040000 0x001 u, _% l% h( h  P. b) W
himr 0x80040001 0x11
6 J" t1 ]% g: i/ `0 Bhimr 0x80040002 0x22
  x% h3 w+ L0 Phimr 0x80040003 0x33
. @) M& T' q' l# Ihimr 0x80040004 0x44
" ?) P, [% H/ q+ i3 q1 R% L0 Q* W& yhimr 0x80040005 0x55  V7 i/ S+ |& n6 Q& U$ \. j; H
5 k# V9 T3 u$ p  ]) l% C
SN也是类似。
2 |# J+ }% l4 g, j0 C
7 Q' |! D7 _) X0 \: s5 \# Y; m- {现在主要是,谁告诉我们MAC和SN的地址?
( C! R8 g$ ?4 ~# R- K
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
; o! X. X; Z+ K1 t: S* T7 F一直想找到运程修改MAC和SN的办法,苦于无解啊

! X' B8 y% L, _源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . z/ J! w5 X: n% x2 M

- C. r  x# Q! q8 k修改的代码早有了。到今天不会编译。9 |1 ~* h- H- B
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 V; u( j8 J6 ~
  2. #include <malloc.h>
    & @2 a0 {" `7 l. ]: \3 y4 a
  3. #include <sys/types.h>% a- Q' ^8 ]9 T% h! ~. k
  4. #include <sys/stat.h>
    * i4 D7 J  i4 m" _2 S
  5. #include <sys/ioctl.h>
    7 e* h1 [! A$ Y/ [) `: Z
  6. #include <stdio.h>1 J, m7 i, R' I, ]7 I2 B. t
  7. #include <string.h>
    / p5 S. x0 z( b! K5 G

  8. ! U) S. Q5 V9 k! S
  9. typedef struct {
    , d- X7 l( ]! |* D
  10.         unsigned int        e2prom_cmd_sub_addr;- F, A/ S! j3 [- @1 R! t4 I$ s
  11.         unsigned int        sub_addr_count;
    / [( q! ^8 b1 E4 a
  12.         unsigned char*        e2prom_cmd_data;4 M$ w8 o  Q+ f* y8 Q! A" d7 W/ {
  13.         unsigned int        data_count;
    : ?' V7 O/ @7 y5 c6 w5 h
  14. } e2prom_s_cmd;
    * n3 I+ K1 n* e+ M7 B9 O

  15. 0 g$ @% v, Q( J4 e
  16. #define E2PROM_CMD_READ 12 z8 R" G, x# S: m+ `
  17. #define E2PROM_CMD_WRITE 2
    " ^# X! f3 Q: @* i$ r* D# Y: t7 c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% e# [7 I" r. C- x' `3 U
  19. + B/ Q1 I+ {. d$ e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 N* O2 V7 @' e& F4 i# o% F
  21. {
    ' h6 _% M2 X4 }. S
  22.         int fd, ret;5 o/ S+ H% y, S
  23.         e2prom_s_cmd arg;6 h4 L* b: I& O! i1 E9 k
  24.         unsigned char buf[0x18];
    7 V" E7 s+ L, h# y& u$ u. _" [7 ?8 U
  25. % U# j- i6 X% I: |( _  P* h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 j0 s5 p8 y& ?% Z7 C& V$ H/ ~9 J
  27.         if (fd  < 0) {  [# {8 @1 M$ e0 s" s5 p8 R
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  r4 l* L7 a" e3 p
  29.                 return -1;
    ( I) {2 R! M7 C9 \
  30.         }8 J9 h8 Z+ q/ g5 V' I9 e
  31.         arg.sub_addr_count      = 2;
    5 h5 X5 D6 K$ a, W/ p
  32.         arg.data_count          = 0x18;. f. w$ r. j: Q8 B7 E" C/ N
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 T! u6 k' k: s: F8 ?' P: [& ^! o
  34.         arg.e2prom_cmd_data     = buf;, h+ f9 A+ F$ P  p) s3 ]3 C0 B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    6 I: u" P4 `$ O
  36.         if (ret != 0) {: f4 k9 P# q# X" L: L1 N
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);1 Q2 h9 S! m, {1 s$ e
  38.                 return -1;. ^% l$ H: \4 |% g2 W  `' R
  39.         }
    9 w- _4 M; p6 S7 l0 J
  40.         memcpy(mac, buf, 6);
    " h% E& N/ C( i2 w( u9 c5 k2 a. T- \
  41.         memcpy(stbid, &buf[6], 18);! R( ~& P) Q  J7 q0 D. X; T3 C
  42.         stbid[18] = '\0';
    ( R1 Y* K2 `/ x8 p' l7 h3 @  ^
  43. 1 W6 ]( d8 s: }* ]& X
  44.         return 0;; {8 k; S; E8 _
  45. }6 j8 w% s( c* A

  46. ; m: s- x# n& K& \: P& _
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! |' j- A8 R) v' k" N& G% w5 O+ e
  48. {. f# K% u: Q' U/ W: H7 i
  49.         int fd, ret;
    ( t# Y: O+ }( p$ p( W' \
  50.         e2prom_s_cmd arg;
    / x5 E$ s# Z# W9 z: G
  51.         unsigned char buf[0x18];
    , G, |) q3 C3 S$ }

  52. ' S. x. e( J+ t1 e% P; Y
  53.         memcpy(buf, mac, 6);
    * v$ B" u1 N3 A- E1 [7 X
  54.         memcpy(&buf[6], stbid, 18);
    8 p. F  ]$ W! t; }2 N4 _
  55.         fd = open(E2PROM_DEVICE, O_RDWR);/ d2 [0 }0 U6 w" K9 L/ U7 l- H5 q
  56.         if (fd  < 0) {3 T% M3 r, |( j7 ?( s8 O! X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 Z( V( G9 t- j$ t2 Q# i9 L5 F
  58.                 return -1;, e/ a. I' j& ?9 Z
  59.         }3 n6 b7 R& w7 @' f# a' P
  60.         arg.sub_addr_count      = 2;3 C1 R9 b2 k7 c, c) w; U( L
  61.         arg.data_count          = 0x18;' l# y( v& M8 [$ w0 p" m
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    7 I0 s" n# }+ l3 E4 e! j
  63.         arg.e2prom_cmd_data     = buf;
      V% `4 c1 e3 F9 o9 q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ Y# D' Q5 R7 C- l' A
  65.         if (ret != 0) {
    5 H" ^( H' x  `0 i, I& x
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    - y2 \! Y/ P% [. a, P. h4 O4 {: V; E$ Q
  67.                 return -1;# d/ i2 G# j: ^8 j" t  F2 Q. {
  68.         }
    . c" N: k8 ^) _% v, Z! T* U
  69. ! L2 S8 e" J0 e
  70.         return 0;2 |1 c7 r  W8 s* G
  71. }# R* {; P: m) ]% z, r% J* V6 P; i
  72. . a' v# T& H7 m: A/ M$ m
  73. int main()
    2 Z  z3 p* \5 x! R3 p, @
  74. {
    8 |  r1 L0 c" l- Z
  75.         char c;- i+ J5 N; K5 e
  76.         int i, macs[6];. d: q0 L: ]' [+ @6 {
  77.         unsigned char mac[6];4 c8 B& T  J! P: N
  78.         unsigned char stbid[256];9 A+ g. M$ z3 d

  79. % M; E/ ?  u0 o/ }+ {8 z3 X! o
  80.         if (readparam(mac, stbid) < 0)
    + @! J" j+ L# o# x
  81.                 return 1;
    * t" a" F4 i* L/ c+ {7 ~

  82. . k# N" l$ I; Z4 p3 P4 U1 e
  83.         printf("Current parameters: \n");6 T( L  [5 {: n2 c* z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - Z8 L- i, {+ \  Y
  85.         printf("  STBID: %s\n", stbid);
    ' Z6 O6 l- b+ |1 k; y- Y/ k
  86.        
    ( a/ n! W: f4 p5 j) r9 m
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ; x) W5 ?9 ]; [9 O% C6 Q) P
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. T& e) v  |8 b2 ?9 N8 k$ q
  89.                 printf("Input MAC error\n");8 S# O/ X. P1 Y# c8 t% w( u! L8 ^
  90.                 return 1;
    ) N% B, Y2 Y/ ~7 U/ ~& D- Q
  91.         }
    & w+ [9 G3 a- e& A, i8 B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 U/ b/ P! j+ D1 b7 j3 {! G8 d+ Q2 G
  93.         printf("\nPlease input new STBID: ");4 A; @9 v) C  X. b; z: E  g# Z
  94.         scanf("%s", stbid);1 X; O) x3 n4 M& z- U
  95.         if (strlen(stbid) != 18) {
    4 D1 \/ p0 T; C4 y( c/ t7 `) W
  96.                 printf("Invalid stbid\n");
    5 [- g$ R+ n7 y% R4 T
  97.                 return 1;# z+ W9 P) O9 u. ^3 S
  98.         }
    1 a' s! \  {. b3 E8 r4 U/ ^% Y" u
  99.         printf("\nNew parameters: \n");" O. |4 Y+ j# G" |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 a5 P1 I1 l2 X% q) `
  101.         printf("  STBID: %s\n", stbid);. N4 G* h* T3 O2 W1 z# R! T; V7 S

  102. 9 I  v4 s! m2 M* x$ h9 m
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; o/ j$ i2 o6 s. M6 V2 f# L# Z
  104.         for (;;) {
    ( A6 r3 r. F! E. Y0 I" c1 c
  105.                 c = getchar();3 G4 C' K; E+ Y
  106.                 if (c == 'y' || c == 'Y'): s+ x2 t% E6 U3 |) k7 W' Q- n
  107.                         break;
    : ], n# u( z# P+ Q8 K
  108.                 if (c == 'n' || c == 'N') {4 B5 y( a2 ~% B" W7 x8 N: l
  109.                         printf("\nAborted.\n");% Z- R1 e7 L5 E# f% C5 O. {% V
  110.                         return 1;
    , T2 d7 `2 z1 i6 X8 n
  111.                 }& I# w  j! n1 P0 o8 b" O1 r
  112.         }4 D8 Q# P0 i& A6 G5 s# J; c- r
  113.         if (writeparam(mac, stbid) == 0)
    & L% f9 w0 R/ b; H3 @9 q2 d
  114.                 printf("Parameters changed.\n");/ q, @7 H8 z. [1 u. `# e% Y

  115. * p$ s7 n+ \0 n7 d
  116.         return 0;3 g% r3 @3 b: @' Q+ E. 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 , `3 `" k& t. f5 R; Y% ]
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 ~* I! S6 _# \- p" y, N; o  m你用的编译命令行格式是什么?2 S' u3 D3 k# ~# a5 {8 _2 x. k' I
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-7 19:02 , Processed in 0.029442 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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