找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15483|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; X) m3 a/ m2 _7 G8 x
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 S, e8 f4 _1 ~1 W. C' B$ S8 h9 p/ g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ U- R$ N$ T$ A; U/ a+ Musage: himr <address> <value>. sample: himr 0x80040000 0x03 I% P% n! Y  n# g5 g

! U/ k/ ?9 U: ^1 C, D+ R. z  I2 x  {* A, Q" X, D9 C& B: a4 D" ~" n& e
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- `/ X8 V3 F2 a" y

- R8 Q+ y; |& d& `  t, ^补充内容 (2012-3-8 09:42):; [& D. g- c/ C5 q
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% G4 x7 C$ M8 i2 _5 S这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。4 T8 Q/ r7 F5 E6 k

  \4 U* h3 {. U* I4 |8 Hhimr <address> <value>. sample: himr 0x80040000 0x0
! ]4 t0 s  d' s% f* X! f* K7 d) t7 Q  j$ o. t
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。3 Y8 W# ?$ _( }/ n& y
himr 0x80040000 0x00  ^2 ]6 F  s8 `/ q- u- M5 r2 Q
himr 0x80040001 0x11- [6 o% t# z4 @
himr 0x80040002 0x220 p6 U. K8 }* C1 I
himr 0x80040003 0x33
# U2 p) _, d5 v" K- J. ^himr 0x80040004 0x443 Z8 ]: C7 g* C# X  s* o3 j
himr 0x80040005 0x55+ s* B+ g  B; \( I( F2 _
3 C' [0 d& ]6 N% F* T
SN也是类似。
, l3 n# _3 f) ~7 T
6 v& W6 ]( n0 ?  [  u现在主要是,谁告诉我们MAC和SN的地址?4 b) q' e" X2 O
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 " S; S: _4 L% Q% h. T: p: y, G" u
一直想找到运程修改MAC和SN的办法,苦于无解啊

6 R# Y2 K: W# V3 n源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
! v( G7 j/ G, s& P. u" ~* U  Q/ O  u. p4 [
修改的代码早有了。到今天不会编译。
2 u1 V" L1 @" D+ \3 q, S% v需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; x% N& K- O7 G& ?% c
  2. #include <malloc.h>- i8 O. a! [$ D) c
  3. #include <sys/types.h>+ M" u/ y2 W3 e# N8 }
  4. #include <sys/stat.h>
    ! R+ R9 W: G" f
  5. #include <sys/ioctl.h>: Q& I$ W, q" o$ V
  6. #include <stdio.h>$ N: S9 W/ V% Y9 i/ O2 h& M
  7. #include <string.h>3 u, z+ U9 X4 `7 a/ i3 s
  8. 6 u( A$ x. }1 k, {
  9. typedef struct {6 A7 J5 s. b! c$ \; f
  10.         unsigned int        e2prom_cmd_sub_addr;
    5 L) V7 Y; r( r2 b2 n4 Y8 L
  11.         unsigned int        sub_addr_count;3 y  n! N. e0 T6 E
  12.         unsigned char*        e2prom_cmd_data;
    8 m# M) F3 u  I% Z6 L9 k
  13.         unsigned int        data_count;
    ( \9 }0 b' t0 K  o2 W* Y
  14. } e2prom_s_cmd;: d' \! P' n1 ~1 K- I
  15. " W% \0 A+ t) A% G
  16. #define E2PROM_CMD_READ 1. |; G1 N1 E- a( u! _! x
  17. #define E2PROM_CMD_WRITE 23 B8 }# e# O+ {9 N. R$ E, B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"9 ^4 p& n, A% `* q9 [5 p& d

  19. 7 z! w% j: x# b8 G/ z( ]! K; S
  20. static int readparam(unsigned char *mac, unsigned char *stbid)4 a( h* B: M7 e% I* N: j
  21. {
      E3 l5 W6 v" H; J/ {, e5 i
  22.         int fd, ret;
    3 m0 w6 B9 K" Y2 J
  23.         e2prom_s_cmd arg;
    , L* X/ a/ J9 U, e* ]
  24.         unsigned char buf[0x18];. @6 U  [! M; T0 |

  25. & N9 W; g+ f! v
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : a! o7 M8 p  V8 y# Z7 Y/ B; S. c
  27.         if (fd  < 0) {
    6 n" K5 k& M# z0 @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 _' A8 n7 z; I" _- H( ~
  29.                 return -1;
    + {9 ?% A( k/ e) M; I$ L
  30.         }
    0 F: a) p( ]' C$ S" ]: O$ ]$ H+ q
  31.         arg.sub_addr_count      = 2;8 W& L7 o! k7 [' ]
  32.         arg.data_count          = 0x18;$ R. w3 v% |$ A
  33.         arg.e2prom_cmd_sub_addr = 0x290;' A5 k2 e! g# l% L
  34.         arg.e2prom_cmd_data     = buf;# T: ]7 a. Z9 F, K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);- H, K* ~0 N" F8 F
  36.         if (ret != 0) {/ C0 J6 ^6 P) P( N
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);3 m3 X7 @) F/ v+ p) {1 M
  38.                 return -1;
    4 E1 G: j( N* w. O
  39.         }7 i. k" ?( l8 I9 G& \1 s8 b
  40.         memcpy(mac, buf, 6);
    2 R4 S1 g# `9 ^6 r9 k( n( x$ v
  41.         memcpy(stbid, &buf[6], 18);$ M. P1 m- Q, O, c2 G" R- c4 E
  42.         stbid[18] = '\0';
    . y. V) F' a( D2 ^' h  b) Z
  43. $ c. W& w# y! [! q- R. D  m' }
  44.         return 0;- p+ P/ O1 f( N2 e9 F
  45. }% v* F7 X9 z" C8 O" H5 m

  46. ; u/ l7 l) e4 L- g* ?
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / i  b! J/ w, h' z$ a! |- i$ M
  48. {* C" b& ?* e% z) f6 @
  49.         int fd, ret;
    4 P5 q! r4 v; ]0 G# o- Z: r' c6 t+ h
  50.         e2prom_s_cmd arg;
    * Z8 q7 q3 K+ V  ?
  51.         unsigned char buf[0x18];4 o- m1 ^) V" h1 ~# o) l

  52. $ {" G1 r3 s/ y( x$ s0 }
  53.         memcpy(buf, mac, 6);$ b9 {$ t0 s4 F$ n* g1 g6 s
  54.         memcpy(&buf[6], stbid, 18);, i0 M* ]8 q5 D2 f3 e
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ O. \' k: G2 M: t
  56.         if (fd  < 0) {
    / o3 r* X2 \' E: Q# w5 {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);" a0 V" K1 {0 h
  58.                 return -1;
    # F( G  Q: a0 @7 R* R
  59.         }
    + z8 S% J& d5 o5 \( c( U! b
  60.         arg.sub_addr_count      = 2;9 H7 ~" s7 \4 I8 f7 D2 I2 N7 F9 I  D
  61.         arg.data_count          = 0x18;
    ( j4 S* x! B8 i0 v/ ~( S$ B  n, D7 `
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & a2 j0 j" v1 \7 K/ B. {  S8 C. s
  63.         arg.e2prom_cmd_data     = buf;  q, ]7 i) q  l1 O8 o8 w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " f- t- u8 p9 F; v7 F
  65.         if (ret != 0) {, k' l9 s( o- g6 e
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % W  q( q1 K/ x2 X) l
  67.                 return -1;
    & x' n8 h/ B7 B0 m/ N; N
  68.         }
    & E9 u" j0 W) k% {! |4 F
  69. / _# [/ B2 r. N% {# h: G
  70.         return 0;
    # ^2 W0 D: W! \/ m4 D+ E0 O- j, Q) S
  71. }; a) A5 J  \& A
  72. " i, W& ]! W# i: G
  73. int main(), V9 H) r2 e6 H1 {7 G4 d; G( V
  74. {
    / [1 l+ L8 Y, k: P' I; e1 f
  75.         char c;
    7 C  B& W, b4 z; v
  76.         int i, macs[6];
    $ V, z7 [' k# z- H  _, M9 |) R2 e5 p: Q
  77.         unsigned char mac[6];/ y" C) g. x* V: B
  78.         unsigned char stbid[256];# O1 y. j- c! r6 J" v& Y. b: q

  79.   c3 o8 f, L* T, g( k
  80.         if (readparam(mac, stbid) < 0)4 ~( ^- q* }$ c! e2 s6 T+ G
  81.                 return 1;
    % K; Y4 T% p4 d1 B6 f3 U

  82. 6 c" W0 M5 n& H' Z. ]
  83.         printf("Current parameters: \n");
    : v9 j) v) a1 V9 G; [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ p/ J4 Y- q/ w& M  j1 p$ c5 I$ x! H
  85.         printf("  STBID: %s\n", stbid);* a  M6 @3 m! C( ]! o3 [- x% A4 d& B
  86.        
    1 ^3 ]" e( w0 }$ T
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! ~4 Q2 P8 }7 G
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    7 R/ Q$ j$ x, s# D. y
  89.                 printf("Input MAC error\n");
    9 u* s* B: ~+ g9 W- w
  90.                 return 1;  ^+ z  W  n, I( S# N
  91.         }
    & v4 K  D- f' ~' T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];, Q1 J1 T' P  F: A' P$ R+ z
  93.         printf("\nPlease input new STBID: ");  [+ m. e# P' C$ W
  94.         scanf("%s", stbid);) Z, o6 K$ e4 m6 Z6 `" M0 {) E
  95.         if (strlen(stbid) != 18) {- x' S. O, X9 |$ i
  96.                 printf("Invalid stbid\n");
    1 j- E. `5 p4 y7 C+ l
  97.                 return 1;
    1 H" }* j  C; e
  98.         }
    # N* S: f5 j+ b9 r/ O
  99.         printf("\nNew parameters: \n");
    ; i2 s/ G  ]% G. w6 v7 I) F
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- t1 |- q4 [6 r
  101.         printf("  STBID: %s\n", stbid);$ ]- X( Q+ j% M( z" O1 B" V
  102. : Q, A' n' Z. W
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % S0 z- M6 D+ r# p/ X
  104.         for (;;) {  L! r& \3 R2 o5 {4 j
  105.                 c = getchar();
    8 g* o7 d! ?$ ]: _& |+ s
  106.                 if (c == 'y' || c == 'Y'): U' s/ m9 y% P; ]
  107.                         break;
    $ }' m7 F$ v3 {! {
  108.                 if (c == 'n' || c == 'N') {
    - Y) {. }8 Z2 ?( T
  109.                         printf("\nAborted.\n");
    0 i1 ?/ T7 o6 ]" ]; }* v9 i
  110.                         return 1;# _2 D3 E; T9 A. T& ^( @) @
  111.                 }. U7 I% q3 K) z% ?: b
  112.         }- u5 e3 W' M3 N8 h3 P3 v4 C
  113.         if (writeparam(mac, stbid) == 0) # t. @  o1 @! K% C  M; z
  114.                 printf("Parameters changed.\n");
    ' {" F, e. M  @& H% J* V

  115. : ]7 R7 f/ O- Q, V/ W- H1 Y
  116.         return 0;
    / d  u9 g* K' Q
  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
* R$ p! |# `: a2 A在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 @. L; y& I1 t& N0 S! T& b你用的编译命令行格式是什么?9 ?2 L5 ~( J3 N7 }) R
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-10 10:34 , Processed in 0.024362 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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