找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15401|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  d' h- e. q$ \% h* R8 r
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ L' {2 S9 g- m, L9 T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
1 \$ _+ j( b7 b% qusage: himr <address> <value>. sample: himr 0x80040000 0x08 I" K* `$ E6 ^$ s9 }, k  U, i- h/ p. H; `
5 ?: T0 J+ k2 e( p% D: M6 }1 g( j

+ F& }) o+ b6 m/ D# o不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# t# G; t, }4 |2 r- d4 [. p% M& |- a$ x. I. w
补充内容 (2012-3-8 09:42):
7 I4 F' F* p/ I: _9 K& k  E. Hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% d7 K# s# q& ]3 N这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。: [# M( ?# u) o8 c% ]4 k

- \: R  ~) i4 ~1 P  L/ A2 rhimr <address> <value>. sample: himr 0x80040000 0x0
) a  x- B% f: A3 a/ m$ v- X
0 [& h# p; o0 u例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  y( H9 [$ K0 |
himr 0x80040000 0x00
& @! s: l( P+ v: J+ t$ f3 xhimr 0x80040001 0x11
4 ^; a4 k% O& P* whimr 0x80040002 0x22
! h$ N6 l+ m* S, h+ N2 g$ b' @himr 0x80040003 0x33
3 a& L2 K3 z: Jhimr 0x80040004 0x44- J' z; [& ^, i) A1 u1 o$ ~
himr 0x80040005 0x55. j1 A; p8 E' E$ G* x0 Q

% b) ]8 r3 O' \, F, _, wSN也是类似。
4 _( ], |3 s# c$ l7 ]4 n$ l! R% w
; w1 c8 v& e: O0 S' Z1 {现在主要是,谁告诉我们MAC和SN的地址?
6 N! Y" u. r& m
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 + l0 F3 G/ c6 X: E$ E8 f$ D
一直想找到运程修改MAC和SN的办法,苦于无解啊

: ]3 s- d# V+ T2 ?) v7 Q/ e4 D源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 Z# p4 S/ V4 O) c9 s0 k
+ L2 S' |1 \% k& A* s2 W
修改的代码早有了。到今天不会编译。% A4 U. U- ?2 F& b7 Q( n
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    7 a, P0 `+ b/ U3 w( \- M" n
  2. #include <malloc.h>; l6 O! w+ I( p" o! D8 F1 G
  3. #include <sys/types.h>
    / r' N: ~( K0 w+ ]- c8 P
  4. #include <sys/stat.h>: u2 z3 ]# K+ n7 j8 L) `
  5. #include <sys/ioctl.h>
    & S0 c) _' Z% x( {: r; H
  6. #include <stdio.h>
    + s5 ~" ?1 t; g% b- F& [
  7. #include <string.h>
    # D* h  q+ R' l7 u2 h

  8. 2 f. Q8 m' v% o! {  i7 _* R! n
  9. typedef struct {
    : G% k$ ?' }# k3 k* _( n
  10.         unsigned int        e2prom_cmd_sub_addr;4 g! Y. O, v- K/ u  u6 ]
  11.         unsigned int        sub_addr_count;
    ! T& H7 R% s; ^
  12.         unsigned char*        e2prom_cmd_data;! ?. O. H( m4 N4 m
  13.         unsigned int        data_count;
      r& X4 {% W9 I/ x
  14. } e2prom_s_cmd;0 C/ B2 ?  I# F7 w3 H1 z+ k. V

  15. # I. W: B( P5 h$ N# Q) Z* ]. B
  16. #define E2PROM_CMD_READ 1
    & |# h* t7 S  C  }$ J9 ?
  17. #define E2PROM_CMD_WRITE 2, i/ H: M- I4 x5 h. f1 F# @% ^
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ! `$ i4 v# s1 J

  19. 9 m+ C' {/ y, l2 b# U9 q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 h; z4 L2 J- @1 z3 s+ o
  21. {
    0 Q4 z9 T' w1 P2 V! I
  22.         int fd, ret;
    3 w. y& @: y# ?; s$ C" \# J) S3 i
  23.         e2prom_s_cmd arg;
    0 Q8 R3 N7 }" G
  24.         unsigned char buf[0x18];
    2 u- l8 O' ^8 ?# f) j+ _
  25. " R1 @, C7 E# F; ]& E
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , u1 @+ X# b3 t3 j
  27.         if (fd  < 0) {7 K# Z7 z; `7 x! t2 L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 H1 G+ v- |2 Z1 ]  Y9 G
  29.                 return -1;
    ( [. Y9 Q% Z1 `' r( P# J" F9 {
  30.         }2 B: ?& p  T3 h5 z2 m
  31.         arg.sub_addr_count      = 2;
    8 R3 i. q- k( Q4 W" ?
  32.         arg.data_count          = 0x18;
    . {9 u/ v' o+ N5 g/ E1 z
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 U% ]( P# c# g4 K* a. _8 T: {& k, Q
  34.         arg.e2prom_cmd_data     = buf;
    . r7 k8 K7 M1 Z, E5 J; L6 z3 j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    " s1 y1 f# O4 A; k
  36.         if (ret != 0) {
      z$ W& Y+ O+ o2 n. a
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# @6 [6 b! ]- p6 O0 p% Q
  38.                 return -1;
    7 v( Y8 Q9 E. Z
  39.         }
    : a/ ^# w! C# I/ H
  40.         memcpy(mac, buf, 6);) r+ {! ^0 g* y2 [6 l4 i5 ^/ H
  41.         memcpy(stbid, &buf[6], 18);9 Y- T1 L1 B8 K5 `4 A3 {
  42.         stbid[18] = '\0';
    7 W; B! b' m& v4 v  H( @5 V

  43. ! I8 o0 F2 Y. n1 W
  44.         return 0;& n, `& b& S4 A9 \& W% `, r  t3 T
  45. }
    . t" M; g4 m' F' c( Z5 r
  46. ' O+ ?$ r( z8 C4 ?5 Q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    0 T5 a) ~* ^* a# i6 l$ w
  48. {
    % P/ b" s4 y! `, H) Z
  49.         int fd, ret;
    & N4 G0 T0 T9 h5 p
  50.         e2prom_s_cmd arg;
    # ^. x! H" |$ C8 f$ `* o" n
  51.         unsigned char buf[0x18];
    9 j: T& E6 P. S/ E: t7 N! ^
  52. 8 g5 X' ?3 C5 ]/ w
  53.         memcpy(buf, mac, 6);. M5 N! D$ v0 ]4 J, G# U% }
  54.         memcpy(&buf[6], stbid, 18);
      D2 Y6 p- Q9 t# A; s# C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 j6 U' C$ B( W  P" Q5 ]
  56.         if (fd  < 0) {( ]  C, p+ R* I! X/ ?! @1 T/ |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 G- e0 s8 B7 @( o' U
  58.                 return -1;
    - P9 w4 y, K$ [: V* F7 W
  59.         }
    4 e( k2 G# f1 r: W
  60.         arg.sub_addr_count      = 2;% n& C2 f' z- i
  61.         arg.data_count          = 0x18;
    * r# S8 Z' G( D0 _) _& ^; h
  62.         arg.e2prom_cmd_sub_addr = 0x290;- |0 @" S* n7 t) H. U# ~* r
  63.         arg.e2prom_cmd_data     = buf;2 Y6 X/ S0 z! z- X! E0 x7 A+ L
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);  A; [! K+ ]* Q  u: j
  65.         if (ret != 0) {
    1 c8 r) S. F- C3 Y) S% @
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    9 e5 ?' b1 O6 w7 o7 B7 P% F4 x
  67.                 return -1;4 z! H9 r  G5 b5 x# Q
  68.         }: b$ i, O" i, o% _" q% E' _

  69. % ?+ `  j( b% r2 |  n
  70.         return 0;
    * W3 ~: E' b/ D" b6 w0 |
  71. }
    : p5 U! r" `# ^
  72. % E% h4 f0 n  U/ _
  73. int main()
    # h. V0 ^& N! y  f* r
  74. {' q  ]1 ^9 i/ W2 m
  75.         char c;# B0 M: O- l. J3 s) C, {" W# m
  76.         int i, macs[6];
    9 d% V; ]0 V: r
  77.         unsigned char mac[6];
    . y) [: D5 K1 f! l2 t/ Q0 C
  78.         unsigned char stbid[256];
    % e/ W# x. e9 P7 O( N0 |* ]" q
  79. ! [9 q6 g& ?+ _$ w) M! ^. t
  80.         if (readparam(mac, stbid) < 0)
      d9 v8 D, g. c# _0 @. `1 v
  81.                 return 1;. ]1 M+ H- Y1 \
  82. ' U9 G4 v7 x. D5 Z. ]6 `
  83.         printf("Current parameters: \n");
    & }( V; @/ p  ^+ ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( D  a% i: w6 ^! \+ Z( A/ J! L
  85.         printf("  STBID: %s\n", stbid);7 i( |8 K3 u7 q. c8 ^7 ]% D6 o6 d
  86.         . A7 O3 R' |0 U, k9 K
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; m! l* {6 y( {( Q, K5 S3 j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( J5 B8 m5 O! }0 l. [1 q/ x/ G3 T
  89.                 printf("Input MAC error\n");5 `1 K. `1 g+ D/ b2 w" u5 ~
  90.                 return 1;+ S, ^/ g+ K( ~1 g/ A4 U
  91.         }1 }7 e5 O' R4 d  }; b- S8 q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) [5 _( C( }/ ~  {  f6 w; e' y
  93.         printf("\nPlease input new STBID: ");+ j" n7 N- [7 E, Y
  94.         scanf("%s", stbid);
    : O( \  D4 d/ E) V% J& \5 {
  95.         if (strlen(stbid) != 18) {& Y; l* T5 J/ ]) |. U
  96.                 printf("Invalid stbid\n");
    ' v0 X5 p4 {( @
  97.                 return 1;
    . D' e$ C: L, |
  98.         }
    " c* k* E" I& M. K% F& F+ f' J2 `
  99.         printf("\nNew parameters: \n");9 a# Y4 B5 Q, }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! a# x! }* P: `* a
  101.         printf("  STBID: %s\n", stbid);
    . y. k9 T9 q3 `" A! _6 L
  102. 1 h3 J/ x8 R2 n1 ~. p9 ?) b% l
  103.         printf("\nDo you want to change paramemters? (y/N) ");# }* _/ G. X, q7 {2 H
  104.         for (;;) {
    4 @- x# r+ X- j7 r* N; H9 \' h
  105.                 c = getchar();$ y; d7 j6 r9 W: I$ }' q
  106.                 if (c == 'y' || c == 'Y')
    ' l5 l+ I( g; U2 l( f5 t
  107.                         break;
    : m9 _' a$ a# `+ ~  ?8 f
  108.                 if (c == 'n' || c == 'N') {
      n8 M# d9 j3 Z6 J
  109.                         printf("\nAborted.\n");
    4 d( q" v1 S& @/ m
  110.                         return 1;
    # l) ]! c, ?/ P, H! s9 q" t
  111.                 }5 r1 r! D* p! k' ?
  112.         }0 W; w6 V0 x0 s4 Z5 O
  113.         if (writeparam(mac, stbid) == 0) . S! U) |5 F# U
  114.                 printf("Parameters changed.\n");
    : i8 ^+ }2 Z7 h9 ~. I

  115. 3 c- ~' J0 o( l
  116.         return 0;
    2 T' Z6 O0 j* z# A6 v  X( M
  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
- d- m" Q- Q: ~. @% i在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

. C0 w7 _7 E8 Z你用的编译命令行格式是什么?
: X6 `7 x0 j8 p& j! a2 C
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-3 11:33 , Processed in 0.032071 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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