找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15640|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    $ p, d5 n8 a$ u2 h' [7 _' x7 }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . {  d8 |/ c/ F, z0 ~( P
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- Q+ v% G: {2 K! x
usage: himr <address> <value>. sample: himr 0x80040000 0x09 r9 D- T8 x7 R$ o( E8 E" R3 `
1 N* P' P1 @1 v8 ^$ ]. n
2 n+ A" {1 q3 }
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) ]; a! x5 ?' n6 o4 S' K( f& f2 m* v
补充内容 (2012-3-8 09:42):
2 _$ G, L0 z; v' v* }http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ U. t! q$ [! c# U2 L* P- R8 b0 Q- U这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 U. v6 U- J& r6 S
. i4 m; X3 A( X: whimr <address> <value>. sample: himr 0x80040000 0x0
* f+ K. h6 d, H
" e2 I. i, A. z  p- A例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& H+ q5 W  W! R+ O8 X9 |( r; fhimr 0x80040000 0x00
2 A6 z# p0 J9 i! h6 |himr 0x80040001 0x11
( A8 t8 @' _$ c# Y9 Dhimr 0x80040002 0x22
' P( |" s' W1 f; Mhimr 0x80040003 0x33
4 g4 @" G8 U; j( ehimr 0x80040004 0x44
/ w5 G4 ?* }" bhimr 0x80040005 0x55+ h# m4 L5 T1 w6 @$ v% Q

# `  X* z8 d7 t8 K1 Z1 |SN也是类似。4 _4 h3 p) J- P* W! [, ]
4 c" O) l- v2 a2 U
现在主要是,谁告诉我们MAC和SN的地址?0 \2 K) D6 `1 A* F* Q6 x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 T! l0 k5 t" t8 y: e: S- m3 f( X一直想找到运程修改MAC和SN的办法,苦于无解啊
+ L$ O+ I4 I( b1 n$ {  k
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . j, x8 f5 |: q/ A/ U( ^) P! y
2 m0 R1 D  T2 ?' F" }( s, q
修改的代码早有了。到今天不会编译。. y9 K3 u9 X. E2 v$ K! {
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " p* x# S; K/ E- N! ~3 \7 X5 h
  2. #include <malloc.h>
    # z! v7 d9 s; T$ y
  3. #include <sys/types.h>+ n- Y/ _! l! }% w1 a. s. C& }  ]
  4. #include <sys/stat.h>
    : |2 t5 Q+ ]' R9 B; D: x
  5. #include <sys/ioctl.h>
    8 w; t: H- C0 W. y% c+ n$ P# W1 t
  6. #include <stdio.h>
    ) w8 C$ M) S+ }: z
  7. #include <string.h>
    + S$ h* Z* x* ?+ y3 F" d( R$ ~
  8. ! P8 v# W& H0 e- U' P9 d8 Q* m# }3 w
  9. typedef struct {0 @* D. q7 f. y: I: v
  10.         unsigned int        e2prom_cmd_sub_addr;
    6 A9 R  c6 c/ X6 B: }8 a! F* L
  11.         unsigned int        sub_addr_count;: y$ x3 }5 T( [2 T
  12.         unsigned char*        e2prom_cmd_data;
    " e) T. }9 z9 F
  13.         unsigned int        data_count;3 W6 c% i8 ^$ y- m
  14. } e2prom_s_cmd;
    9 D" x/ k+ M3 F! L# e/ g0 p

  15. 1 w, A8 L) s: g5 P; U7 n
  16. #define E2PROM_CMD_READ 1
    & ]' w* T2 ~: |6 _: O5 b9 }
  17. #define E2PROM_CMD_WRITE 2
    . A# u  e% R, S+ N2 b8 f
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    " n* G# A( A% n2 g) d- k

  19. % W! H% l0 y1 |! s' e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 i9 d' r4 i5 `& `
  21. {
    ( S9 M2 b. P/ p- u
  22.         int fd, ret;8 T& x1 `3 k0 r/ ?, F0 b; o0 i& u
  23.         e2prom_s_cmd arg;4 Q# ?6 P) ]* c& f2 |
  24.         unsigned char buf[0x18];
    " M8 k# `6 p' G4 w

  25. . L5 q4 k& d( J  \) f- u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' e6 U) Y8 [, Z- R& A
  27.         if (fd  < 0) {
    8 B$ o$ r: D( ^$ o" J* [$ ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 R+ V0 z2 I5 z7 F& H( o
  29.                 return -1;
    # o- m6 j$ t0 r2 V# z+ R
  30.         }
      T6 H- S% A- T% ?% _: N
  31.         arg.sub_addr_count      = 2;- S2 P( A. D+ p
  32.         arg.data_count          = 0x18;3 m2 F# O! N# `9 w3 Y# l. S, D
  33.         arg.e2prom_cmd_sub_addr = 0x290;  A# K& d0 q/ p
  34.         arg.e2prom_cmd_data     = buf;0 M# j, ]/ M/ ?+ o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ Y( _' o6 k. S* H% P8 H: I
  36.         if (ret != 0) {
    3 A+ S8 @2 G2 Z" a  Y/ X: Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);. j3 j, }6 w! k" m( F$ Z
  38.                 return -1;
    2 O" Y% V* i* b. t; \- l  b
  39.         }
    ' p0 y! u1 a/ _5 t( A
  40.         memcpy(mac, buf, 6);
    $ q/ k* t, F5 z# s/ ?
  41.         memcpy(stbid, &buf[6], 18);) V  I) L$ _: J
  42.         stbid[18] = '\0';; I' {. I# M& S% H, x
  43. . Z5 v2 m' G. J9 U
  44.         return 0;! T0 w+ {% m' l3 j
  45. }* l% x! ]$ T3 J7 O6 d" ~2 u# ^& i: t
  46. ' v6 S+ m* G: J8 @; z) X$ W; X
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 J- _& f" J: E* |; D# g# Y
  48. {2 ^, ^. b9 H, {( P
  49.         int fd, ret;! ~5 \( m  q( s+ H
  50.         e2prom_s_cmd arg;; q  K0 G8 z8 H5 n. e
  51.         unsigned char buf[0x18];
    3 S1 b# h) |) x9 o

  52.   o. c' N/ }/ z# g  D7 J
  53.         memcpy(buf, mac, 6);+ Q, M7 C# P% r# n2 \. `" A
  54.         memcpy(&buf[6], stbid, 18);8 ?" M( m7 F, v9 h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% @' t# f# W( K2 p9 ~+ P  _
  56.         if (fd  < 0) {# K) Q* h! u9 |. E
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ {  {1 `3 p: p
  58.                 return -1;
    - `/ T& Q& R& b) m9 B  V) F, _4 u
  59.         }/ j& P! b0 d! D9 B6 j, j- Z0 @
  60.         arg.sub_addr_count      = 2;
    ' {- ?" ]6 \& V0 S+ p/ I9 w% u
  61.         arg.data_count          = 0x18;
    $ l( Q6 i% B6 c. U0 h. \
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " R6 Y, |% q" d1 g  r: z* M
  63.         arg.e2prom_cmd_data     = buf;
    6 b: N& B1 h! ~7 Y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 [0 a# K* p! T! u& o: ^' A4 t$ H
  65.         if (ret != 0) {, B' ~7 c' `! u% |" d- w
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * G8 G2 [9 r+ u2 @
  67.                 return -1;- z, d$ l+ x% I" w, {4 T
  68.         }
    + r! Y# L' {6 I. |. d8 [

  69. : b( @! m% V8 }$ x8 S- M
  70.         return 0;
    ! V9 g' v6 d# o( O( M8 d  Q
  71. }5 m- v0 Q. ?( p+ s9 x

  72. # X9 g; v% W$ B
  73. int main()* P- ~* K8 ?: L1 f4 `4 @
  74. {- ~) S/ q$ l( N. {2 `7 r$ _
  75.         char c;5 g9 _( N' z  D# t
  76.         int i, macs[6];
    6 C8 z! F& }: ~! o% p: k( N6 D
  77.         unsigned char mac[6];
    ' x8 u3 p! X( R7 Q! ^( w" L. R7 f9 E
  78.         unsigned char stbid[256];
      J9 O! y, Y- g7 z, j9 N

  79. % w7 l( b  d/ V1 F  T, J1 X
  80.         if (readparam(mac, stbid) < 0)) O# ^. G0 o, f7 k8 f2 h* R
  81.                 return 1;. s- c) Z# ^: G  A
  82. 6 a# e7 r$ j4 D' r
  83.         printf("Current parameters: \n");  Y" @1 m) j5 _3 x9 Y* z9 Y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, H" n: M( E3 p; B+ D  b
  85.         printf("  STBID: %s\n", stbid);
    + h' N2 M6 z; f0 W$ x0 t
  86.        
    / @6 |% d' M- O- {; p. M3 f' }1 c! O
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 l/ u" j1 }# x. W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 K3 F8 S# o: }; ?' Z
  89.                 printf("Input MAC error\n");( D& t+ j9 p1 R
  90.                 return 1;
    4 H# g! z2 w1 Z7 U$ L5 B
  91.         }
    2 E& F' I4 ~5 Y. X$ }
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 Q) ?4 g& Y; I6 D
  93.         printf("\nPlease input new STBID: ");) R4 L6 I4 p0 J1 D
  94.         scanf("%s", stbid);
    $ D' J& K/ C; c) _8 v( k
  95.         if (strlen(stbid) != 18) {
    / Z( s7 e7 |- E- h3 _, t
  96.                 printf("Invalid stbid\n");" Y3 U( k& j0 j6 g. D  D8 O
  97.                 return 1;/ b; F4 g! |2 T% }$ F
  98.         }
    . R% b, C8 E2 L' K
  99.         printf("\nNew parameters: \n");) r/ v+ K( N* s; P  L& m
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; B/ M& s' ]  u0 c, r
  101.         printf("  STBID: %s\n", stbid);  }6 w  X. j) j5 g

  102. ' t/ h$ o& r" f% F6 t3 X. l+ I# }- N
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    , v1 S9 _6 c) i% O3 L# D
  104.         for (;;) {* J" M/ _% ?9 _8 t; U
  105.                 c = getchar();3 t) U7 p5 e# K. Y; M
  106.                 if (c == 'y' || c == 'Y')
    - g$ l. j: Z9 n
  107.                         break;
    ! k/ U* R( e- m5 Z1 T8 C- w/ Y
  108.                 if (c == 'n' || c == 'N') {8 ?; \! c* p7 m) [% P5 a2 I. N- ~/ x
  109.                         printf("\nAborted.\n");# g! k. I; g# ]8 D, G
  110.                         return 1;
    0 v4 J2 s. D5 }/ a- D
  111.                 }, u+ W5 X$ z! ~0 a* e) ^
  112.         }
    6 v4 Z) J3 {$ B$ q
  113.         if (writeparam(mac, stbid) == 0) 7 R6 R3 Z; s$ G8 l& W7 A6 S
  114.                 printf("Parameters changed.\n");) R  o' ?: @6 V

  115. 9 Q7 |$ z& V9 a: M
  116.         return 0;
    ( B7 s9 B( p. q- _
  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 / e& v- P  Q- A' w4 r# H
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ S8 C: g5 b2 J/ A; {& i: s# N
你用的编译命令行格式是什么?
$ V" p% h' f  @2 A3 s3 H6 q% r
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-21 06:52 , Processed in 0.026742 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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