找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15458|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- ~% @. j9 X' W6 h
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! U7 A# @0 e* N
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
4 K& A$ Z4 q) c2 X7 O3 z  G. pusage: himr <address> <value>. sample: himr 0x80040000 0x0) u0 e, n, ]7 M$ l
1 X+ G6 j+ S* t$ Y! }2 w& t: I
+ \1 E6 U# {2 \
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ y2 Y' F3 b. X& r
( |3 ^2 S! p7 N8 d补充内容 (2012-3-8 09:42):6 I5 h7 D! w( R" s  [) t" Y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 B9 T/ J6 V8 r/ |  A这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。' f" R5 `" V' N0 W# _

# ^2 m* y1 f' z% ihimr <address> <value>. sample: himr 0x80040000 0x0; w; z9 Q0 h, ]( ?6 G# e3 X) ]7 A

' a* W$ \2 {; W$ c例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  f* b5 h' f$ I, whimr 0x80040000 0x00! s$ L8 s  |. Z
himr 0x80040001 0x11
1 u! I7 |; ^5 C9 }/ T0 x1 T# @. phimr 0x80040002 0x229 W: F( w: o; X7 P% V' L
himr 0x80040003 0x33
5 q0 ~- O# L3 m6 `himr 0x80040004 0x44
+ ?* u) z; W9 @" T+ x3 Khimr 0x80040005 0x55
" D# b, l$ r7 t0 |7 ^+ w  O9 K% a3 @
SN也是类似。* E/ B" y2 t- X8 Z
: ?7 t  F4 _  l; ?/ {) x6 S2 i
现在主要是,谁告诉我们MAC和SN的地址?+ |2 P% s2 z- z3 d: ^+ {0 J# U/ ]
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
. i1 t2 W, X, ~5 p一直想找到运程修改MAC和SN的办法,苦于无解啊

/ w: q* H; s+ c源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 7 H& x. z  r% A3 O4 Z$ R5 ?' ^

  x! L9 c3 r6 Y9 ?7 u. a修改的代码早有了。到今天不会编译。
; ~* H! x5 b: o7 W. i3 [4 Z/ J需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    : J; M6 M1 v; K- y
  2. #include <malloc.h>
    ( q! C6 n# ~/ l8 o0 B  i4 V$ B& S2 j9 i
  3. #include <sys/types.h>* a8 k' C8 @, D+ i
  4. #include <sys/stat.h>
    & Y* u/ ^3 y4 u( {8 c. v
  5. #include <sys/ioctl.h>
    2 D: y( @2 K" D0 A1 z7 H& _
  6. #include <stdio.h># p9 e! m" r0 n- B7 w
  7. #include <string.h>
    7 K' C- W% F: M3 ^) Y
  8. / V0 S. E! ?1 S0 [. J" H6 x+ w
  9. typedef struct {2 b$ F, `% K# N( ]$ Y( b: S! n
  10.         unsigned int        e2prom_cmd_sub_addr;
    / y! V1 e. z/ H" N4 ?% z0 g% e
  11.         unsigned int        sub_addr_count;
    2 ]% ?+ H9 a% e" f8 V6 H
  12.         unsigned char*        e2prom_cmd_data;
    8 L( G) h; g% F4 y
  13.         unsigned int        data_count;; ]$ G+ T2 I: |) K
  14. } e2prom_s_cmd;( G0 |- X: x5 V, r, [
  15. : I1 o8 ?: d  D8 V- E; }% R
  16. #define E2PROM_CMD_READ 1$ {/ w" `, H' o1 g
  17. #define E2PROM_CMD_WRITE 2
    " }- i3 v, u& }8 _+ p. \. t) {
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 [# d- I( n0 v' X
  19. 7 z9 ]2 {8 V2 M. E+ ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    1 s$ V- [' x; R+ r8 A6 J
  21. {) F8 @# C4 X1 A+ s
  22.         int fd, ret;; q7 N: l2 x4 C; p3 \% S0 g
  23.         e2prom_s_cmd arg;  ?1 B. I* T# C' W/ m
  24.         unsigned char buf[0x18];  K/ H0 O  F; o6 R

  25. 9 ]2 Q9 |2 `" I) h1 Z4 a
  26.         fd = open(E2PROM_DEVICE, O_RDWR);1 w- U  O% O) Y1 o
  27.         if (fd  < 0) {
    . G  U) ~( D) q) C$ ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);! I- f& [9 k% ~4 L( E
  29.                 return -1;
      p" [" O5 Z$ }& G5 x8 i( k
  30.         }7 U* g3 D3 N# T* ^
  31.         arg.sub_addr_count      = 2;! k1 \* Y4 v5 h2 L4 D0 ?& e# p
  32.         arg.data_count          = 0x18;# U1 T) E5 R$ x- y6 I$ n
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 @. W) Z- [! Y4 U/ B! `5 O
  34.         arg.e2prom_cmd_data     = buf;
    * D% O7 [/ ?. j; {) A  M9 ^# |
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    7 B  A* w# N- s( U+ \/ }
  36.         if (ret != 0) {$ ~+ E; k/ D. t9 V
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ y3 `0 i" ?# t$ `) x% z+ X
  38.                 return -1;/ d! A6 y# X6 @. X+ _7 h
  39.         }% Q6 \: d# d: ]0 H
  40.         memcpy(mac, buf, 6);
    4 O! e, N- o! a# n" m
  41.         memcpy(stbid, &buf[6], 18);
    8 |4 G- @& j+ ?6 K% {8 s
  42.         stbid[18] = '\0';
    + E, f2 a0 L2 \( j# z
  43. # `$ A8 H& j4 W2 ?* Q' I
  44.         return 0;$ \; L6 L- ^, b
  45. }
    + G" i% ]8 e  `9 h, k
  46. / d6 C8 ?  u9 G4 S
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 B: h( u/ `/ p
  48. {1 \; g4 v8 [2 b6 F7 h
  49.         int fd, ret;
    8 T8 b; _" P4 [- K  k2 o+ l
  50.         e2prom_s_cmd arg;% _$ Y* `) \2 F- u
  51.         unsigned char buf[0x18];
    - O5 G# s; _' G6 R0 I7 b" |) Z
  52. 1 {" v& j! c2 r  z" k
  53.         memcpy(buf, mac, 6);7 O0 r4 R6 [, X6 E$ E. D
  54.         memcpy(&buf[6], stbid, 18);
    $ I  f0 d& {! H3 E& q- W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    - ]* \0 P1 z" I  @* v5 }0 ^8 u; `
  56.         if (fd  < 0) {* m. v5 K% `0 N1 z$ N
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 I8 c/ n7 G( \7 R; L: _. l
  58.                 return -1;! Y$ n1 U5 f: m) c
  59.         }
    & v( m$ v! [' _9 \2 H, A
  60.         arg.sub_addr_count      = 2;+ s3 R% B7 y9 D+ S' Q
  61.         arg.data_count          = 0x18;' E; b: N: B  `4 j' s! {
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! m8 ~+ z  N/ M5 U7 i* ]0 e. R3 e
  63.         arg.e2prom_cmd_data     = buf;
    ' t3 X' j7 P# i, e0 ]6 I) {: i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 B9 h+ @; V* A
  65.         if (ret != 0) {
      j& n4 k5 J% M( U& U( }) [
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 s, ^7 f: k" `; [. U
  67.                 return -1;
    8 M, Z" u: _) ~7 l  _
  68.         }% Q6 ^& j% f9 c- _+ G! y# _  R- _

  69. 4 ?; U, d. o- [9 [: H9 K. A$ D
  70.         return 0;4 H$ U% h' n. U1 k- U7 G8 y2 k/ f
  71. }
    3 c- y9 R8 n& h+ x
  72. # G0 X' z9 r. q
  73. int main()
    + B5 r: w$ h: H1 I$ x; M" I8 C) V
  74. {, D" g* H: R/ G- N. x
  75.         char c;
    0 q2 c: k4 P, h  S& R
  76.         int i, macs[6];
    ( e+ L- N# F5 n8 Q% _7 _/ X- n5 J
  77.         unsigned char mac[6];
      `. c2 @$ H% X" n5 F
  78.         unsigned char stbid[256];
    4 P4 R! K* m' B

  79.   Q# {# x6 R9 {
  80.         if (readparam(mac, stbid) < 0)7 e2 y$ M7 M9 J$ L8 r6 r
  81.                 return 1;
    . G% J5 b, w4 ?  D1 e$ F
  82. 0 w: f, o( h* E- }2 S
  83.         printf("Current parameters: \n");
    # g. u6 b0 b9 U$ {
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. i8 D7 x9 w+ K1 [- A
  85.         printf("  STBID: %s\n", stbid);8 y# m: e: s, J
  86.         $ U5 g  @$ w- J  W0 H( ]! {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + G- F  y5 f" w  E$ [7 _  `
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" M" ]! p* O  p% s3 Q% _
  89.                 printf("Input MAC error\n");
    # n5 M% t' s5 }6 X/ m
  90.                 return 1;% h* Q. j, y6 o! U$ ~
  91.         }
    . W  Y; x: w1 x- ?! D$ S
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' x6 O$ N* `9 b  Q: |" H! C3 q
  93.         printf("\nPlease input new STBID: ");# M7 l0 W' Q1 R: u- V- z0 g5 {
  94.         scanf("%s", stbid);# K) U# f* y, \$ B1 n; ^0 c3 N# k
  95.         if (strlen(stbid) != 18) {, z% l) ~% G" @- r9 n- }! ~; r
  96.                 printf("Invalid stbid\n");
    + X, M- k( s1 ~+ t
  97.                 return 1;: j, l1 H0 Z1 ?& G4 G5 L
  98.         }
    0 }, Z" F7 D8 [- I$ `7 O4 B; G% I
  99.         printf("\nNew parameters: \n");, f) w- O1 N/ C/ x  Y3 `/ w3 X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 o) K% A# S; F8 ]3 T' I/ T
  101.         printf("  STBID: %s\n", stbid);
    4 @8 O& x5 o1 D1 E% f; v+ }

  102. % r& L8 |- b( D
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    : d9 }3 A% w$ A) t+ u6 Q
  104.         for (;;) {' p9 ~& E- }, I) B5 N# X! i
  105.                 c = getchar();; ?1 `7 V! Y  E0 T
  106.                 if (c == 'y' || c == 'Y')
    . n$ a' ?: g0 G9 R$ T" {
  107.                         break;7 Q' X1 c2 n- g* e
  108.                 if (c == 'n' || c == 'N') {
    . B( x; J1 Z: L+ a* p8 u
  109.                         printf("\nAborted.\n");
    ; w& n1 C* t* r
  110.                         return 1;& ^7 x  S2 ^+ C5 J9 |, |1 R
  111.                 }
    ; S8 P# u; c/ a9 V; b; ~" N
  112.         }6 J) M6 K9 |, k  S$ l. o! q% f
  113.         if (writeparam(mac, stbid) == 0)
    : [3 @) E5 v, y
  114.                 printf("Parameters changed.\n");" d( p3 T, h8 j* R$ x) a

  115. 4 A+ \2 C( W0 ^5 o, t3 b2 w: G& R
  116.         return 0;! {- Q7 o! v- q7 ?+ D
  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
) x! P3 G$ g4 x% d) U( G在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" q- q" Z' i( E. n7 Z' h$ U) z你用的编译命令行格式是什么?
5 T7 N! c# }: w$ J: Q9 ~
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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