找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15747|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" J) W& a, e; m% R$ `
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . {  \: i% v# G7 A; U  e$ F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
0 F! i2 b! x% V1 Qusage: himr <address> <value>. sample: himr 0x80040000 0x0
- i+ N% i7 C$ x* U. A9 E- i. K5 N% \! Q
/ d& j( w) O) K+ P+ T( m9 c, v1 s
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& A7 J, i1 |  E; v; c. K" d9 G0 W9 j! `
补充内容 (2012-3-8 09:42):
2 W) {5 [' _9 V1 khttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; ?% I+ ]: U1 [6 Z2 e* A这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
% v/ l" X. o2 k4 E1 W
+ l% r* q+ G2 shimr <address> <value>. sample: himr 0x80040000 0x0( [% g; r% a: O: ]  d( U# m
7 D0 q+ B& A9 b- [+ T/ e4 {
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* W3 W) G; \4 q
himr 0x80040000 0x00  e& }4 u, J% t1 A: p  l4 ?$ V; a
himr 0x80040001 0x11
) T2 ^/ d) j, a1 j1 a$ [himr 0x80040002 0x22) t2 Y( v1 X5 @, g" l
himr 0x80040003 0x33
+ l5 n: u  i" g6 E7 Xhimr 0x80040004 0x44
% K- T. }. G' ahimr 0x80040005 0x559 ~! z$ J  ]. Z1 U/ y3 U$ @/ k
& B8 E0 q5 w% A( x5 O5 v
SN也是类似。
0 \& ^, Q' I- P, i
, L7 ~6 @: u3 q" l9 z现在主要是,谁告诉我们MAC和SN的地址?' ]4 q) e, m6 o  V! J" d9 b" g! ~
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ( |! Z( ~. T* t. J# e
一直想找到运程修改MAC和SN的办法,苦于无解啊

9 [' `. x5 c% i源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ O3 T/ C4 e$ q) D2 F4 R. W/ Q% }5 t4 t
修改的代码早有了。到今天不会编译。, v4 |  x6 _$ d: F5 u, c
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 m1 V( G4 d8 @5 }7 F2 q
  2. #include <malloc.h>/ c* P) T6 T4 W$ ~$ g8 }7 D: u
  3. #include <sys/types.h>$ ]3 M2 S  B$ |! `$ P  V2 r
  4. #include <sys/stat.h>
    ) Y+ m( c* b& ?- _4 n: L
  5. #include <sys/ioctl.h>3 _& a% h% y; W7 h
  6. #include <stdio.h>4 y1 i+ G) M) o' T# d$ i( I+ H0 s
  7. #include <string.h>
    ; \' N! G! L  ?. G+ X# ^
  8. 9 k, N1 l' }2 C- c& c+ f
  9. typedef struct {
    , @6 F1 T  V9 W4 n
  10.         unsigned int        e2prom_cmd_sub_addr;
      W! f/ h8 w' x2 U9 w! u
  11.         unsigned int        sub_addr_count;. ~/ {9 ?- A+ w0 r' y- N
  12.         unsigned char*        e2prom_cmd_data;9 j$ @9 c9 _$ ~4 ?# ~2 F. A& s
  13.         unsigned int        data_count;9 |( h4 b2 t' O, U" @9 l+ x
  14. } e2prom_s_cmd;5 [/ h1 e0 \  S3 T( |, ^( `$ d
  15. + e+ y# o4 v- x
  16. #define E2PROM_CMD_READ 1
    4 G" Z0 q" U$ W+ n8 }. i3 l
  17. #define E2PROM_CMD_WRITE 26 k3 c) f/ Y1 O
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 o  k4 D# V. t9 n

  19. " ?* ?2 K* H8 s& L7 H$ {) ?
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 I: p3 v! h6 a7 H: t' I; t
  21. {3 Z% y3 s! @8 R* V% {
  22.         int fd, ret;& F8 m/ r7 x  x) |/ o4 o( n# b) h
  23.         e2prom_s_cmd arg;% b) _0 [8 i. L; ?( R
  24.         unsigned char buf[0x18];& h) Z3 b; z6 m7 }' F+ f% E

  25. 1 q/ A3 q# P0 u5 a* Q1 h: r8 @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 S0 p* l& B* i, \, B1 h/ _1 ~8 A
  27.         if (fd  < 0) {
    ( m8 B- Z0 g5 W1 M) C
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 ~- ?* ]# m/ J8 c* A" j' F: Q
  29.                 return -1;/ X! a1 E( i3 q" F3 H9 u
  30.         }
    6 q' Z$ k9 {. y8 K& d/ Q8 K
  31.         arg.sub_addr_count      = 2;
    " s  D3 J; R  j$ H  r
  32.         arg.data_count          = 0x18;, |$ G* q- [1 r- m0 ]$ I2 r) T
  33.         arg.e2prom_cmd_sub_addr = 0x290;  `" s5 R) h- q! R9 _, ^# S
  34.         arg.e2prom_cmd_data     = buf;
    / K+ f7 d" j3 _5 Z) `1 k, z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    7 s/ U4 f) a! x' }
  36.         if (ret != 0) {
    2 }  a! u, }% @! R- ?, {
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " C3 G2 y8 E' S; v( m7 N$ U: `) x
  38.                 return -1;* B5 |5 ]/ l9 O( S+ s9 y( ~$ E
  39.         }9 m# j$ D* M$ v( ?: b
  40.         memcpy(mac, buf, 6);/ h( e2 B1 y, ^$ D! p& N# m
  41.         memcpy(stbid, &buf[6], 18);
    , K4 \. E$ I5 g) S! ]' Y6 R# g
  42.         stbid[18] = '\0';/ m4 \+ r+ O0 V" J3 B5 Y
  43. # K2 K1 z5 R9 h" `
  44.         return 0;
    1 a+ {$ p3 |4 X2 i: ^8 L/ S
  45. }. o, z! R, [. {
  46. ( U3 k6 [. [  y0 c
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 a0 c6 B$ b) S
  48. {
    0 [+ d; j# w' @
  49.         int fd, ret;
    1 _# H. T8 g& j
  50.         e2prom_s_cmd arg;
    8 [! u& V7 @, B7 P
  51.         unsigned char buf[0x18];' L4 L0 T* c0 A5 v2 B

  52. # O1 r; T- B8 f! V/ W
  53.         memcpy(buf, mac, 6);% L: K5 Q* E- S$ E0 [, i0 @) i
  54.         memcpy(&buf[6], stbid, 18);
    ) Y3 s5 S: w1 l- c  Q1 u$ C1 L
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 t9 Q: y; K& z  |' v
  56.         if (fd  < 0) {% u7 s9 i/ L. Z4 E$ E' U- w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ d: P$ I5 U+ l( y2 W& T+ e
  58.                 return -1;
    2 Q$ ]7 r% F# Y: c
  59.         }: D' Y" H2 R6 j3 ^( F
  60.         arg.sub_addr_count      = 2;
    . s. i# `. d2 b8 d" Y: S$ C% N  b
  61.         arg.data_count          = 0x18;
    4 V) H0 L' Z8 a3 Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;2 y$ F1 {$ @0 I9 y- ]  U
  63.         arg.e2prom_cmd_data     = buf;( P. l5 k' ?+ r2 }4 j  o. }$ F
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " Z5 @9 T2 G' f% _9 V$ t4 R, w1 ]
  65.         if (ret != 0) {3 T! Q" W; x& W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 M3 e  }& _: ~! n/ _% ~
  67.                 return -1;
    + v2 c9 T" h- d+ n0 l+ h4 i& d* n
  68.         }2 v, x! _; }2 y1 J* ~

  69. ; k6 N3 L$ h0 I' V) k
  70.         return 0;, S* r/ x* f& W9 s7 ^& v  R7 d- R
  71. }
    & t' U& b" {. h) N. s! ?) N
  72. # D9 {" C0 N7 Z6 I9 _
  73. int main()
    1 Z3 k. J# s/ ?0 A& E
  74. {
    ( R4 V3 d/ |+ [: Z. {6 m& h  r
  75.         char c;2 q4 v/ e& W( F0 R# }  V
  76.         int i, macs[6];1 m2 h" N0 {. X
  77.         unsigned char mac[6];
    ' J) t1 B6 D3 A8 r! k( ~& \
  78.         unsigned char stbid[256];) P/ N$ s& _6 Y7 d0 j

  79. 8 A& Z5 l0 U4 n, P: \- H$ Q- b
  80.         if (readparam(mac, stbid) < 0), D# |3 g& ~0 _% @
  81.                 return 1;
    - i* t6 g  b, k1 W3 ]! s$ N2 e0 ?& |

  82. * O+ w- l6 w+ t: N. E
  83.         printf("Current parameters: \n");, k5 J) [( U6 ]* y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 {! L# O0 R* G5 e) ~5 N
  85.         printf("  STBID: %s\n", stbid);
    ( M+ J0 M( W; r
  86.         8 d- |3 x4 {: _6 T" }# r2 S* I  @8 U
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      H0 n; ^2 m8 u7 n* P4 z+ g  c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ }4 n' ~1 o. }6 {* [' [
  89.                 printf("Input MAC error\n");
    6 c& B) J+ |) A' c" G' R2 \/ g
  90.                 return 1;
    6 c' E: {  @# \' k3 `. N8 b
  91.         }
    $ w5 d* E0 |9 b: F
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 [. a$ C& i% n* C, N3 P1 ]# m
  93.         printf("\nPlease input new STBID: ");* w# Z( Q) S+ x( r; _' ?
  94.         scanf("%s", stbid);8 Q" d9 ~; P" e" R7 C
  95.         if (strlen(stbid) != 18) {
    - R1 V0 _  s# O
  96.                 printf("Invalid stbid\n");
    * T/ Y6 u, |' _; a5 v
  97.                 return 1;
    - g, Z% m! |2 B
  98.         }- a9 x9 ]$ s. e
  99.         printf("\nNew parameters: \n");
    ( V8 F9 y0 A. v- C( A. H& O4 V
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 ]0 |$ e4 f3 ~; q7 g. q# A
  101.         printf("  STBID: %s\n", stbid);
    & |* c9 `0 {. X7 j% g% z

  102. ( F" n8 r" ?: Y9 m3 _
  103.         printf("\nDo you want to change paramemters? (y/N) ");" s( O9 C5 q5 y$ C; h( X
  104.         for (;;) {, e, m; ?. L' e% R
  105.                 c = getchar();& H& P" @% X7 U0 [$ [. R
  106.                 if (c == 'y' || c == 'Y')' H$ \9 V. F' ]7 [4 W; k# w
  107.                         break;, z4 ~7 U" d0 g) i' s2 L
  108.                 if (c == 'n' || c == 'N') {
    ( K, y  x7 x  [$ o# J' _8 t
  109.                         printf("\nAborted.\n");& z% i0 l% J+ h( a: h
  110.                         return 1;  g3 h( L. v% V# }' `
  111.                 }
    8 s& z8 t6 Y. L8 W' B/ t1 p* \  G
  112.         }& h) @6 b; T9 l1 L
  113.         if (writeparam(mac, stbid) == 0)
    3 w* z& r' P" P3 e7 y  |2 p, c
  114.                 printf("Parameters changed.\n");
    ! ?" ?& \& n$ S, I2 S" u9 n

  115. 8 ~! h7 z# [( U! I
  116.         return 0;
    6 F( c; O* U+ M& t# x2 I
  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
, {* P! h- {: P# p在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
( T8 {( p7 J1 Z$ ^3 @4 m) _
你用的编译命令行格式是什么?  _' Y( ?7 `5 f
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-12 17:15 , Processed in 0.031019 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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