查看: 16735|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr3 k) y' Y3 R& q8 N, H! l; x% _2 H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    * }- ~' U' F) Y+ y' {
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
0 r6 Y7 c0 ?$ {4 G# Q" m0 kusage: himr <address> <value>. sample: himr 0x80040000 0x0
0 L  i+ m$ s6 I# D" \
+ e9 _5 X4 G4 _; H9 n- C0 y( _# B( c# `. y
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- ]& o6 ^0 A1 w( ?8 o! l9 j
& E3 W3 ?( J1 m9 _* p4 c) Y: @补充内容 (2012-3-8 09:42):+ D- W. x% P! y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. B$ \$ P0 n2 W3 ~9 ?
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
2 t1 [8 L4 w5 o" h, [& }
$ N& e% \: E/ Dhimr <address> <value>. sample: himr 0x80040000 0x0, [4 j2 k! y1 G. Z, q3 w- K

- b1 a  E) [6 m( I7 r例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; K! t1 @) n. u2 ohimr 0x80040000 0x00  e- Q# _/ Q$ k8 O! j3 z9 e
himr 0x80040001 0x11
$ [3 x. C" V; G. j' o+ u3 bhimr 0x80040002 0x22
/ Z, d0 |9 _. a7 hhimr 0x80040003 0x33* D# K' F- o1 Q- I3 O$ C
himr 0x80040004 0x449 G" X$ Q: C+ T$ w  v- M
himr 0x80040005 0x55
' j, j4 J% j8 l# w  c) v- q" R- R  j3 v6 x5 m0 x; U% V1 ^
SN也是类似。. s) I2 f' ]- u

- C; P2 Q# z+ r# x# a现在主要是,谁告诉我们MAC和SN的地址?5 k$ B8 [* i- ^" {8 {3 l) D- F1 ~' A
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . g! a3 t. b/ U' C' _1 S+ V9 K
一直想找到运程修改MAC和SN的办法,苦于无解啊

; n& n, V, s' [  J2 _  O7 J( q源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 4 J7 G5 U1 p! s* _

1 O# V( t% \, K( ~2 R4 w修改的代码早有了。到今天不会编译。
( ~/ C5 l0 z4 }6 T9 Y5 b8 t需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - `' x* f  k& V6 {
  2. #include <malloc.h>3 N1 J: f3 b& {+ @
  3. #include <sys/types.h>) g+ g2 {7 b% H* K% ?1 O# J+ w
  4. #include <sys/stat.h>
    3 z0 h, m/ V) _2 r0 M
  5. #include <sys/ioctl.h>
    9 n6 A! L' w9 `! `5 Q+ V6 e4 c
  6. #include <stdio.h>3 n* Q' Z! \8 y
  7. #include <string.h>
    $ {4 W! y6 v* L2 L

  8. 6 i4 f, h. }9 i# p$ Q
  9. typedef struct {
    & n9 q& g6 o# y# }( l. M. [
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) j8 U0 t7 P$ A& H
  11.         unsigned int        sub_addr_count;
    + K. w7 j- G5 a9 a" O$ _
  12.         unsigned char*        e2prom_cmd_data;0 S8 g, Q; P$ A) h/ J6 ?0 c( a
  13.         unsigned int        data_count;
    9 s, O/ y# I, W! l8 T. e( v
  14. } e2prom_s_cmd;! @& K+ Z1 _, Z7 |2 a; p! K

  15. 8 P  _5 x6 w$ J6 B; a2 g+ M
  16. #define E2PROM_CMD_READ 1
    4 a6 Q% j6 u, M5 w/ A' K0 D$ b
  17. #define E2PROM_CMD_WRITE 2
    & o0 F0 i: P( o' m1 V+ {" |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16") P( v. \% R3 d/ a
  19. 2 f+ V$ C$ L/ X* Z0 G
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ; p# ^2 e& ~" P5 q; V
  21. {
    3 _( A& p/ n5 E' q3 C  b
  22.         int fd, ret;8 \# C8 H# n" d: t" I% Y
  23.         e2prom_s_cmd arg;$ L8 ~% L% h1 q" ]: l" l
  24.         unsigned char buf[0x18];  Z  }+ `8 f* c# C7 U  X3 `
  25. & L' x, x$ o/ m9 K+ q; u1 U
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 r/ K) i& C1 @' }
  27.         if (fd  < 0) {) p: V9 N0 Q0 l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# k/ ]8 L6 i  Z* ~  n% [+ ^
  29.                 return -1;/ v* _# }) U/ p8 c1 X3 v* e9 ^/ B1 O
  30.         }
    , j) r; d8 F9 c6 |
  31.         arg.sub_addr_count      = 2;5 H$ v8 N0 C) b! [, c
  32.         arg.data_count          = 0x18;+ Q3 q7 y. I. _5 m7 Q; D5 n
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 }5 ?9 w1 S+ `, L& J
  34.         arg.e2prom_cmd_data     = buf;  w0 \( G; v; u  u* L( m
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);/ I3 [' C0 l" N/ I/ z, B! b% p
  36.         if (ret != 0) {( }8 D. f7 v! a& s0 d
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 _6 ~/ o2 P% }; c$ x6 f
  38.                 return -1;
    - `) i+ F' c: A( m$ ~8 z
  39.         }; L3 _4 x7 Y4 V$ `) g* B/ i/ o
  40.         memcpy(mac, buf, 6);
    7 G' T- b2 u8 I6 z( N* J2 ]5 T  I! _
  41.         memcpy(stbid, &buf[6], 18);
    & P8 E8 U: h3 ~$ ?. u" ^
  42.         stbid[18] = '\0';
    4 Y- ?5 m' @: n* {& A8 {

  43. & A3 N+ G# [1 h5 C
  44.         return 0;
    7 p( a- E* G* U/ s
  45. }
    / s- A7 r* Z! K
  46. 2 w: i4 f; n# |* j: A7 r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 s# n" s% Z$ ]2 e3 `  F: H' O1 s' N( k- e1 J
  48. {
    * b* t$ R. `2 U" |' ?3 P
  49.         int fd, ret;
    6 U0 ~0 J: Z" ^8 r" d, E
  50.         e2prom_s_cmd arg;# e3 I' O; f% s- y' r+ m+ H
  51.         unsigned char buf[0x18];
    ( Z6 _4 D; }7 H, r, `( ~) F6 w

  52. . ^4 n" C2 D7 d* A  a" a8 K
  53.         memcpy(buf, mac, 6);
    . x- s( t6 t. X( i8 q8 t4 B
  54.         memcpy(&buf[6], stbid, 18);
    * y6 \! ?$ K, M  y8 H
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 o* U9 A, b% _9 F
  56.         if (fd  < 0) {1 J, o6 x$ O+ N# v0 V( R) V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . C9 ^+ E8 k+ f3 l3 v$ I8 m5 V7 S
  58.                 return -1;
    , I: c( C. H; L, K- ^; a" o* m& \( R
  59.         }
    # `. y1 E' C+ c, m) a" J- X
  60.         arg.sub_addr_count      = 2;( ]0 @" A8 s$ y% Y! J5 _  T
  61.         arg.data_count          = 0x18;* }/ x/ r7 p' S/ r5 L# d
  62.         arg.e2prom_cmd_sub_addr = 0x290;% R+ x7 h' }$ O; P0 n6 c0 C
  63.         arg.e2prom_cmd_data     = buf;0 k* H7 H/ ?. H6 c6 a/ R/ n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 e2 e5 _" I- P" p
  65.         if (ret != 0) {
    4 i2 n4 M0 h2 e( v( D2 i+ h5 q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ O( i  n5 P. l( B. [
  67.                 return -1;
    % A$ T0 z: Q# E- f7 }) c, f7 i
  68.         }$ u7 a' d9 I0 y1 L/ k7 T+ p1 e

  69. ) H- o6 K% x/ ~5 z- q
  70.         return 0;
    ) h/ Q5 p5 _3 D4 M  [& A
  71. }/ |. a) u1 u; A. e
  72. 3 g) _8 E$ o) [
  73. int main()
      _, O: S7 t7 ]  q; X" _
  74. {3 v/ [) T8 I0 [, o
  75.         char c;
    2 Z& a* A5 ~# C
  76.         int i, macs[6];
    - T2 _# J& D! m& A4 ~* ^
  77.         unsigned char mac[6];
      m( `" P1 ?/ W
  78.         unsigned char stbid[256];
    8 v+ l6 z/ K! \) l: I+ j
  79. 1 P6 d! z2 n; y- a; c, O
  80.         if (readparam(mac, stbid) < 0)6 G1 x1 ~8 \3 [
  81.                 return 1;3 A6 v1 P2 K1 _- A4 l
  82. ( d* i$ e1 {; Y6 H+ X/ o6 o
  83.         printf("Current parameters: \n");5 g- q' X8 @- i2 Y8 n; `2 j2 @
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & v- W$ @# L$ D0 k1 ?
  85.         printf("  STBID: %s\n", stbid);: P. m( Q( L9 w* F& u9 R8 S* B) F
  86.         6 z3 K: w5 s. L8 Z5 g8 j3 m5 w
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    & T% Y' W) m6 z0 w3 a
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) K+ G/ [1 J: ?: s! e
  89.                 printf("Input MAC error\n");
    ' M/ X( `' J2 }1 Z. G- d6 r! P
  90.                 return 1;4 p1 k: n3 `" R$ p3 n$ B+ j9 L
  91.         }
    ) y% T, o, A- Z, T& s
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) \: }6 L" o8 o
  93.         printf("\nPlease input new STBID: ");
    7 P/ ?" \8 K1 v$ |
  94.         scanf("%s", stbid);
    . Q' c) \# g" {8 g
  95.         if (strlen(stbid) != 18) {. a5 F" W5 ], u; y1 K& J! J
  96.                 printf("Invalid stbid\n");
    3 r. M5 R9 ?% y# X6 t8 w
  97.                 return 1;. W, x  O; @: C- e2 T( {' S
  98.         }4 L& S" R% G* B. ]6 H& g
  99.         printf("\nNew parameters: \n");' n6 R9 j) u/ V2 u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + P5 p! p- r. ]' @7 H. n( x
  101.         printf("  STBID: %s\n", stbid);5 S; [$ p1 d. ]4 k
  102. 8 [( V( z- m1 r
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    $ M# s! w/ h9 r5 J4 l8 e# {
  104.         for (;;) {" j; t4 p0 l( o( [7 D/ F
  105.                 c = getchar();
    5 k, s- j! a5 a* D) i+ V; }
  106.                 if (c == 'y' || c == 'Y'). Y4 M% W! ~& ^- b/ i& ?
  107.                         break;, P; O% L# E3 S: u# Y% f; e" z* N
  108.                 if (c == 'n' || c == 'N') {
    1 Y+ k8 X* C" L: n( L! a0 U" @
  109.                         printf("\nAborted.\n");9 j( o) n* o% l1 ]6 _5 U
  110.                         return 1;
    * [( J1 ~. t6 S8 j* @! h
  111.                 }
    4 I: J' |# R" z! `
  112.         }& t  ]9 G3 G2 r+ {
  113.         if (writeparam(mac, stbid) == 0) % j4 b4 j  w& S5 ]) j( E- A
  114.                 printf("Parameters changed.\n");0 s) P( O* q& `" n" o

  115. 5 y& ~* m; G) \
  116.         return 0;
    0 v8 j) E8 R* \- J5 ?( [. y
  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 1 C% S$ m# L: b- R+ Z# L, h8 g1 B
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 n0 w* q0 ]8 O; c" [你用的编译命令行格式是什么?, E9 n* ~' r1 o+ d9 p
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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