找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15450|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . P# |" Z* B' V, k9 z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig, X5 e- \, ?; U, S/ B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
6 B8 k+ T2 N2 d/ A  gusage: himr <address> <value>. sample: himr 0x80040000 0x0
7 B1 K- h# Y6 p- Z8 p2 a1 y
# F4 ?  |# t6 P* m2 h/ {: V- h0 x6 S9 K' j, \/ A" [) @) h, @4 j
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
( Y3 T" i$ u7 S& f1 M% W  h7 s$ F# q) S' n
补充内容 (2012-3-8 09:42):
+ n0 O3 U% W  ?0 a  @& i4 jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 t6 K9 U4 ?. P) Q8 ~  _* h这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。6 D6 C& o3 `  K  y1 m( |3 f

/ z. [) s9 x4 j4 _" t' S* e2 Thimr <address> <value>. sample: himr 0x80040000 0x0
& U" |+ P8 h( R# @( \) W; K$ o. K
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 Q) w/ E8 O# `+ r  V
himr 0x80040000 0x00
0 o( I7 F# I/ {% a3 qhimr 0x80040001 0x11
1 I! S7 Y9 t4 K" bhimr 0x80040002 0x22/ S2 U' x1 i  u9 _
himr 0x80040003 0x330 P% {, ^* z/ B( `$ b  W
himr 0x80040004 0x44
* m  ]- U0 `1 B3 S2 h* [himr 0x80040005 0x55, f8 v% ?1 M/ F6 ~3 e0 l

* w7 S3 \7 W% w! nSN也是类似。
6 T' w4 N8 ~. a! {
) _( f( b" w/ C9 u4 `2 B+ L现在主要是,谁告诉我们MAC和SN的地址?3 T) m1 E! E3 E# b% z/ @; }
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 \# V+ _, ]2 @3 d& J一直想找到运程修改MAC和SN的办法,苦于无解啊

5 e5 k1 g3 V* G& @; [: `, {( f源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 7 |' M3 V8 g8 F. G6 a( B

  O, X5 M$ G9 r, M8 I$ c修改的代码早有了。到今天不会编译。
) I7 o4 @: r% h8 `0 w2 T9 ~需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 }( C0 g6 i: u& u2 ~: e, O
  2. #include <malloc.h>
    # B! K1 r- d& a. S7 p5 d
  3. #include <sys/types.h>
    ! n( c' ~" w( o1 g) O3 E$ \
  4. #include <sys/stat.h>
    # O/ w! b2 ~& G: u; g2 C4 F' a' }: G
  5. #include <sys/ioctl.h>
    & n9 E6 h0 [1 ^. M2 U* e/ w2 C
  6. #include <stdio.h>
    - |9 L! w/ F1 J0 V- [5 f$ Q$ t' k( k) \  ^
  7. #include <string.h>* u- Y. z1 ~) u/ E( S7 t

  8. ) M, p1 r9 j! P! q9 M
  9. typedef struct {
    - K! E2 p- n; s, \2 h9 y* q
  10.         unsigned int        e2prom_cmd_sub_addr;7 M+ }* ?7 }! g+ D  {3 p9 V4 S8 |
  11.         unsigned int        sub_addr_count;& `! S; f& l7 r) }5 y* V: [/ i
  12.         unsigned char*        e2prom_cmd_data;) j( @$ {. R# |( _$ B
  13.         unsigned int        data_count;
    7 V( r2 S3 _0 v) p2 i- d
  14. } e2prom_s_cmd;
    & d8 H& G" n3 j3 Q6 D

  15. & l" R% \9 x: g
  16. #define E2PROM_CMD_READ 1
    5 c8 q' A" Q5 w2 s$ K4 e
  17. #define E2PROM_CMD_WRITE 2
    9 V8 U) a: j7 J1 I) w9 _
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 A$ V2 g( q; e' v
  19. 2 {: N& T2 m, i+ y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    % j3 Q  b1 b# ^, F" ?
  21. {
    1 r; r3 X' M- s0 h
  22.         int fd, ret;
    2 ?: k4 U  P& `5 A+ S
  23.         e2prom_s_cmd arg;
    . y  |) {1 D- h
  24.         unsigned char buf[0x18];
    0 o" c9 h( C% j' B2 f# a1 N' g0 _6 c
  25. ; Z2 J# W6 G# m4 o7 @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ {7 q8 K! R1 x- _5 p& ^
  27.         if (fd  < 0) {6 P, D" n- F; f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);, K( _! u: x, `* T3 O6 ?8 w
  29.                 return -1;6 c3 m/ ~/ a+ I( ^) S* T
  30.         }
    & _9 m! O3 r& P# G5 Y* [0 o
  31.         arg.sub_addr_count      = 2;
    - t: E8 I* R& }) c7 W; b
  32.         arg.data_count          = 0x18;4 a; ]: H9 f3 W2 ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;# D  N. q" W' N: i, L& g9 i9 n% |/ M$ M
  34.         arg.e2prom_cmd_data     = buf;$ M# A- j, F; F( E7 l- R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' u. u7 ]& ^$ I8 j, Y
  36.         if (ret != 0) {! J) H/ s0 d% i* G. W2 w. q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 V  w) S1 `- u; D$ Y" `* w
  38.                 return -1;
    5 o- w8 A' H3 D% E
  39.         }, @, S/ ]- w2 j# x  }
  40.         memcpy(mac, buf, 6);
    / _' G1 m, D/ _% v
  41.         memcpy(stbid, &buf[6], 18);
    ( D6 ^( H/ q; b) p1 N: p4 I3 |
  42.         stbid[18] = '\0';+ N& S  F! m- s! ^, U- ?
  43. 7 c5 b% v/ `+ c& Z& e) f' _* z9 c
  44.         return 0;6 _0 }3 N% {6 q5 D
  45. }
    . j. e' m4 Q- q" L  k' k

  46. 4 m; z; _" h- M5 f; l; D( H7 e
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ' ~4 A: t- l0 d7 i2 z/ ]- U1 E! V
  48. {
    ! g. Z, R" z$ E# y! T/ }
  49.         int fd, ret;
    ' Z1 `% A9 Z) w4 b5 T
  50.         e2prom_s_cmd arg;
    9 r% z5 v! W  I, f0 k. z
  51.         unsigned char buf[0x18];
    + x/ t) w4 @9 v9 |$ K4 W

  52. 1 Z9 u1 n4 J' _! T; @
  53.         memcpy(buf, mac, 6);9 `2 R" z+ U, M
  54.         memcpy(&buf[6], stbid, 18);
    % l% _# M! V+ H5 O; f4 W) D9 u
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% p* B; ^0 i( ^1 @' d: C+ g
  56.         if (fd  < 0) {6 J2 s% \. j* A- ~" d
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);. ~# V1 \1 ^& S$ A
  58.                 return -1;
    3 Q& m1 o2 z& q/ U: B$ r5 a
  59.         }9 ]5 J4 {+ c& n  ^1 X$ s
  60.         arg.sub_addr_count      = 2;$ L  E& n- h6 z1 {& p1 @
  61.         arg.data_count          = 0x18;6 p$ A/ Z+ k; Q8 L2 m9 F! o6 v
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 U. l% N- X5 l9 l6 W: S* |" |  a
  63.         arg.e2prom_cmd_data     = buf;
    3 z! w+ t( [( o# V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ q( [& E7 T) J4 K  n6 ]
  65.         if (ret != 0) {3 H( O; v# q% K! g1 \& v/ T
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);4 s$ V* R. P/ ~( N$ M' N
  67.                 return -1;' Z% K) s( y7 G- A9 E! j
  68.         }
    % _; I# R& U( q8 S

  69. 1 ~4 O. [( \/ S9 {
  70.         return 0;
    , y& q* B& S, P: J/ z# L, j
  71. }6 w5 V  v* s9 t( \- ?- A. c% P: w9 l
  72. 6 a" s3 f1 Y6 L: q$ f1 Q/ h
  73. int main()
    ( t' \0 ^0 c* p! e. P
  74. {
    $ g; t! p7 J# d+ D
  75.         char c;! Y& L8 e+ b/ {/ q+ E9 Y& h
  76.         int i, macs[6];+ Y6 s& I4 \6 m+ J0 ^& d1 j* |* H
  77.         unsigned char mac[6];
    / a& ?8 O$ d. k
  78.         unsigned char stbid[256];
    " r2 z" k: [' f" M" m( I/ e
  79. ! J/ R$ y% ]& @' h- z; s( V
  80.         if (readparam(mac, stbid) < 0)) {/ M) g1 X  e2 y
  81.                 return 1;
    7 b7 h; l3 p3 o1 ]
  82. $ }* C! W- t  |0 {4 L3 ?
  83.         printf("Current parameters: \n");
    # t) [4 ?# j' S3 T/ G
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; L& e* G0 P" x: T# ^  F
  85.         printf("  STBID: %s\n", stbid);+ T( b! C& s5 F9 Z, ]* }/ s( H
  86.         + g7 _" D$ d' X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 x1 f' X0 s5 G% ]( ^5 u& ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 ^. c6 q: ^7 T0 L: h& ?
  89.                 printf("Input MAC error\n");
    0 q3 Y0 Q9 h% a9 l7 n
  90.                 return 1;
    ( @# ^  _& f& a3 E! ]9 a
  91.         }
      G2 U0 o& w8 p1 |9 L# r
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    $ S- {6 H3 D$ v8 e; ~; V% `
  93.         printf("\nPlease input new STBID: ");
    / T2 o* O( T% [. i9 `
  94.         scanf("%s", stbid);; Z1 e1 z; D  I% J; C. I* @
  95.         if (strlen(stbid) != 18) {+ L1 v* O9 b4 @9 H: c! t
  96.                 printf("Invalid stbid\n");3 V% \+ ]# T% S! v
  97.                 return 1;7 r1 S( i) r2 o2 b
  98.         }8 b$ o- `0 H. c* t  y0 _
  99.         printf("\nNew parameters: \n");. S; ]* c1 w" ^
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 Z2 }- F$ N" m- c
  101.         printf("  STBID: %s\n", stbid);
    7 b6 \! s1 n$ Q3 X& ^" _; E( x
  102. 7 T# Z0 `0 t5 d; ?( L/ m8 _* ?
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 N: M- F0 H& j3 N3 D
  104.         for (;;) {) c' `( s6 L6 p) m1 n3 d# s
  105.                 c = getchar();
    2 O0 }9 x) j( l1 j# P% J
  106.                 if (c == 'y' || c == 'Y')4 N2 ?7 ]6 E: r
  107.                         break;+ v: B( _9 y6 b& B) n+ p
  108.                 if (c == 'n' || c == 'N') {
    9 j5 g) M6 v# f( J' d7 ^. B6 u8 `
  109.                         printf("\nAborted.\n");
    3 J: z* J/ y. o: s: w
  110.                         return 1;# z3 {; `) U, @& m# z
  111.                 }
    ; S8 W% N- k* b
  112.         }
    6 i7 M- S7 J5 w
  113.         if (writeparam(mac, stbid) == 0)
    4 J; c. D: w! e  T$ [
  114.                 printf("Parameters changed.\n");
    ' _  E5 `& T% [3 b
  115. & \; q$ R/ l, N( W
  116.         return 0;
    % P+ A2 I' a6 R
  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 * K& U% `$ ]- @2 e, d# a: ~
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

$ G  B6 s. h# C, h6 I* G你用的编译命令行格式是什么?, @, v0 M9 x; W' o# u
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-6 23:14 , Processed in 0.026112 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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