查看: 16653|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * K; Y' j+ R7 ]
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig" H1 D& r- c& D5 \# Z4 O; L9 j9 C
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:/ n) w+ _( Z1 Y
usage: himr <address> <value>. sample: himr 0x80040000 0x0! ]$ z* Q: W. e, y

3 |9 H( ?, S+ D/ d6 V" i6 z
. w6 r+ L; `8 U0 P/ a& ~不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; L4 @( M! _/ A3 h3 v0 {

/ J" i2 @. s6 w# j8 L1 c: ~1 h补充内容 (2012-3-8 09:42):* o+ Y  N0 D9 i! y6 g2 ]
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数" m2 i# @8 G8 p. E4 [& M
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。, A4 _' u7 C% F: g. d- j! {0 V9 k# I
( S6 Y, ^. n0 E# Y
himr <address> <value>. sample: himr 0x80040000 0x0
; t2 Z2 {" ~6 ~8 G- Y
, c7 ?  `% g% m2 A2 I例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ o- {* R0 H; G; Fhimr 0x80040000 0x00
& v; `/ {3 K% {8 Khimr 0x80040001 0x119 c/ ?3 F/ C. V8 O) X. g- |
himr 0x80040002 0x22/ Z7 q- E  O% k2 `& F7 l
himr 0x80040003 0x339 q; [5 x; V, ~
himr 0x80040004 0x44% K9 p, z; u; ]: m
himr 0x80040005 0x55
+ \8 {" M7 h& e7 B2 y  Z) R" g3 v2 _" ?8 @1 K
SN也是类似。3 B3 K. c- X6 u- T
8 Y/ z7 J" {$ a3 E1 j
现在主要是,谁告诉我们MAC和SN的地址?
- A4 V8 T; _  C9 H5 p
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ X: r2 Z  v( ?: w( }5 c一直想找到运程修改MAC和SN的办法,苦于无解啊
9 O7 K% t* S6 j* z0 x2 E) E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 " |! E& c3 a, c( k9 u- a
: l! B  W9 N  V0 ~, l4 _
修改的代码早有了。到今天不会编译。
* k( ]9 Y+ o6 M  x需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: d' T0 K1 B) |7 Z( {" }
  2. #include <malloc.h>; l6 p1 y( j7 U' i9 t: I9 F5 ]
  3. #include <sys/types.h>; q. P/ R/ k9 |; I$ K$ ]
  4. #include <sys/stat.h>
    & u: L+ I! J; g& R) g: A
  5. #include <sys/ioctl.h>
    3 v  c& X9 Y# h% l) l) l* \6 G
  6. #include <stdio.h>4 X/ P7 d% w  J
  7. #include <string.h>
    ( J# R! n* k0 B0 B

  8. ; }+ ]9 C% _, x. l, \
  9. typedef struct {& J3 t! H. Q. P$ u, w% [
  10.         unsigned int        e2prom_cmd_sub_addr;: N+ z  R8 v  ], x0 M4 P$ M
  11.         unsigned int        sub_addr_count;
    2 ~" y5 [: p! q' l. c5 X
  12.         unsigned char*        e2prom_cmd_data;
    2 q. A: _3 Y0 w" L
  13.         unsigned int        data_count;1 w! ]9 Q& G0 Q( q# P
  14. } e2prom_s_cmd;
    ' Y. q. g* q2 s- E
  15. - X# d  H5 E" g
  16. #define E2PROM_CMD_READ 1
      f, Y4 r& b% x. u
  17. #define E2PROM_CMD_WRITE 2
    1 r' z* u, i* J& U6 F; e
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . x1 l  [6 D& z( x. h6 p. G5 ?
  19. 0 L. W- e- K+ y3 f' T2 R
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ s1 s1 w+ r4 B& p5 n( ?
  21. {
    ; y. t, w1 q) h
  22.         int fd, ret;
    : c) L, B! B6 u
  23.         e2prom_s_cmd arg;8 g& w0 V  l& h0 h" y7 v  b" v
  24.         unsigned char buf[0x18];
    * p4 K4 q! M7 d7 p1 c, J7 M+ F

  25. 1 `* M8 {; {( A6 ?4 y  A) `
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 f  V; J3 P& }
  27.         if (fd  < 0) {
    4 Q! e+ r% D9 G2 ]2 g% p
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 i4 G* c, O) V) j1 K* A
  29.                 return -1;$ V. [9 Y) o, [2 G
  30.         }
    % s* h7 i! O+ c1 C( B6 _8 M
  31.         arg.sub_addr_count      = 2;
    ) |( d* n+ p8 V
  32.         arg.data_count          = 0x18;
    3 t; E, Y. H& ~3 C! z
  33.         arg.e2prom_cmd_sub_addr = 0x290;0 J0 f$ d+ \/ U! F1 ?8 S4 D1 H
  34.         arg.e2prom_cmd_data     = buf;
      ^! G/ [& }' }# z8 u
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: L4 \/ C! P* m: W
  36.         if (ret != 0) {, F0 ?: T9 D+ Z3 D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    / _' y. `1 F0 |3 z- y$ m, m( [  J
  38.                 return -1;
    - A  ~0 D; i# a; G! @. }! I! L
  39.         }" j/ K* A+ @* ~/ H' [
  40.         memcpy(mac, buf, 6);
    $ p; L" Z6 K& U# _
  41.         memcpy(stbid, &buf[6], 18);
    * }7 F- k( V1 w. b) k# R/ g
  42.         stbid[18] = '\0';
    7 C2 y5 f% W1 A! r5 G" a
  43. 0 d- \* _, v8 b% o( S
  44.         return 0;# x" I2 O( m0 r
  45. }& i8 y/ E7 a/ N, R- w
  46. 8 |# ~9 E! Y) ?1 O7 ~1 H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    + O) T. k  s" B4 D+ m
  48. {
    & I) X  E( o- Q; ~& F( V
  49.         int fd, ret;. \) [4 K- L0 `: ]1 F8 K: e' K" s
  50.         e2prom_s_cmd arg;
    8 G/ v9 G( T" e' T4 M+ o. g2 w9 M
  51.         unsigned char buf[0x18];4 Y7 n( U2 `0 @0 T+ ?; K

  52. ; x$ _( q2 M. P2 _4 y
  53.         memcpy(buf, mac, 6);
    % q/ k, K& J% q3 m5 Z" s
  54.         memcpy(&buf[6], stbid, 18);# M4 @8 @* {8 n! l6 j% j/ I% ]; p+ |
  55.         fd = open(E2PROM_DEVICE, O_RDWR);9 w: H7 L; K4 A/ q7 O
  56.         if (fd  < 0) {
    * o3 t4 p$ Y" T9 P
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " n6 s5 g; _" }5 ?7 I
  58.                 return -1;5 n3 f+ C% V# x4 L5 g$ }
  59.         }
    $ o( n  f& b1 |
  60.         arg.sub_addr_count      = 2;/ h7 n. A4 S% T
  61.         arg.data_count          = 0x18;: p  Q2 }& F6 d1 ?0 o% P. m
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    * [3 L+ k% u: `! q8 \
  63.         arg.e2prom_cmd_data     = buf;; O. r# T+ R2 n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 C* _" O: J9 i1 L0 x. H+ X+ k
  65.         if (ret != 0) {% {8 s5 |) S9 V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);' k7 u- D* q- D& H, w
  67.                 return -1;. \0 H/ {! W4 p9 b/ j; {4 X* r
  68.         }* a9 ]' n1 U% i9 K& R6 R& ~

  69. ) ^  I6 b4 |& ~5 h) _" [) h, d9 T
  70.         return 0;$ C- y" C* s3 }- }5 S
  71. }
    + `. E5 m* Y$ A5 E- S

  72. + `* l2 n& q! i- f0 P
  73. int main()
    - n/ |. _) E( d" a
  74. {
    8 O4 @+ G2 L5 W/ F) |
  75.         char c;$ t2 E0 B- Y. b9 Q; X
  76.         int i, macs[6];9 j9 _& V* n8 L8 N1 L
  77.         unsigned char mac[6];
    9 w6 R/ j! A- c
  78.         unsigned char stbid[256];
    ; U( [+ E  g" Z3 n4 w

  79. , ?$ ~# Q8 O; E1 U$ A& a
  80.         if (readparam(mac, stbid) < 0)
    ! M- n9 y1 }5 l3 P$ j3 c, P; l
  81.                 return 1;
    : Y) a/ {0 [$ Y, f! G, b; b' h" r1 Z

  82. / T2 l9 t7 I9 @8 t! ^- \, r
  83.         printf("Current parameters: \n");
    6 N6 G+ }4 [5 G% v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" h! N& h- A. N5 ]- f
  85.         printf("  STBID: %s\n", stbid);
    , A' w( z! l9 H3 f5 ?
  86.         & d: g. X% M; s8 f! R& R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 r( {2 B$ O$ |
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {6 @7 l- \5 a7 M; \$ U9 I/ c- ~
  89.                 printf("Input MAC error\n");. C7 s( k' x9 A8 X7 u2 c
  90.                 return 1;
    3 q2 O0 f* E$ p1 V" O" F
  91.         }
    ' W/ U1 {$ p1 }# _& p) e& B- W- P8 s7 D; t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];. W. a% }" C9 j& t5 P
  93.         printf("\nPlease input new STBID: ");% y* T- d+ Q6 E
  94.         scanf("%s", stbid);, V; M5 U, V# e/ ~: }
  95.         if (strlen(stbid) != 18) {
    ) A- ?* c+ @* j: k
  96.                 printf("Invalid stbid\n");
    ; V3 F- O9 @- }5 U$ D
  97.                 return 1;
    " `& u) K( ?( j* I  U0 Q
  98.         }, {- m3 ?  q1 t* q
  99.         printf("\nNew parameters: \n");
    ' V- t& }, V0 W
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! k- ?3 S* R& R5 ^* H1 Y
  101.         printf("  STBID: %s\n", stbid);* Q1 K4 k9 U: p4 C8 }
  102. % C' o( N- F9 Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 R  `6 W- N- O9 ?  h
  104.         for (;;) {
    2 J- h: X! J" K# ]7 v" b1 x1 K
  105.                 c = getchar();
    6 m. V8 I: j7 X* \) L2 k
  106.                 if (c == 'y' || c == 'Y')  E3 k! H/ N( ~8 h
  107.                         break;
    2 B, K, O1 @  @5 G& d
  108.                 if (c == 'n' || c == 'N') {
    $ L5 ?; @2 b7 c) d1 j
  109.                         printf("\nAborted.\n");
    # i1 P6 d5 W! V2 _9 T
  110.                         return 1;5 e" \5 q& O% ^$ s1 R1 O8 x/ C
  111.                 }3 g: G  A  A: U3 c" c5 O9 o
  112.         }  B# A$ X3 M5 I/ m$ [' C
  113.         if (writeparam(mac, stbid) == 0)
    + n  d$ p" A, D! K2 F
  114.                 printf("Parameters changed.\n");& u1 n8 M' @$ R4 P0 d1 `

  115. " q: k' d% V$ q5 q9 R) {- ~
  116.         return 0;
    8 o$ e6 Y* H0 x- c2 l: D: [( k
  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 9 q+ n4 O9 b. _* G0 ?# ?7 {4 ?; _3 I
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) N$ M+ E6 z' A9 L; t9 }你用的编译命令行格式是什么?3 C( ?+ h0 Z4 |0 H' R
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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