找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15263|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 Z' ]" x6 M9 |- S
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# \2 x2 a; l, k1 z6 V+ X) Q# {
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; m5 z$ R* E2 r( I, S0 S/ G) Ausage: himr <address> <value>. sample: himr 0x80040000 0x0
8 l2 \: w" c2 v/ a. ^9 s. P0 H1 |9 }: v' w& W1 K

) ~1 P) }; G% Q) G# `不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?$ R5 f! s9 g1 I$ A  \. K3 u% I; t
4 ~/ [' K5 `  Z; B* p
补充内容 (2012-3-8 09:42):  ~9 I+ X$ u8 J4 W5 f
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- i% A0 j( |" o& q- _, @这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
( Q, @* F" C; J7 O$ u7 U# b5 g) _1 S2 F, c( e  X% }4 h2 n% t: N
himr <address> <value>. sample: himr 0x80040000 0x03 d7 `/ R; v$ X" ^3 h( \! N

1 z* L) w' k$ ]! o! Z% a" M例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" U1 Z4 g7 Y% k9 y1 Y# I; Q
himr 0x80040000 0x00( \4 P- P3 `  @$ w7 Q
himr 0x80040001 0x117 U% Z, \" n1 \  [& j6 H
himr 0x80040002 0x22
5 a6 a: r* S. H* k$ {5 x+ Whimr 0x80040003 0x33
; A9 ]6 }9 \8 c; lhimr 0x80040004 0x44, G; v' s( P/ x9 V# N  y; F( J
himr 0x80040005 0x557 B$ j" q$ r1 t3 g7 l7 j2 T
* [: n& e; W1 g2 O$ Y
SN也是类似。) j) x2 y! v) F) `" X3 K* G
, L+ _+ ^. r5 W7 w+ b
现在主要是,谁告诉我们MAC和SN的地址?
& d; r$ V4 O) r2 l2 j! K8 B
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% h. {5 _  c1 c一直想找到运程修改MAC和SN的办法,苦于无解啊

0 d: b* `5 V0 e4 P6 r3 F- ]源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) J* _) G6 t: h0 w0 O4 z5 L
2 o, T) ~. p# a, r- F
修改的代码早有了。到今天不会编译。
* t5 H3 h% f; S, u/ _4 W# u需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  e2 K+ G( Y0 V  \7 L
  2. #include <malloc.h>
    + @7 X$ ]" I4 c7 b  G' g
  3. #include <sys/types.h>
    7 q! a& R; A. A, Q8 w
  4. #include <sys/stat.h>
      X: a6 v, P" f" U! v' s
  5. #include <sys/ioctl.h>% E: c; [2 a$ P& E
  6. #include <stdio.h>2 G/ s. z$ O5 s$ Q3 x* H
  7. #include <string.h>& N3 N7 H+ z6 y7 r/ {7 x. h

  8. 9 u( f% `0 n/ V$ z$ N
  9. typedef struct {
    + E9 ?5 u' Z: O0 Q# q  p1 F
  10.         unsigned int        e2prom_cmd_sub_addr;
    ( z7 V7 {! W$ h6 `& K
  11.         unsigned int        sub_addr_count;# O1 P1 D/ x: c1 K$ ^
  12.         unsigned char*        e2prom_cmd_data;
    0 m# x0 `- p& _- t2 `0 o$ ?
  13.         unsigned int        data_count;
    + Y- I) R8 O0 O
  14. } e2prom_s_cmd;" M2 k" H& a: f, e7 ~' E

  15. + N3 H: T9 k1 c- w/ l( Q
  16. #define E2PROM_CMD_READ 1' ]; c* Q) f1 S# I
  17. #define E2PROM_CMD_WRITE 2
    ) p- s. Q( y& H0 E$ `
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 p- ^) N7 ?7 T1 \5 ]: _5 V
  19. 3 o1 ]2 h0 f/ ^; L. B# F& R
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! t3 y2 b& w( R8 N6 P1 H  _
  21. {
    8 J; T3 v+ r! e& ~
  22.         int fd, ret;
    $ Y" S. Z# H8 I+ P3 v
  23.         e2prom_s_cmd arg;
    * H# W: |3 A0 C0 t
  24.         unsigned char buf[0x18];
    9 o3 ]# ], R6 ^
  25. 4 l+ Y- P8 }# ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- c/ K4 f( p' C: u
  27.         if (fd  < 0) {
    . ?; ^% J' W% k' m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 B5 d; ?8 ~8 f; Y( ]
  29.                 return -1;4 q! W. x  x2 n7 Q$ e1 Z
  30.         }; {0 s$ ~8 h) g8 d/ u& x$ j) U
  31.         arg.sub_addr_count      = 2;
    5 L1 K+ L' C2 G- H, @
  32.         arg.data_count          = 0x18;
    7 f" Z4 c' t6 c9 ]
  33.         arg.e2prom_cmd_sub_addr = 0x290;' a: u9 i+ O/ Y* O8 v
  34.         arg.e2prom_cmd_data     = buf;
    9 V1 D; ], ~8 D0 I: `" J
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ ?% |& s) t) Y
  36.         if (ret != 0) {1 l6 S5 c0 E5 |# p3 z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    + y6 {9 p) x0 H1 Y% x9 \% s
  38.                 return -1;9 B+ V4 J/ z* T, z* ?4 S
  39.         }3 ?; q: \; p' g; F
  40.         memcpy(mac, buf, 6);
    % R. |, \  J4 S4 f2 `+ t  [0 b- e( a
  41.         memcpy(stbid, &buf[6], 18);" g5 [8 }' }$ K
  42.         stbid[18] = '\0';2 `# ^* ^9 U  n- t
  43. $ s3 T- a5 M: p/ Q- v; a6 M
  44.         return 0;
    # N% q- h/ h# K- |  r
  45. }" ^- J4 C- }+ I8 T) `

  46. + R7 A5 g" D  a" Q3 D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)* g6 L& Q" D8 m9 a9 d
  48. {3 z. k# n, H% }& ~
  49.         int fd, ret;
    2 W4 |) b& [6 X* `6 u6 T" I
  50.         e2prom_s_cmd arg;# ?: o2 [2 t0 r4 h, b
  51.         unsigned char buf[0x18];0 i/ d, h" s! Y
  52. . I. Z# d; e. J1 T* |% k' }2 ?% P
  53.         memcpy(buf, mac, 6);$ P% `' m3 l* p6 W% L6 s
  54.         memcpy(&buf[6], stbid, 18);/ m9 \% V- t4 Y% }3 k: {* d
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . _$ M- a& P# s! l
  56.         if (fd  < 0) {
    9 r% `6 a7 L+ }) O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , I* b% i3 ^  ^& ~" p! K7 l
  58.                 return -1;) h' V0 I! r: R, m6 B& p
  59.         }: E4 C) a, `2 Q! O  X
  60.         arg.sub_addr_count      = 2;
    1 \# W/ a; L* o0 ^9 ]8 h
  61.         arg.data_count          = 0x18;
    ) I) p- @. J3 p5 ^4 W
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : T) Y' ?3 J0 s' [# K) ^
  63.         arg.e2prom_cmd_data     = buf;* x7 E# m/ x, V2 [1 X) Z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + q. a5 c2 o+ M: W. _5 P2 f7 e' C+ s
  65.         if (ret != 0) {
    ! r* N- c$ b9 Q7 M. V3 s! o& i
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : v) q8 A0 t* a4 J$ p# ]
  67.                 return -1;
    + t  s  ^% l5 C. @
  68.         }6 S4 p1 X& ~; W# r/ a" h

  69. 5 r" I, d! y8 y+ [6 N% _+ @
  70.         return 0;% }, ?2 E! u3 {
  71. }- E$ P- d: r) b& _  n: i/ x) I  l1 e: t
  72. ' M" T5 j7 Q7 a  |$ ~) {
  73. int main()! H4 u; s, W" a$ ]' `4 s& S& A
  74. {3 E1 Z% {* x+ B: e5 M( v/ h
  75.         char c;% j+ X/ L3 u* K, G9 k% u
  76.         int i, macs[6];
    8 L0 o, X* ?( w; Q
  77.         unsigned char mac[6];; R! x# b* D; c' Y: x1 x
  78.         unsigned char stbid[256];
    8 b( k& i( j3 X
  79. % H- O/ K  P) R  U  P1 E9 r' g
  80.         if (readparam(mac, stbid) < 0)9 u* Q4 g$ j$ e
  81.                 return 1;" L6 Y4 i" T0 U9 u% M4 f( E% i- s

  82. $ v: C+ h1 h/ M; [
  83.         printf("Current parameters: \n");, M# R, ^8 J$ P' \
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ f/ ^: G  ~. x
  85.         printf("  STBID: %s\n", stbid);
    - w7 ?4 E. P/ ~/ @1 L/ x, w& K! V
  86.         0 J) @2 I( D; i$ \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ' [+ p5 X; e) t+ P# w" Z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {: s! C: i4 Z( I. j
  89.                 printf("Input MAC error\n");
    ; {3 y3 G; {3 }* e) w% ~
  90.                 return 1;. c3 n6 h$ D& T0 p% q. u% K
  91.         }4 j4 e! X! H6 A  l& [4 k6 a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# I* m7 H7 ?' ]; C. F/ f
  93.         printf("\nPlease input new STBID: ");
    3 B& T* i8 o+ X9 y: x: A4 Q4 U, w8 s
  94.         scanf("%s", stbid);  d2 b% {1 s+ q2 ^
  95.         if (strlen(stbid) != 18) {7 F  k  @. }5 G' @! k* f. L- Z, s( |
  96.                 printf("Invalid stbid\n");
    # |& s# d2 l8 ~# |8 i1 p
  97.                 return 1;
    . u+ j! |" a  t; q3 N, Z$ p
  98.         }
    ' i6 U/ o+ _9 J3 T+ J& c0 _
  99.         printf("\nNew parameters: \n");
      f: ]& Y' j+ q% j* v/ X3 S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 z6 {$ H# Z3 K& B8 n- Z* }
  101.         printf("  STBID: %s\n", stbid);
    4 d' M! `1 l0 v3 o7 C. B. N

  102. ( B( m, l# }4 j7 l3 G
  103.         printf("\nDo you want to change paramemters? (y/N) ");' o9 M8 W7 y  R" r1 ~/ S
  104.         for (;;) {* p# \* s, y: H8 i2 k7 p/ y
  105.                 c = getchar();
    5 d8 ?) H1 z: P
  106.                 if (c == 'y' || c == 'Y')
    1 Y, p7 \) ~6 a0 @0 @
  107.                         break;
    1 U/ Q7 f8 f( s0 w6 |
  108.                 if (c == 'n' || c == 'N') {
    " j5 h3 E7 Q  i0 Y) V  F. H
  109.                         printf("\nAborted.\n");8 ~  v: `' y+ I* b; F4 P
  110.                         return 1;
    + k. \) Y- t- Y+ n1 n2 l; O& i! |2 o
  111.                 }
    $ W7 @3 _) W' X% O! D4 j; c% y! {
  112.         }: ~% u# c4 o! G! V
  113.         if (writeparam(mac, stbid) == 0) 1 `. k- x& @! n9 v1 \- F
  114.                 printf("Parameters changed.\n");
    8 B# b9 V$ D6 i' ?6 T9 `( q

  115. 8 F; n( h3 m0 ^; V; g: b2 O! j
  116.         return 0;" ]' }2 h1 T# M( 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
# j6 ]- M2 D4 T! k* b. j在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
3 a) n5 {$ F% b( U$ I' K0 i
你用的编译命令行格式是什么?
1 z+ k, V0 g# L6 o* {' Y" ]6 k
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-14 07:57 , Processed in 0.040481 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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