查看: 17473|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ K7 e& i) H; [8 C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 s# b8 E! Y' o0 ?) e% y8 y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:3 n: n9 @# h9 d: X3 U% p) ^/ n
usage: himr <address> <value>. sample: himr 0x80040000 0x0
. d3 Y9 b* B( q6 A" e1 ]; Q5 `+ I4 i$ M7 z" ?- h

' z2 Y" _/ ^% n/ G8 X1 ]不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 p$ A' s% H; t7 A: \

/ e& D# ~( v' S0 b补充内容 (2012-3-8 09:42):1 x, {0 W0 m# _* R3 s
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( b! B( }$ |4 ]
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
; e; Y9 {3 {, R$ R2 ?2 [4 [3 \/ c* k. t( G2 e* o% c8 w* V
himr <address> <value>. sample: himr 0x80040000 0x0/ Y6 u7 Y3 ~/ d
% m% r: U( [" j( t7 e
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# g% F4 I9 Y6 @* H; o2 e
himr 0x80040000 0x00  M$ z: X6 N! ^5 ]# r  O
himr 0x80040001 0x11! M* q1 V# |( S; v1 b
himr 0x80040002 0x22/ u! I7 M6 h8 U% }9 ]2 l, J
himr 0x80040003 0x33
* H5 b8 T! A; b& M2 z  Ahimr 0x80040004 0x44' K/ f) o5 }0 |
himr 0x80040005 0x55
8 Z; o2 F6 o8 P  j$ z/ f6 l  K$ Z; _) I, z
SN也是类似。5 ?6 o$ w# X8 }  [/ K: f

1 m9 [# |. f* T2 ]; V现在主要是,谁告诉我们MAC和SN的地址?! M; K3 y' p# V4 J8 B
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ) z  g& e! |9 E! {, [
一直想找到运程修改MAC和SN的办法,苦于无解啊
  `( U" P. Q5 H' L) R  j
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   y  |2 P- f9 X6 f

- `! H/ N9 J3 E/ M- H# Y  n修改的代码早有了。到今天不会编译。
6 l, x/ `- p8 Z9 g6 y需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>5 ~4 R3 Y& [1 m
  2. #include <malloc.h>5 d# r5 N/ J+ k9 R' X: f
  3. #include <sys/types.h>6 V8 B  `- L6 d/ `1 ~
  4. #include <sys/stat.h>
    6 @6 g, _; i) J. [
  5. #include <sys/ioctl.h>6 i- ?& G3 I0 `- h* t/ q
  6. #include <stdio.h>9 ~* v* _: q$ B
  7. #include <string.h>
    ' M: ~; O$ m7 Q1 C6 |9 _( |

  8. ' k& p  J0 p; ]& P" b( }; B
  9. typedef struct {
    7 E9 O( @8 J1 q' L
  10.         unsigned int        e2prom_cmd_sub_addr;9 A+ o# }2 l; u; R
  11.         unsigned int        sub_addr_count;
    ; s' _9 d7 w1 _7 l- V8 ^" d
  12.         unsigned char*        e2prom_cmd_data;. t5 D3 s8 L" [' F0 m
  13.         unsigned int        data_count;, \9 y% l4 r3 l; a: z" ^+ [: a
  14. } e2prom_s_cmd;
    3 s7 q5 I  ]' m1 ~7 r- Y

  15. " T- k2 M0 G6 f
  16. #define E2PROM_CMD_READ 17 u8 E7 N8 K8 {) x8 ~
  17. #define E2PROM_CMD_WRITE 24 M. i- I0 |% o/ G
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 A* W9 p* E* ]0 @7 U

  19. ( @3 s( Z- u& v% p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    5 h% w/ I3 P9 E+ m+ F1 K0 w
  21. {1 H& N! ~$ v* w5 i* [, W/ T. O& d
  22.         int fd, ret;
    / m9 c0 Z( V7 j, U0 T1 \( @
  23.         e2prom_s_cmd arg;
    / f- p0 d$ s( [! X. e" y& J
  24.         unsigned char buf[0x18];: l4 w- T( ?: d* _

  25. ! G$ n. w  s# C7 g7 u2 k& {0 v
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 w, o8 R2 d; `" y" r: m
  27.         if (fd  < 0) {
    $ W. B3 M$ o$ o
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + D( D  D/ [8 j+ R3 x: c' {
  29.                 return -1;$ I, A* ^# W5 H' w8 D
  30.         }6 X4 Y6 ^3 x+ M: @+ m8 d3 {
  31.         arg.sub_addr_count      = 2;
    ) ~: J' e# w/ z7 ^# Z
  32.         arg.data_count          = 0x18;
    ; B1 W. E! B/ E4 b# H% h5 I: o% w
  33.         arg.e2prom_cmd_sub_addr = 0x290;* e' I% A* b0 O% U2 V+ {6 h
  34.         arg.e2prom_cmd_data     = buf;* q0 @2 _$ n: E) b3 _& N1 T
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , g0 O$ B! n9 `3 l* x6 F
  36.         if (ret != 0) {
    8 }3 b& S; s2 [- f4 }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);' h% i' k4 l- [) U3 h
  38.                 return -1;
    # `4 }5 H7 s. |8 S! _3 k4 z# }
  39.         }' b% B) \2 m: R' `/ h
  40.         memcpy(mac, buf, 6);7 B  V# @7 L5 ?% c3 U1 }
  41.         memcpy(stbid, &buf[6], 18);1 e  c  U1 _8 o0 r* J  Y  }) a
  42.         stbid[18] = '\0';
    8 h2 t7 @2 y0 H) m! e  u
  43. 9 V% U; G$ K7 O- |& O0 T
  44.         return 0;0 X* |: e- X2 U  G. ~% ]' ~! P
  45. }0 L4 z- l+ J$ R+ h" h6 }4 e3 R

  46. 3 l1 |" R" y! i- c! j) a/ r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ x* V6 }) ]! e+ [  P' f  c
  48. {
    3 P* C; Y7 O; o2 T! r
  49.         int fd, ret;
    8 A4 N# B/ E; E- P! `
  50.         e2prom_s_cmd arg;. x6 M6 _+ ^* p; m# G# y5 Q7 E
  51.         unsigned char buf[0x18];
    6 O- I* {3 s9 @; b# W( s8 }
  52. 2 n4 v7 }; R! V7 S4 D3 K: A5 b5 l9 a
  53.         memcpy(buf, mac, 6);% i! N8 h( `7 b; U$ r% k
  54.         memcpy(&buf[6], stbid, 18);% _& {7 c1 X& x' r9 a2 s
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! a; S- r  L( y8 i9 \
  56.         if (fd  < 0) {% }* o- {6 w/ ^$ ]( I  h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 m. ?* E( q8 W4 h% ?5 t4 Q
  58.                 return -1;$ Q2 }* D" w% p% X7 f) d
  59.         }
    0 j' @. |4 q: ]8 d) ~  p; ~# m
  60.         arg.sub_addr_count      = 2;7 g5 i6 e: M6 V* y1 h* `
  61.         arg.data_count          = 0x18;  J8 o9 m5 J7 f- n1 H! q7 E; t
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 h" w* u$ f! b  G. o
  63.         arg.e2prom_cmd_data     = buf;1 i( R' q+ R7 ]5 P& I
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 P6 r- E) o9 t. s! \+ V" S  @. U
  65.         if (ret != 0) {5 d  @7 m$ t: o6 D/ p. G
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( \' D9 u- }; A4 F% m0 o4 P
  67.                 return -1;5 Y/ Y( B3 c# ~/ }5 L
  68.         }! a# L# o/ @4 |: O) Y
  69. / m5 G6 t; [% D. u* k
  70.         return 0;8 y* B$ d6 P& o; [  ~
  71. }3 h$ ~* k! y6 i# P9 C' M

  72. ) G6 J; x" u9 v
  73. int main()
    ) K/ Y! s2 ^# S
  74. {
    * A4 e6 U2 P$ l2 @5 D
  75.         char c;
    ! f+ o. C1 {8 b% f
  76.         int i, macs[6];' r) G0 l2 b& s8 T, ^6 m/ u" L
  77.         unsigned char mac[6];
      Q8 N2 ?' j, r5 f- w
  78.         unsigned char stbid[256];
    + ]/ }) ?6 b, ^3 L& Z( T1 I/ T
  79. % u! ]8 I8 a: e
  80.         if (readparam(mac, stbid) < 0)) d' j4 Q4 k* g$ ^# h, Q% I
  81.                 return 1;
    + o/ P( n% w. [
  82. $ A9 n' X  D6 M+ B$ q+ }4 z6 v0 U
  83.         printf("Current parameters: \n");
    4 k3 i- ^* a/ X! ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 ~7 }% j0 m. B# H' O$ e6 ]0 K* Y
  85.         printf("  STBID: %s\n", stbid);
    ( m; @+ Q* [* G" F  c( [
  86.        
    3 b% j/ O, l# ^( p+ {, [
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    % v  M3 c- f( p9 B, Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    0 f- V& t3 _6 [8 b
  89.                 printf("Input MAC error\n");! ~& U: l; T/ ^4 [- M2 m8 q/ Q( ^
  90.                 return 1;
    " |0 R: a- A/ H$ e. e
  91.         }
    2 Y( u, h4 L6 Q% q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) b/ I. |+ f% [' ?' s8 l
  93.         printf("\nPlease input new STBID: ");' y2 s+ X7 G; z$ P
  94.         scanf("%s", stbid);- ]4 Z1 a9 t- e) a
  95.         if (strlen(stbid) != 18) {
    $ E% m5 M! u& `( ^
  96.                 printf("Invalid stbid\n");
    4 z2 x) _) j" s2 [' g8 i
  97.                 return 1;
    " ?, r% G7 c) a4 }: `& t: ~# W
  98.         }
    + _$ V7 m6 Z+ |6 {
  99.         printf("\nNew parameters: \n");. T0 q* L. H  w7 q8 b1 l3 f5 D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 K1 r2 t' _0 k/ e. R5 x
  101.         printf("  STBID: %s\n", stbid);4 b( t, f. o4 ^7 v$ t! ~
  102. " Q3 M% h: K& b- M" u$ i! r. N0 u
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    7 Y  P/ a" k$ ]0 y3 {/ x
  104.         for (;;) {* I) g2 `7 d  K$ J# h7 y
  105.                 c = getchar();# {. A$ s8 Y: s# V% h' q+ s3 m4 T
  106.                 if (c == 'y' || c == 'Y')
    + w7 M0 e; ~) N; r6 D9 r. G1 u
  107.                         break;( ?8 K8 }9 m2 K2 s9 y) {" [
  108.                 if (c == 'n' || c == 'N') {
    $ J( O+ O, E/ Y3 E
  109.                         printf("\nAborted.\n");
    % i! `, K1 k+ h" C
  110.                         return 1;
    . W# E: f. {1 ]
  111.                 }
    7 z( i' _5 Z; q+ n
  112.         }
    6 D8 i0 N+ r$ K/ p( C* M
  113.         if (writeparam(mac, stbid) == 0)
    # u5 I. M3 |" n; p' |, u6 N, [, A2 B
  114.                 printf("Parameters changed.\n");
    & q" w: d7 ~# s2 G7 i; ]% t

  115. & k0 q; ^4 r1 `; n
  116.         return 0;/ b; T" k* {2 ^0 w* _+ }* V
  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
! H* |  S/ q7 ~* c, `在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ ^; t+ r& Z' F% J5 m* n
你用的编译命令行格式是什么?* j6 ?' ]8 ?+ `$ J6 P! j
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部