查看: 17080|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) d; k0 o* l3 f% K) ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' n# J$ W* I/ f0 a2 X& n1 Z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 n' l( ?0 `% l
usage: himr <address> <value>. sample: himr 0x80040000 0x0
, p# i9 a" O; ]
7 c) o+ t3 W1 q' N3 |
1 o* m6 G* c: C7 K: I, o" G7 X不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
" M! p% s8 D9 T8 i) C; L, [
9 _! H, u0 p+ o# S( g" v! O# d补充内容 (2012-3-8 09:42):2 F1 R: v/ p& o5 V5 k  `$ v" V
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 h. }* |9 T* K$ G6 K. h
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
! W2 ~! u  m4 T8 R+ o9 A) M# I' K1 \6 [2 @# P6 @" {8 L" J
himr <address> <value>. sample: himr 0x80040000 0x0& Z7 O* k& a7 J/ ?2 N8 Q! u5 @( T
6 V$ L- n) d$ t6 P7 p
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" x; i" |, ~) K% v+ `( Q
himr 0x80040000 0x00, I9 W4 P0 ?; o7 J
himr 0x80040001 0x113 _( P" B* I4 g& C
himr 0x80040002 0x22
9 h* X2 ^0 n* k! j. [# [) h  ahimr 0x80040003 0x33
( z: C& j/ s* b) k0 J3 t0 `himr 0x80040004 0x44  P" e# B% V% J4 M. k( M3 c% F3 Z
himr 0x80040005 0x55- R7 o1 G! M& s  ]% K

4 A2 W& t  v' ~9 }- I1 uSN也是类似。
+ o8 q; P7 f$ P7 |$ H: m
% m* V0 Z5 G# D9 m6 N* ]5 y现在主要是,谁告诉我们MAC和SN的地址?
' R" n6 {" z4 N
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 {6 m3 O- U2 J0 X& w, F% C* m
一直想找到运程修改MAC和SN的办法,苦于无解啊
: D7 H+ `+ v# \( B
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
3 u* f) Z$ U% O3 S  f0 S8 u- o" M  C
修改的代码早有了。到今天不会编译。& g+ z; ?4 r5 `8 J
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* b9 B1 |# Q- {- l/ C# `
  2. #include <malloc.h>2 {  n! Y8 |1 Q' e( T. B
  3. #include <sys/types.h>
    ; y0 L. P6 p1 Y9 n5 z3 `; j" D
  4. #include <sys/stat.h>- X7 \' D6 v3 `" x1 ]+ ]
  5. #include <sys/ioctl.h>* ~! ?8 p5 J7 c; n! R, \  ~/ e  G
  6. #include <stdio.h>* q6 V2 c0 f& c" p: p+ _* R0 [; `' N
  7. #include <string.h>
    6 k4 I2 L6 Y6 q- y+ l2 R! x- h8 _

  8. 6 s- E/ J7 c, V1 ~! G
  9. typedef struct {
    9 p% u, t: a8 I2 `4 w* A
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 X( O: k: V& a/ L( J4 }
  11.         unsigned int        sub_addr_count;
    ( X( X6 W! e4 t/ g  N8 T' K  W
  12.         unsigned char*        e2prom_cmd_data;
    ' _7 C7 {& \# g2 g. V+ j: U
  13.         unsigned int        data_count;
      t* O, c& O1 V% n" @9 z. N; X
  14. } e2prom_s_cmd;
    9 K4 n9 {* d4 I

  15. 7 {# h) J4 `' i3 i
  16. #define E2PROM_CMD_READ 1$ j* L1 b" |4 c: P& L6 F5 A5 p
  17. #define E2PROM_CMD_WRITE 2
      a0 ~, i  f, C
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% A7 }7 T! i- o, u

  19. ; O+ F7 M& l: X2 ~/ ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) ?7 a4 X0 u3 V  N$ u$ W
  21. {1 b# W# |2 g1 \
  22.         int fd, ret;* R9 k5 n1 d6 q+ @& l/ G% H
  23.         e2prom_s_cmd arg;
    4 [" Y7 W! p3 |3 c
  24.         unsigned char buf[0x18];2 f+ r" q  z+ D$ H
  25. 1 z, w2 S1 J+ `
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    & b( {  J  ?+ ~- v
  27.         if (fd  < 0) {; ?7 L- @7 c  L$ h8 d4 y8 _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( y; U5 Z. A  }* j9 X6 d
  29.                 return -1;. T  g' A5 X# m! n
  30.         }  G7 g  s: v7 Q
  31.         arg.sub_addr_count      = 2;$ E$ J0 Z: v1 t& X8 |1 E0 \
  32.         arg.data_count          = 0x18;. {7 w: h1 P3 v" C9 A& l9 \
  33.         arg.e2prom_cmd_sub_addr = 0x290;, u+ c$ g- t2 O3 O
  34.         arg.e2prom_cmd_data     = buf;
    5 ~8 I  w( ^* e& r" \" S
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ Z3 N1 b9 G7 y/ j
  36.         if (ret != 0) {
    ( a. i5 \; d3 d2 \0 v& S5 L
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- G+ H( F; q; f1 U
  38.                 return -1;
    ) p" n: p' a* K8 x: M
  39.         }
    3 f- I  l, p8 D$ b$ B5 u: a, ~
  40.         memcpy(mac, buf, 6);+ }1 I+ ^' l* k6 Z, @! N" w
  41.         memcpy(stbid, &buf[6], 18);
    - Y' K/ p& o0 g% t
  42.         stbid[18] = '\0';0 L; M- x# V- ?# h/ R$ t3 ?9 u

  43. / f- U, G6 B6 L& |6 G. Y
  44.         return 0;- ]  I, R* d# H5 u0 f0 u3 [' j
  45. }; P6 y  h% ?" g3 e$ v
  46. 6 }* ?, F, s; m, T. C
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    8 E$ N1 v3 M' Y" f5 u' X+ l. W
  48. {0 E: V3 F% T4 }* c6 O8 M" L
  49.         int fd, ret;& A- z- o" x% a8 P4 M
  50.         e2prom_s_cmd arg;" o. J. y6 s! |7 _
  51.         unsigned char buf[0x18];
    ( k$ P9 j5 L8 T0 v7 p

  52. ' Y0 H0 H% b4 Z( {
  53.         memcpy(buf, mac, 6);' K6 V' d* b) @4 V, ^
  54.         memcpy(&buf[6], stbid, 18);
    & r; ]# x3 a/ x
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : ]% ~% d9 e: Q
  56.         if (fd  < 0) {
    : g# M0 R6 I; s) i/ f
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : r( O7 _* @5 ?" I$ c# [0 K
  58.                 return -1;1 ?4 c( `* N2 j6 `
  59.         }
    ! ~9 |; z0 E6 M/ ~0 Q7 O7 S6 G
  60.         arg.sub_addr_count      = 2;1 P& I9 _$ S' ]$ C9 m
  61.         arg.data_count          = 0x18;
    ! L& u% f1 {5 v3 H
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " r* t. l9 K: T: W! V  Z9 D& g, U9 X
  63.         arg.e2prom_cmd_data     = buf;
    5 U$ q8 c  I; A
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    : }! A# w9 [+ L' j
  65.         if (ret != 0) {1 x; R- n8 W" w
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! J  G/ M# p* I3 E8 H* ?2 i
  67.                 return -1;
    - W- S/ O4 {: ]( J8 A% \  ^. W2 L
  68.         }
    8 i7 F& M. ^/ k
  69. ; w2 F2 t$ y9 l; z
  70.         return 0;
    & x/ N5 u( K6 q& d
  71. }7 e3 F7 [$ i& `* z. [
  72. + [2 K0 y2 [( D# k1 [
  73. int main()! K% H8 X4 K3 j+ }) w4 ~2 r! B
  74. {
    # J6 \7 E& F9 ?6 K, [+ E  a
  75.         char c;0 Q" n2 T: k7 p
  76.         int i, macs[6];
    ) s9 {. c1 q! p" F# g
  77.         unsigned char mac[6];5 q1 y9 y- Y  v9 B" E
  78.         unsigned char stbid[256];: F. w& z8 R4 R4 y
  79. , |  U3 O; z: c: M7 w$ b6 s4 o
  80.         if (readparam(mac, stbid) < 0)* K( L  p+ c2 S. Q0 P5 }
  81.                 return 1;" o6 e* H7 Y% t/ {& U3 q# i$ X: h

  82. : n' c4 x9 @' h: N% a6 H7 e
  83.         printf("Current parameters: \n");. P* \' E, v" d( X2 R- I* m  U' }
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  f4 I* u& T- O5 e7 o
  85.         printf("  STBID: %s\n", stbid);
    " w) S1 L; G& m* I- R' _
  86.         6 O" R; g* U7 {; C
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . {- H5 i' B4 `! Y$ p8 k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . [' U" O. R# f- G6 h8 l+ x" \
  89.                 printf("Input MAC error\n");
    : U! Z. t/ y* Z- K" H9 m& m" t
  90.                 return 1;
    % C1 M+ B( F$ i4 }
  91.         }" {7 F, f! _4 O4 q  a5 i9 a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];/ h' e# \6 o6 H+ K
  93.         printf("\nPlease input new STBID: ");
    & o. J, {+ s+ I8 T
  94.         scanf("%s", stbid);0 x7 y/ g1 {2 s1 d
  95.         if (strlen(stbid) != 18) {
    $ N1 [/ G' @% L
  96.                 printf("Invalid stbid\n");
    ' R+ O. A, X' z% x% x  `6 ?7 y, [
  97.                 return 1;2 U8 m$ W( k2 f7 F8 x6 y# O9 I, F
  98.         }7 B4 `1 w! |; C  \( S+ R
  99.         printf("\nNew parameters: \n");! Y' v6 N8 d, u1 ?7 s& Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 n; x, k( t2 M4 u
  101.         printf("  STBID: %s\n", stbid);
    5 l0 Z8 V9 s- Q0 Z' g) `, Z

  102. . I) [4 G% y8 @) k$ o2 _5 M4 b3 T
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 `6 _% X# `2 s3 }4 m0 w' [& Z1 q
  104.         for (;;) {% S+ w$ @7 z& g" S' \
  105.                 c = getchar();! A5 I# K: Q5 K- d6 @
  106.                 if (c == 'y' || c == 'Y')$ z/ P# c. ^/ `. v" g8 n& Z' L
  107.                         break;
    $ j2 ^9 b# X9 g1 g- e( R! \
  108.                 if (c == 'n' || c == 'N') {- Q9 ^% g, h$ q& P1 Z
  109.                         printf("\nAborted.\n");
    ( q3 I5 h1 @) Z7 P+ k6 z1 h4 u
  110.                         return 1;8 w5 m# ?4 T# \3 V9 g6 t, G  X
  111.                 }, g1 ~; c; v: D  t3 S' z3 a! w
  112.         }
    3 R7 R7 y# X& L
  113.         if (writeparam(mac, stbid) == 0) & E, U, H* U: U+ }% t( \
  114.                 printf("Parameters changed.\n");# D2 V; T2 B3 B+ L) ~; l
  115. , q% w& {+ i) x8 V  x# I! {
  116.         return 0;; Y! F4 S$ C0 ?5 {/ U6 d  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 8 W3 z: \9 S& `+ w) e! g
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ f9 j9 O: P$ i你用的编译命令行格式是什么?2 W' U5 d2 R. i: K
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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