查看: 16755|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  p- P; ~0 F: C( S7 v
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 ~2 T# @1 @5 h( @
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:7 [+ h1 J) z% |) {, e; K* {, b% P6 ~
usage: himr <address> <value>. sample: himr 0x80040000 0x0
1 K) S6 U( e; e" a' r
: M4 M0 z5 g- n) e( W/ v3 A1 `
% n1 j# }# j5 D8 s不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( O( `3 V8 y0 B9 U* z: I
& A+ f3 c- T1 n" O* E" M, y
补充内容 (2012-3-8 09:42):/ f2 I2 B5 {+ N+ U# y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 z  M% X$ ~; K2 t# u这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。* U$ V$ ^* Z# g2 W& O
1 d, l5 Z- u( y, o% g
himr <address> <value>. sample: himr 0x80040000 0x0
  m9 [  _- C/ B4 N
9 T' y- l/ Q; |% K- L. \( w( q! ]例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, @+ H8 l) b# x( G) R) o2 }
himr 0x80040000 0x00
  |4 @' t) y" V: T6 Z3 W+ Mhimr 0x80040001 0x11
6 A5 R# @  p4 k8 C. ], [3 Lhimr 0x80040002 0x22
3 H& J1 b5 N2 |* {! k  L# I& b& }himr 0x80040003 0x33
7 X! q& {: m' v) V4 bhimr 0x80040004 0x44$ e' }0 s( i6 `9 F1 q  w4 s
himr 0x80040005 0x55
/ m2 b: E# ~6 c- O+ R( g' |, c+ ]1 s6 c4 c) ]; y
SN也是类似。
; a% t2 T5 i5 ~/ S. \0 h* s+ j
) k9 l( u0 U: E2 r* q' w现在主要是,谁告诉我们MAC和SN的地址?
: [& C6 J2 O3 K9 O# R# Y7 j
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& j& _, n$ W$ H一直想找到运程修改MAC和SN的办法,苦于无解啊
( N$ P) j% \& j3 q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 i8 W6 L( t; T0 t% O+ x7 ]+ O8 r& E, ]7 p; g; n; t& ^: B! b
修改的代码早有了。到今天不会编译。. Y6 ]+ k" f. t6 R, F8 t
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    $ }! I( t4 C& M0 R
  2. #include <malloc.h>
    ' f6 f0 ~* \* r
  3. #include <sys/types.h>
    2 z( {: h% J9 `( u
  4. #include <sys/stat.h>
    : r/ O$ g  u: X
  5. #include <sys/ioctl.h>( W; j: ]4 J+ z- ]/ `
  6. #include <stdio.h>4 y7 [- y# f: W# ^. ?1 u* \/ @& J
  7. #include <string.h>: ^  d& m5 [& `1 G, o
  8. 2 J' W5 b: E. Z' K; e, Z1 C1 y
  9. typedef struct {
    - ~& e" l/ r% A: P
  10.         unsigned int        e2prom_cmd_sub_addr;$ f5 j* |# j) t2 x
  11.         unsigned int        sub_addr_count;# d4 I7 `0 @! ?, w, J' r
  12.         unsigned char*        e2prom_cmd_data;
    7 M& D/ h" j9 C
  13.         unsigned int        data_count;7 t& N, Z8 ^  p, T' y
  14. } e2prom_s_cmd;
    % v' m6 v+ z7 n( y2 I1 N
  15. ' |  ]' Y+ p( G. ]0 J7 V
  16. #define E2PROM_CMD_READ 1
    : G2 Z4 E1 d+ i# M8 U
  17. #define E2PROM_CMD_WRITE 2  y  n8 k" Z! {$ w8 m' z/ U- i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ; y7 S+ ?% n! z, M' G' R

  19. % e7 \% `& |, ~/ w' S
  20. static int readparam(unsigned char *mac, unsigned char *stbid): s, I, v4 N2 e( _6 r3 K2 L# n
  21. {/ h; [/ Y7 E: R: r& @
  22.         int fd, ret;
    2 l2 ]* v1 T5 B, C4 w1 }
  23.         e2prom_s_cmd arg;
    " T4 ^/ L" n2 D# K6 U; h( ~# |5 _
  24.         unsigned char buf[0x18];' g$ w/ N4 c2 G. c

  25. 0 O+ C. U) W2 Q# i' R7 g
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 I: I9 U9 U9 F
  27.         if (fd  < 0) {. n8 l* D! L. M! J4 T! }" W: p  ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 [. H7 d5 c- L, u* }
  29.                 return -1;7 _7 h- o4 X" b- u3 Y" A8 [* d
  30.         }8 H0 i* J& r3 l4 o
  31.         arg.sub_addr_count      = 2;) r9 Y; H2 m; T1 d2 l! J+ U7 z: }
  32.         arg.data_count          = 0x18;
    * Q( y4 z, X( x
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    # K. l: m$ I; b) l' S
  34.         arg.e2prom_cmd_data     = buf;
    , ~! l2 J9 m, I; f" R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* i/ u0 n. O  ~' o( R, [1 u
  36.         if (ret != 0) {' ?. v1 v& f* e; B( v: F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 y) g( t* G; u
  38.                 return -1;
      o8 ~# p" h" W7 J0 s+ |8 \
  39.         }* t9 w; y7 z/ d" `* s9 a, t$ n4 l
  40.         memcpy(mac, buf, 6);
    / l; y" g7 ], a
  41.         memcpy(stbid, &buf[6], 18);- f- [; e9 Y1 S: z6 T
  42.         stbid[18] = '\0';+ I. g* [- f3 ?; F0 N

  43. + N! K9 d1 Y! ^& r
  44.         return 0;% u9 u% X  Y6 R% O. K* I% p2 U
  45. }
    : o( p$ B/ X  Z0 V& }4 [
  46. 7 d3 t4 J) U/ r7 Y& R- T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  j( D9 t: }9 f
  48. {
    5 [2 ~* ?- [. U
  49.         int fd, ret;
    * }" s6 c9 y, T" G  u
  50.         e2prom_s_cmd arg;
    3 c) S- l6 O* a6 ?& T; M
  51.         unsigned char buf[0x18];
    * `; F6 k+ _+ X( I  Y4 k

  52.   \9 P( M# {+ b1 Z6 \
  53.         memcpy(buf, mac, 6);0 \5 v( i  W( y4 i8 I
  54.         memcpy(&buf[6], stbid, 18);
    9 F2 V& h% @8 @2 }5 O/ n4 D
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( T2 r/ Y0 K( G7 _6 _5 ]
  56.         if (fd  < 0) {8 o; H) T% L6 F7 @/ F4 P7 K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + b6 Q& _; u( J. }( O$ Y9 T
  58.                 return -1;
    * g. [% k+ l) q4 H, s" w- b+ L; N8 k
  59.         }) X5 ~* U- V1 K' v8 t1 g
  60.         arg.sub_addr_count      = 2;
    $ H+ q  ?# T# d6 \7 L
  61.         arg.data_count          = 0x18;/ s1 u4 c1 p  q. M0 {
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    6 i: n) e' l5 |, @4 F/ [( G; }! `2 ^
  63.         arg.e2prom_cmd_data     = buf;  v' K, T% M1 h/ E0 c0 Y" i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);. f' ~2 I. l( h* b
  65.         if (ret != 0) {# l! h3 m+ J: `" y: k
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    8 T  b" g; @2 o7 ?
  67.                 return -1;8 n  h+ o( \1 K: D, k7 `
  68.         }
    # U4 a# Q. b, ~) h0 ~& k: M
  69. ! C5 K; F0 y* O) I& {" Y3 [
  70.         return 0;
    # T3 H. [- K0 _2 K- z7 X6 Z
  71. }
    5 _* q  ?- i  R  D, [1 W, x/ i

  72. . ]# {2 I$ I" X# _
  73. int main()
    8 Z" V2 O( k# I1 ?
  74. {
    * k& I, x, v7 i& e5 O5 t5 P9 j
  75.         char c;
    8 j& k3 r2 n. O! ~
  76.         int i, macs[6];
    ( q7 B4 N6 Y  Q1 f3 \" T4 \2 x
  77.         unsigned char mac[6];5 o1 _1 P; n% R4 E0 d+ R" O
  78.         unsigned char stbid[256];- D2 E& F% j3 s" l" `; e
  79. 0 h9 y1 m' I; \1 D
  80.         if (readparam(mac, stbid) < 0)
    ! K4 @* {. a  b9 w" Q
  81.                 return 1;
    . a/ U1 _' _+ L3 ]( @$ ~8 s

  82. * d# K" t, Z3 i, j5 k+ T
  83.         printf("Current parameters: \n");
    & h3 \- ?2 v2 o3 n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) p9 ~; m3 B" T. B7 H
  85.         printf("  STBID: %s\n", stbid);) S8 B, R4 b& h: E% J
  86.        
    * o- C3 P& y8 S+ v8 z8 E8 Q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. j, E; w! N: V7 o& Z; s. C
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {+ @+ n: S1 A( R9 a& s
  89.                 printf("Input MAC error\n");
    & M* x2 A: P- b( I- H( ~
  90.                 return 1;
    8 V& c0 O7 }0 x0 k: U% ]
  91.         }
    & q4 T9 D  R4 M4 w7 U3 L! ?3 H! ]
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( w* b/ P7 [) k3 z& ~: x( k
  93.         printf("\nPlease input new STBID: ");8 V, Q" Z* H! w' L1 ?2 @1 B
  94.         scanf("%s", stbid);, |, W+ e; m0 S" J" W) |, k
  95.         if (strlen(stbid) != 18) {
    : l! W' u: R* @7 O$ L+ a
  96.                 printf("Invalid stbid\n");7 J% y2 T1 w/ }/ ]7 Y5 {
  97.                 return 1;
    ; P, h& Y. f. v
  98.         }8 G1 R7 W* j  h' h( r/ z: n2 i4 r
  99.         printf("\nNew parameters: \n");6 c6 b. L  g4 ~! m" z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: I) M9 I& B/ Y
  101.         printf("  STBID: %s\n", stbid);
    ; V' w. n3 h  Q5 J

  102. ( s0 R# i2 i% i# ?. v$ A6 h
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / D  C9 R* I) ^
  104.         for (;;) {
    2 J1 ^, [4 ~& U
  105.                 c = getchar();6 K0 u  r# W/ c' A1 ]* e
  106.                 if (c == 'y' || c == 'Y')
    - \8 x5 d/ l+ b: J
  107.                         break;
    % c1 S  L1 _- {
  108.                 if (c == 'n' || c == 'N') {
    ! u4 L3 j' N5 l/ h" \
  109.                         printf("\nAborted.\n");
    ; m. e# s  c6 ?2 J- E7 Z
  110.                         return 1;
    * O! n+ d" _: m9 d
  111.                 }7 E- M" Y, c' D, V
  112.         }0 }- X! R6 ]4 ]& @5 {4 ?6 a
  113.         if (writeparam(mac, stbid) == 0)
    - [) b7 F0 V9 e. c- m8 y
  114.                 printf("Parameters changed.\n");
    ( t  l/ v. t0 L' t/ d/ y

  115. + W' C; N. w4 G
  116.         return 0;; G; ^* K4 y+ }$ C( x. D* W# c
  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
/ |) R8 j/ Z4 x) S$ q. t在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
, Y" L% B/ \( z; c7 d
你用的编译命令行格式是什么?
# E! M: g/ M, n9 e: \: m) Z
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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