找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15721|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  V4 [" A8 V) T/ b! }# {5 j9 B9 A, p
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . J0 J" ^# ~" v" Y3 n& a
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
" r+ ]+ E! S2 Y  o) n* q% cusage: himr <address> <value>. sample: himr 0x80040000 0x0% B, U- |# v. C% v6 c+ @8 M
' R. l, U, K) I, Q8 e% i6 t" ?

7 q3 l; M# N  J% Z8 B9 p5 j不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 ^4 ?0 u4 e: N6 ?! O1 G; B2 N5 h. ~  ]8 L- D
补充内容 (2012-3-8 09:42):. _" A, k1 J3 c8 S7 P0 ~
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! V& x5 U; C/ e这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。2 w2 v5 K- k2 h! P) @: ~
  j3 v' ?) p; J
himr <address> <value>. sample: himr 0x80040000 0x0
) o1 b9 e2 F1 Q5 k+ ^0 R$ `& @4 R  ]( Z. m+ x
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
( `+ V7 v, E' \himr 0x80040000 0x00
- I* d' a, j, Y/ ghimr 0x80040001 0x11
9 |9 f% {& D$ h, {" [himr 0x80040002 0x221 _, A* p3 I# d' W' i
himr 0x80040003 0x330 h* d/ Q- @- r# y$ K( v
himr 0x80040004 0x44) Z6 s7 Z* @5 o  M; G% {2 b  A
himr 0x80040005 0x55
, U( v, Y- T3 {7 p
+ j% R* B; v1 h' V- GSN也是类似。
# L- c1 ~6 b% r# z/ x" y2 i2 m7 p/ A% W" O: D
现在主要是,谁告诉我们MAC和SN的地址?
2 b7 B/ s  x) [3 H+ M  d
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% X4 t$ K% u6 _! ^" J: w" }一直想找到运程修改MAC和SN的办法,苦于无解啊
) F% j5 l9 `* W& L
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, J! V# R% x& |3 p& ^0 u' e4 j( y+ u( c  h& h: Q7 m: q
修改的代码早有了。到今天不会编译。! e8 ?2 F+ }& U/ p
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' k, B: Z* L/ F1 L
  2. #include <malloc.h>/ K* ~0 J2 ]9 J' g* N# V
  3. #include <sys/types.h>
    ' F1 L: N4 ~9 \5 w2 x; R  ?
  4. #include <sys/stat.h>, k. k9 b/ L: {8 O5 k
  5. #include <sys/ioctl.h>8 S, ~4 ~' S/ Q1 J9 O+ y1 Y% n
  6. #include <stdio.h>6 |# T8 |, N" q, \/ i
  7. #include <string.h>2 b% j2 ^, e# }2 Y; w  y* F

  8. $ l& q8 Q2 J7 t
  9. typedef struct {
    " ^3 d, r5 H1 `3 }/ l1 A" g6 Q3 x
  10.         unsigned int        e2prom_cmd_sub_addr;
    6 X& a8 V, |2 Y; e- h
  11.         unsigned int        sub_addr_count;6 S: M5 |5 ?  o
  12.         unsigned char*        e2prom_cmd_data;1 I, F) l1 u# Q/ u+ j0 O$ }
  13.         unsigned int        data_count;% J6 \" y+ H! N9 f3 D
  14. } e2prom_s_cmd;
    2 g1 p  o% s, ^5 U# N1 Y
  15. 6 u3 O8 e# [  y- [3 \+ [
  16. #define E2PROM_CMD_READ 1$ I* p; m: K8 l' o
  17. #define E2PROM_CMD_WRITE 2
    " v) v% R/ c  D& R& q8 b* U
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"" t& h3 S3 u6 z

  19. , P( s4 r& a7 V$ k# ^, K/ i
  20. static int readparam(unsigned char *mac, unsigned char *stbid): f9 }1 Q  t* H/ c4 ]
  21. {0 J) {- A) ~: V, o0 ^2 k5 g# g
  22.         int fd, ret;- W( h1 V) f2 C4 X. M% \4 S
  23.         e2prom_s_cmd arg;1 q: X3 p) U& k
  24.         unsigned char buf[0x18];
    - X  U  r* Y  i; N  t' B4 ^, t

  25. 3 o  g5 @1 Q( L4 c* ^4 ^9 V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. |0 Z! d9 ^5 \5 T; l/ `* Z" @
  27.         if (fd  < 0) {
    3 r3 R5 f9 U  s, [7 T/ J$ R% {
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 {9 Q5 A1 T8 V* _
  29.                 return -1;" `4 W( I* ?( {& i; f* R% }' U
  30.         }
    " a) m  p0 Y- c7 w  C+ n
  31.         arg.sub_addr_count      = 2;5 G( ?& [  y5 d# f" R2 }
  32.         arg.data_count          = 0x18;: }5 S% o8 x; \5 A" v
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    - ]$ b2 e+ P& l, l: q0 }, n7 A" ^
  34.         arg.e2prom_cmd_data     = buf;
    : W% l1 k! J. h
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);- z/ ^# a7 H( r$ q" \- D5 W) i, Y
  36.         if (ret != 0) {
    ! ~; V1 N, ^# }0 K. s! N) u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " J4 D& o9 `9 e8 }6 B$ T3 b5 ~' m
  38.                 return -1;1 Q3 s/ [: x2 I/ D+ M- N
  39.         }0 x/ u% O9 e- F! ~' U; F2 B
  40.         memcpy(mac, buf, 6);
    / k  t5 }. d7 K6 Z# `
  41.         memcpy(stbid, &buf[6], 18);
    4 Z9 ?- ?& ~4 o4 Y
  42.         stbid[18] = '\0';8 p6 ?" y' W5 {. t# ~. w

  43. ) {3 p. [8 c8 a/ j- A) v9 u9 X7 z
  44.         return 0;" k/ f: {; P# }( C
  45. }
    1 F5 D2 v3 c% x: w4 `( d3 m, i
  46.   b2 \( R& E: G0 E: x. d, A4 g3 t* n! r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    0 V2 {7 a8 l% ]9 g: n9 N3 m
  48. {
      H3 F& K1 p! q, D+ ]6 B
  49.         int fd, ret;
    + A! I! Y& r9 [2 B1 h; \% W
  50.         e2prom_s_cmd arg;# I* b$ P+ Q9 i
  51.         unsigned char buf[0x18];
    : A6 g: E* y% G; q

  52. 8 V  j) K" w3 d
  53.         memcpy(buf, mac, 6);
    6 E2 ?! z/ I" J) l6 ?' I  y
  54.         memcpy(&buf[6], stbid, 18);
    / V8 y- s, @8 ?6 Q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' B3 H* W9 ?5 @
  56.         if (fd  < 0) {
    " D2 C, u( o+ i6 v) l
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% r+ _& w) Z; x
  58.                 return -1;! c8 l9 I% j. }$ B( j5 I8 L# }* y
  59.         }* m" C. V5 V6 H$ ]' L' Z
  60.         arg.sub_addr_count      = 2;
    2 e: o) Q4 \$ \
  61.         arg.data_count          = 0x18;, ^& A5 I8 D; n" `# B5 r( K: H: t
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % O0 w0 h) q( b- G- D
  63.         arg.e2prom_cmd_data     = buf;6 B2 l- M7 ?0 z" x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: U5 y7 h" L' @
  65.         if (ret != 0) {$ }6 q" H5 X& w0 l2 J4 X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    " H+ G! c7 l, \, m
  67.                 return -1;' S2 d7 f$ k2 ?4 z6 c4 \+ b( w
  68.         }
    2 Z3 J+ [' w" l
  69. ( O5 ]& Z; p" D, x  o" Z9 z
  70.         return 0;
    ! P2 _5 q4 H2 e+ x3 @$ I; v4 p7 K* P) y! Z; B
  71. }2 Q# D. ]  ?* v/ d. m
  72. 4 H8 x1 m' {0 h0 `: a5 F/ w
  73. int main()9 M1 n9 \. w, Y
  74. {4 v4 B6 j9 m2 |+ V, ?2 E
  75.         char c;( m; `# \/ |5 M! K# _* {4 `* M/ \
  76.         int i, macs[6];; {( i( ~: }. D# n
  77.         unsigned char mac[6];0 y! U! H: w( l" g
  78.         unsigned char stbid[256];
    & |9 K* x4 h4 ?8 k" k
  79. " M& A: P: ^6 `  B8 W. B3 v2 E3 I& L
  80.         if (readparam(mac, stbid) < 0)
    ! W5 f/ [( W' L5 V# Z- I
  81.                 return 1;3 ~4 f) O0 S8 M& d+ ]; K4 C
  82. / G) h6 E9 h3 }  e/ |' n
  83.         printf("Current parameters: \n");( Z, I; a$ t; R( U/ u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 S# i- g2 o! I; S) C
  85.         printf("  STBID: %s\n", stbid);
    2 B8 _/ B) D) a, u! m9 }$ m
  86.         ( V4 j  `  U' M4 b5 S9 r! Q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! J) |+ G- z. L; |; W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( C8 U4 e! e$ V
  89.                 printf("Input MAC error\n");3 d5 t% K3 f2 U1 C4 Y
  90.                 return 1;7 x8 Q0 K+ ^, d% [3 x  d4 S
  91.         }' V- @$ k+ C. L9 w, O5 }% i# S
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " t. |' _+ b/ x
  93.         printf("\nPlease input new STBID: ");, [: t/ D# r* L! J! l
  94.         scanf("%s", stbid);8 }, `* z' K, v
  95.         if (strlen(stbid) != 18) {
    5 t$ z7 X7 R, ~4 w& |' j4 ^" v
  96.                 printf("Invalid stbid\n");5 _+ N! H/ ]1 p. r! F
  97.                 return 1;( t0 [" c8 C# H% g( ~) `$ y* @/ J
  98.         }7 a& X" J, S7 B8 Q% L6 ~1 u
  99.         printf("\nNew parameters: \n");  Y' N+ {4 f/ }' |1 I5 u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- t6 w6 d* F; `" T: @$ f
  101.         printf("  STBID: %s\n", stbid);
    6 ?1 x- l& k5 e/ m# K

  102. 5 h4 o- h" b# W" t: e
  103.         printf("\nDo you want to change paramemters? (y/N) ");! E, ^, v# c* }& ?) L" A) \. V
  104.         for (;;) {7 N7 L4 x/ j8 k! J1 g( P% s4 w
  105.                 c = getchar();+ R! S; }: t9 I$ p$ F+ J
  106.                 if (c == 'y' || c == 'Y'); I. I1 @9 N1 n  B* z0 Y, t
  107.                         break;
    2 `( u& b& y7 J+ j& e3 D
  108.                 if (c == 'n' || c == 'N') {" w7 `+ M+ N5 F! z9 x6 ?6 J
  109.                         printf("\nAborted.\n");
    % k; {, N# S. q: c7 H
  110.                         return 1;* ?: d& @* J- p$ i7 R3 X# P
  111.                 }/ g3 H6 Q2 |  z+ m
  112.         }: a/ _2 @1 x5 g2 q' F  P2 O
  113.         if (writeparam(mac, stbid) == 0) - U5 A& G- q5 A/ b
  114.                 printf("Parameters changed.\n");* v3 @: J9 `7 J7 {& O: q2 i1 Y
  115. - ~  s8 ~) `, U7 U* s, C
  116.         return 0;
    8 F. Z' A+ u5 w% d1 b( 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 5 u9 v2 ~# \: \0 D* ]5 d
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 u) T2 V6 g$ Z! T8 x( p  C你用的编译命令行格式是什么?
9 B& b4 X9 ~: R- n9 E% B+ N& X
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-5 06:39 , Processed in 0.024828 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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