找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15146|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# `; w2 y+ P% g, {: o
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' _) {( w" j: K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( D: A5 f' r2 L4 a* musage: himr <address> <value>. sample: himr 0x80040000 0x03 K/ `1 b' m# C2 T5 a
$ F) @( C7 `8 z
& D$ K) O, V% H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
; J+ ?0 f0 A! y* w3 O: j+ I  J3 ?+ C, s0 B( ~$ o6 y0 Z
补充内容 (2012-3-8 09:42):
/ ^: B% v! [' `- b5 {7 X* r, Q: Ghttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数# E) W* v- k% e1 h+ q6 p- }. J
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
. I: F: g9 h% r* K& J) u( R
0 t1 I% z3 u* \: [* f5 nhimr <address> <value>. sample: himr 0x80040000 0x0
9 y( O  _# G- O  W: M3 l  G8 m
) J2 j8 _. Y* B9 w- K例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。. w% @" N/ R& V3 o
himr 0x80040000 0x00
% C) p" D6 s% ?5 ]: c" yhimr 0x80040001 0x114 {( E. Z/ ~: q5 q
himr 0x80040002 0x22
5 c4 p7 l; S8 w. B4 _9 j) fhimr 0x80040003 0x33
2 {, k1 b0 Z, J8 `2 Chimr 0x80040004 0x44
9 z; O, D& y0 b0 L, u0 q0 V+ Vhimr 0x80040005 0x55
( I6 L- V( }8 m8 o" m
. T: J# j* ^3 v# }8 ~# M* [, bSN也是类似。0 a7 o. t, v0 v* B: z% m1 W6 g
+ ^2 |" M8 s* g& _% O1 F
现在主要是,谁告诉我们MAC和SN的地址?( B; _0 u1 a. _2 F
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
* a/ k& U! v' V8 ]一直想找到运程修改MAC和SN的办法,苦于无解啊

) c" G( F! _) v8 F/ v源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
3 _  O  p# c0 ?! n9 s+ Y+ M' R
+ w, e! R) ^7 b" `修改的代码早有了。到今天不会编译。
7 k' N( P! z3 h: K. G需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ \; r8 G( n0 r5 ]+ L, W( T
  2. #include <malloc.h>- M4 _0 r, W% w) ^/ e4 Z
  3. #include <sys/types.h>
    1 r) M# I3 E- {  a8 X# h
  4. #include <sys/stat.h>4 |6 J5 i! N, P
  5. #include <sys/ioctl.h>8 b  s9 T, Z5 b1 J
  6. #include <stdio.h>
    ( x1 v* s' l$ @% D* C
  7. #include <string.h>+ p9 H' h0 D0 H& W, B

  8. 6 M4 k: n& i  h2 J
  9. typedef struct {
    8 g# d$ M. T: E  t% B1 T
  10.         unsigned int        e2prom_cmd_sub_addr;- b. B0 n" U8 b1 a6 B5 v% J9 b# b
  11.         unsigned int        sub_addr_count;
    9 S/ d7 C; S! o1 ?, g" A
  12.         unsigned char*        e2prom_cmd_data;5 n9 h$ Q+ Z2 t* q
  13.         unsigned int        data_count;
    ' e$ }1 l* \7 ?2 n) p" j) m4 }
  14. } e2prom_s_cmd;
    ( e. n+ i3 E* M" J2 n" X9 k9 V
  15. 0 J$ F8 c8 x5 D1 i8 T1 F  v
  16. #define E2PROM_CMD_READ 1' I8 h9 G4 W3 h
  17. #define E2PROM_CMD_WRITE 2
    % u: J! [9 \/ Q; L1 m9 H* q/ i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( L( |/ b. h$ W% a: p

  19. & I/ `( V8 |; A* C" M* h
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ {% t+ Z7 @0 F2 u
  21. {! R) D3 a$ i; _& |5 R6 c5 B
  22.         int fd, ret;
    3 p% w+ I( X, {. j- Q
  23.         e2prom_s_cmd arg;. L: _, C# U2 l! V  u% L6 b, J1 g( X
  24.         unsigned char buf[0x18];
    . G7 g' }! |; s$ u4 h6 z8 S
  25. 4 S; Z5 [' W& @# y" G( a
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 F8 S# \- E. i/ ]( f, O
  27.         if (fd  < 0) {* E6 V) }6 c7 J1 e/ R9 f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * t+ t' @3 x- X  P# {- y/ S( C+ r
  29.                 return -1;
    5 @) I) f9 g% M5 F: a0 ^
  30.         }- J( Y4 r, h0 R! o
  31.         arg.sub_addr_count      = 2;; b4 A1 Z+ J9 p& P
  32.         arg.data_count          = 0x18;
    * h" A/ S5 q* B, f+ p
  33.         arg.e2prom_cmd_sub_addr = 0x290;7 ?3 }5 R& @" K) n7 Z$ ~" w
  34.         arg.e2prom_cmd_data     = buf;- G! Z! }7 h/ C! m
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 ^- u3 j9 k, C  ]) A
  36.         if (ret != 0) {/ R) ?- O/ T" d
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    1 e/ p- P+ f* E- E. h4 f7 J5 M# d
  38.                 return -1;
    - h2 c9 [9 L* G* p
  39.         }1 ?# b! T8 u# Y+ ?  c
  40.         memcpy(mac, buf, 6);- ~1 }) Z3 ?! F1 [3 L3 `5 ?1 L
  41.         memcpy(stbid, &buf[6], 18);2 v# x* \( M! V
  42.         stbid[18] = '\0';
    8 j5 X/ v$ x' J0 m

  43. ( V# _' g# p* n6 q
  44.         return 0;
    6 F" \+ O6 x7 {! x, o
  45. }
    - @1 {( j/ Z. h/ q  z$ g& Y' A

  46. ) g- v' |; `: R2 A! h# y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)5 o- v; C1 _; q
  48. {* j4 V' V+ \0 T2 a, Z+ l1 s
  49.         int fd, ret;
      E/ b+ k. _/ k/ m2 x/ Q
  50.         e2prom_s_cmd arg;
    * S+ I) q- Q8 l. |4 J7 f: R  L
  51.         unsigned char buf[0x18];
    & r* m8 w2 ]. o& g- ^
  52. ; M- v" {7 O' n$ S0 A
  53.         memcpy(buf, mac, 6);
    $ I. b3 W& ]+ B, L' l; D' ?+ d
  54.         memcpy(&buf[6], stbid, 18);/ F4 ]+ C( e1 B
  55.         fd = open(E2PROM_DEVICE, O_RDWR);1 S+ H* J9 r) @" ~+ J
  56.         if (fd  < 0) {' c8 z8 _  b! `  w) j5 R) p( ]
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, q, Z6 G, b% K
  58.                 return -1;
    : X2 e1 |1 ^. p) I: b* k, [  t
  59.         }
    # I" E8 M$ W( n% c7 f5 y$ @0 n
  60.         arg.sub_addr_count      = 2;1 \! z. l, C) m, H2 J0 u, }1 ]: A1 M
  61.         arg.data_count          = 0x18;9 X4 [" @, a' i4 R' g6 n( ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + D1 q& y5 z7 T1 }
  63.         arg.e2prom_cmd_data     = buf;; L& E$ u- B+ J% o: p* v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" A0 X6 I6 ]) G
  65.         if (ret != 0) {" F( k9 t' |5 x9 r/ o" L: P. u9 ]
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 p. W# S1 `3 ]  G( y; i' d
  67.                 return -1;
    3 e" Y! B2 I0 h5 i- E4 o1 y$ P
  68.         }7 \! L2 Z7 k% z- ]! m- P

  69. 2 i: S6 }% X! ^2 o; K3 B! E
  70.         return 0;
    : W* F) ]% S. S8 r# }& P
  71. }" {7 B  b# ~( P5 y2 G
  72. : F2 ^* X( P. z) {2 y
  73. int main()# E/ e  y, \" h9 d% L& v
  74. {' M0 B& l1 k- C. c3 Z5 l1 g5 P
  75.         char c;1 i8 x8 T5 J4 y5 b3 c0 K. ^
  76.         int i, macs[6];( L( M2 a. g9 N/ N+ s& i- w
  77.         unsigned char mac[6];
    % f* k  M: I/ r% k
  78.         unsigned char stbid[256];
    3 K0 Y$ R+ \9 S* |& [! g$ m- i( P8 }

  79. / }  [% h% _! b4 ~! v5 y( ?7 Q: l
  80.         if (readparam(mac, stbid) < 0)( R8 R: Z, ^: f, b6 Z! ?. x, R( N
  81.                 return 1;$ q' Z' [2 E5 p& F& C5 T0 ~- _5 _

  82. - r( A  M+ ^# l- {' |0 g! f9 ]
  83.         printf("Current parameters: \n");* N6 r( Y+ D4 Q7 G0 c0 u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* q/ f2 f7 w$ e" T- |  }# \8 p
  85.         printf("  STBID: %s\n", stbid);
    2 \4 d7 ^3 ~; {+ G
  86.         . Z5 r: [5 |2 M5 P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    & Y. O, i0 ^9 [; L5 a8 B- @
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {' c; |) B; w# j& D/ e8 Y
  89.                 printf("Input MAC error\n");
    + z3 C% ^+ P. ~2 H- r9 _
  90.                 return 1;# E' F  b: y& r' ^4 v5 {2 u9 t
  91.         }
    6 G( m# |& ^4 ]  i- ]( y& {; n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) @2 S3 [8 y; v! g% G- d& }
  93.         printf("\nPlease input new STBID: ");' G6 C! Y( M) |/ y  ?
  94.         scanf("%s", stbid);
    $ H, Z/ ~1 n! N1 _
  95.         if (strlen(stbid) != 18) {2 b9 Z$ R% o3 o1 [
  96.                 printf("Invalid stbid\n");  f, n6 A% e  K/ i) E" s
  97.                 return 1;
    5 \- W! G$ s0 o( o
  98.         }% O) K" v2 X' s5 ^  l  U8 ?
  99.         printf("\nNew parameters: \n");! s* l( f2 y- y' K0 o& T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , ^1 N! f$ E  y7 G# y7 M) J
  101.         printf("  STBID: %s\n", stbid);* V7 \, _$ o2 y4 ?1 G
  102. ; m3 d. x' y" q
  103.         printf("\nDo you want to change paramemters? (y/N) ");$ m$ o4 L6 ^0 C* ~
  104.         for (;;) {! g1 {/ d. {% r' j
  105.                 c = getchar();8 E7 \% K' E% X7 w1 }
  106.                 if (c == 'y' || c == 'Y'). ~4 f7 f9 ?. n  w- T
  107.                         break;
    6 I# y( M9 k2 o6 @" B
  108.                 if (c == 'n' || c == 'N') {
    ; A, U% l# U* `& ~4 \( z
  109.                         printf("\nAborted.\n");
      \/ M6 v# h1 G( I* M1 B; \! k. ^
  110.                         return 1;
    5 t. j0 s/ W. f" v! \- l" `
  111.                 }8 V5 N9 O. t/ D3 d; F# T
  112.         }% q) s5 C. I* t4 k* f
  113.         if (writeparam(mac, stbid) == 0)
    / W5 {1 C$ c: ]! E4 f4 p
  114.                 printf("Parameters changed.\n");
    $ u, q$ Z) {" k" a7 }1 e
  115. 1 E+ ^% \% @3 f/ M
  116.         return 0;
    * |. l1 q) a7 T
  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 " |4 W: O8 j/ q4 Y, F" G& L8 E( i
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 U& [3 r4 Z4 @2 q* ?1 `2 A
你用的编译命令行格式是什么?5 U" M( j" T# D- z- j" @' W
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-28 17:35 , Processed in 0.024871 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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