找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15703|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    # P6 V. A& {/ a* p3 E* `) W7 T" a
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ o- q: l+ B* M4 B; B8 Z) f
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% @) k9 }: b  c! ~* d% J' fusage: himr <address> <value>. sample: himr 0x80040000 0x01 c9 k% |2 B+ z7 l: k0 L7 q% h
1 z8 G& a) o" O; ?3 P7 R$ x, {

6 g* I# V6 n% d2 ^+ t, e不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' W' e) W: h/ I+ }; M3 h1 N6 A9 w" F0 T/ l
补充内容 (2012-3-8 09:42):
" y7 R, c% v- Y9 uhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: C1 F) O; L4 X! W7 G, @+ S这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
: Z) p8 P+ E. e
: c3 o' U& o  g% I8 `4 ?himr <address> <value>. sample: himr 0x80040000 0x0
1 P$ F) p3 X& v7 _) ~1 X
3 r6 @4 E0 k) h/ v9 w$ T6 g; i例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。/ R/ S% V. L$ D, Q5 Q; Z3 C
himr 0x80040000 0x00
0 D9 s/ |2 V! V. s( ]himr 0x80040001 0x11
/ \# Q2 G  x5 ^0 _) Whimr 0x80040002 0x229 {& t. `1 O$ S4 R) b
himr 0x80040003 0x33
6 ?/ r2 ~3 D! [7 E2 M+ Ohimr 0x80040004 0x44
" h1 V  r1 E; Z1 hhimr 0x80040005 0x55
! u' Y, i! G- U# _8 N0 k; t, S' C& z
SN也是类似。
( l6 C& K) n2 L$ `# ^0 \; e
. S" H0 Y, W8 I现在主要是,谁告诉我们MAC和SN的地址?) R1 g# |- i! q6 B8 F2 w
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & \" n8 S& a5 ?, D/ r: w
一直想找到运程修改MAC和SN的办法,苦于无解啊
1 Q  J7 u) Q& X
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
  N# o1 z5 }4 _+ t9 e0 V; l+ N, q( Q& u' `$ j6 O
修改的代码早有了。到今天不会编译。% W# I3 v1 c" `+ u) h( I& W4 V  _
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    2 n8 w4 p# v% x- }: m; p" b
  2. #include <malloc.h>
    1 z- G, ]8 |" b
  3. #include <sys/types.h>: m7 R( @# \' f% r" m
  4. #include <sys/stat.h>1 g' c; c% |) R" o' A+ J
  5. #include <sys/ioctl.h>
    . m2 Q8 S" E8 A1 U' K
  6. #include <stdio.h>. Z. g) F8 f/ `- y' K
  7. #include <string.h>
    4 p! K+ X7 U, _# i* p' e
  8. " ?; m% p4 _; D+ r
  9. typedef struct {' g$ z- A2 O# f
  10.         unsigned int        e2prom_cmd_sub_addr;
    ; X2 D5 B2 k  y
  11.         unsigned int        sub_addr_count;
    # t9 P4 Y: L& y5 l
  12.         unsigned char*        e2prom_cmd_data;
    0 x7 l' X" i  y4 D
  13.         unsigned int        data_count;1 E( S/ j/ \5 k/ j! ]6 V6 h
  14. } e2prom_s_cmd;5 q" v! I) y$ |0 J
  15. $ F. s* {" _2 d4 T
  16. #define E2PROM_CMD_READ 1' O4 p" a" Y" d- ]  t- T
  17. #define E2PROM_CMD_WRITE 2
    4 [' G, F, V0 _/ R# @
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( o- y( s# e, V4 X
  19. : W( K0 N! m. u3 m+ M
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " i3 b8 W4 }7 T6 K7 B6 t
  21. {
    + s% Z* ^4 F- E# t9 X# N2 d4 t8 O
  22.         int fd, ret;
    & H7 X1 n1 k) X) c3 R
  23.         e2prom_s_cmd arg;
    + L# t7 f' D4 j" J* q9 k4 X
  24.         unsigned char buf[0x18];1 v9 U1 ]$ r! Y
  25. ( H" l7 S" G5 U# J" J7 E
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - y) D- c/ ^4 u
  27.         if (fd  < 0) {* N! S4 e  G5 g8 f0 v4 {
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 k1 w" ~7 }% t  X( B+ x% ?( j6 {
  29.                 return -1;
    0 H' e# B! V* q; }) n- Z
  30.         }; s0 _3 M0 ~# G. X
  31.         arg.sub_addr_count      = 2;1 v% w& Z/ u9 \: l+ M6 X
  32.         arg.data_count          = 0x18;
    & P) |7 t6 b& q2 y
  33.         arg.e2prom_cmd_sub_addr = 0x290;* O* R9 o; m1 h
  34.         arg.e2prom_cmd_data     = buf;7 y1 l3 P9 C3 m4 B9 V  E- U
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 z9 `, v; h; M! q0 A
  36.         if (ret != 0) {
    5 I6 d3 i* ]" k2 Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- u) A* i) A2 l7 ?4 z3 Y
  38.                 return -1;, f; V2 A6 f" n6 d
  39.         }
    ' y; \' H0 S! K1 s
  40.         memcpy(mac, buf, 6);
    ! i0 @! }. ?! W
  41.         memcpy(stbid, &buf[6], 18);5 A8 y; ^) f! l/ w' H( H
  42.         stbid[18] = '\0';; h! ^! w# y# F7 K+ S" B% Z9 [% Y
  43. : c( U2 ~* k. |0 X. J9 C
  44.         return 0;1 z, I0 [: D( k
  45. }: g# t, S, S" z% P( s& T) d4 h5 o( Z

  46. % c2 [  o* k! L; K9 e9 c4 V
  47. static int writeparam(unsigned char *mac, unsigned char *stbid); [0 ]# K1 v* D* E/ L2 T4 |
  48. {* G1 f2 t. n9 y7 Q# l1 O, `
  49.         int fd, ret;4 C5 ]% s! S5 c2 v# V) N% U
  50.         e2prom_s_cmd arg;$ y: R& A0 P; [7 x
  51.         unsigned char buf[0x18];
    4 B# f1 N1 o$ J0 ]9 S8 o; m6 B* N
  52. 2 k5 O! I! c/ o
  53.         memcpy(buf, mac, 6);
    & p1 b+ Z* y- e* @& j
  54.         memcpy(&buf[6], stbid, 18);
    ' V* z( ]6 q% ]6 e# F4 J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( ~1 L* b6 Q4 Z4 a. }. L
  56.         if (fd  < 0) {
    ( ]0 W9 s4 \0 E% C: T3 s$ ^5 h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! W& O5 ]# m9 `' m; v9 [3 \3 C/ z
  58.                 return -1;
    3 c" }3 N* r2 t$ a2 y# f, ^3 p4 ?
  59.         }% {2 d2 s: L2 r0 O7 _: k  b
  60.         arg.sub_addr_count      = 2;
    ( T+ j# y& R7 t* t* C
  61.         arg.data_count          = 0x18;9 c# M3 ?7 _: s: O8 Z: z
  62.         arg.e2prom_cmd_sub_addr = 0x290;" v" r/ J/ a- t! l; S' }  T
  63.         arg.e2prom_cmd_data     = buf;) K" F, j4 f$ `; {0 i0 w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- h- I# }. u1 h
  65.         if (ret != 0) {
    6 j& M0 Y. O+ b0 W! p8 h' x
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # Y* _9 `. J1 J# X: v3 K
  67.                 return -1;
      D5 C9 O1 W9 k  D4 ?# K9 E
  68.         }
    + N5 d. F$ Z8 R
  69. ) U# g: \. u, X) M" r- B  `
  70.         return 0;
      G' b; L/ b/ p4 a* U( \
  71. }
    ; ^6 V/ V$ f- r1 h

  72. 3 }% ^1 ~4 a; k; f+ _
  73. int main()
    9 ^+ l% h7 Y( ~
  74. {- e3 X, f. c1 _/ u/ P5 s2 n$ E/ P
  75.         char c;
    6 R. H  l! b' y8 L" ^" O  Z
  76.         int i, macs[6];
      b- ?  C+ d# Z- w0 S& k
  77.         unsigned char mac[6];4 }; Q+ Q$ b6 G7 `! `
  78.         unsigned char stbid[256];
    5 H1 s$ Y3 G8 j  s2 u

  79. " w( {/ k6 U% w8 S* X# ~) v
  80.         if (readparam(mac, stbid) < 0)% P* K. c/ Q; [) O
  81.                 return 1;
    : p% J6 i; J' s# m. _

  82. 5 \" L, ^6 s7 F" |9 F! m$ \
  83.         printf("Current parameters: \n");! {8 Z4 [; t4 O) u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! w$ n" \9 e+ M7 K0 o( g
  85.         printf("  STBID: %s\n", stbid);
    $ I6 k$ s' b" c2 K. H: ~
  86.         : z: S: R7 Q1 z9 y: {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    3 b5 t: w0 C2 @; Q: [# U* _
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! `$ `, X& f1 t: A* x, B7 B8 U
  89.                 printf("Input MAC error\n");
    ! ~* F8 \" v) }7 P( d2 D$ Y- s
  90.                 return 1;* o' i' {4 H7 S+ A+ r9 N
  91.         }
    3 T" z( T' Z" c  m/ e4 e
  92.         for (i=0; i<6; i++)mac[i] = macs[i];, P) e+ r8 B  E2 D( s
  93.         printf("\nPlease input new STBID: ");
    2 Q! E) ~. i. X3 E: e
  94.         scanf("%s", stbid);, n6 f2 ^4 N% p
  95.         if (strlen(stbid) != 18) {& r3 q0 x9 ]% R- Y7 G+ @
  96.                 printf("Invalid stbid\n");
    3 o! D+ {3 S+ ~
  97.                 return 1;
    ) X, Y6 l; A+ {- ~/ D& i; n9 n2 k
  98.         }
    ! l0 ?+ O* X9 ]4 ^' V6 f: |0 @
  99.         printf("\nNew parameters: \n");
    - f0 n7 u; x  ?  T) j& Q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 z! ^* h8 t2 X/ K2 I
  101.         printf("  STBID: %s\n", stbid);% A( b3 P/ R7 P- G( k

  102. ( r2 A1 p6 }' E4 V* @9 a8 T
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / d1 P) ]$ k, k( g4 x
  104.         for (;;) {
    ) K! n. L) R0 h
  105.                 c = getchar();
    ! [; ~7 ?1 }& O( B6 C- O
  106.                 if (c == 'y' || c == 'Y')
    , L$ J. ~0 W) f+ s6 `! V0 c" c
  107.                         break;1 B- X4 x* q! D9 T! f& @4 w5 L! a
  108.                 if (c == 'n' || c == 'N') {
    + x. B: K4 W7 W2 M5 Z
  109.                         printf("\nAborted.\n");! P& H, o; x# c/ }( c8 _
  110.                         return 1;$ t9 [" R; t  ]3 K* i1 b# b
  111.                 }0 m3 N5 x, ?/ ]- b$ K
  112.         }
    ! ~: ~& b6 G' ^7 K
  113.         if (writeparam(mac, stbid) == 0) % b( n$ f9 e" y/ S/ T
  114.                 printf("Parameters changed.\n");
    . [& N2 r/ o0 m4 Z9 L' j+ w
  115. 0 i+ B* c7 w+ B; Y
  116.         return 0;
    1 v( |0 y2 t* X/ ]
  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 ( O: k' z9 Y  v6 J
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
  x% X, b0 U2 T' F
你用的编译命令行格式是什么?
( j9 B1 o' [5 c) m* t& J
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-1 16:02 , Processed in 0.025102 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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