查看: 16895|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    # N3 X+ r; u) W' T7 Q* b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    + u) j- P! S2 U8 x  ^
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:9 W6 a& b' R! c' Y4 G
usage: himr <address> <value>. sample: himr 0x80040000 0x0
4 G5 J# A* U2 x4 X, V# ~
2 W* G5 [6 p/ p3 _; z5 i9 Y  `5 {1 {5 x6 ^3 F7 C. z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" S1 R0 _3 @7 E4 @( \& O
8 k+ Y2 G% s+ [, w# `
补充内容 (2012-3-8 09:42):! R, P$ k' Y8 e+ ^1 Z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ ^5 D3 Z; e6 z这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
! f$ G# m7 O0 O5 s0 b
! @2 s& n2 @  Bhimr <address> <value>. sample: himr 0x80040000 0x05 N& h8 |5 f# }% a! L; E+ S5 u

7 ]# |4 H8 M. K: u" \2 K4 y6 J例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 K+ j# ^3 x% k+ Jhimr 0x80040000 0x008 `9 J' u9 o6 j8 g
himr 0x80040001 0x11: v; _, e; G2 r% @$ _; C& j/ u
himr 0x80040002 0x22/ H. D. g* q. a* }3 N. F8 ?
himr 0x80040003 0x33
2 N" U5 i  x5 B9 U7 }% f+ qhimr 0x80040004 0x442 {* Q$ o# j6 U  ]# |
himr 0x80040005 0x55* v. \+ _( h  P  X7 E/ ^
" o9 |2 R9 K$ W& P* Q. t
SN也是类似。9 h- _/ p- y) X
6 w7 a# N, Q; g2 M/ O6 J- e7 P! M, \" t
现在主要是,谁告诉我们MAC和SN的地址?( N- Y2 X1 \" D6 p0 t
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 ~# L% M3 p" U$ t一直想找到运程修改MAC和SN的办法,苦于无解啊
4 o1 g# w9 g/ W) u" y& T2 ]
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
" O7 g1 L6 ]& E% |8 F( [3 P& K# S& g6 b* Y
修改的代码早有了。到今天不会编译。* E4 X" Z8 g, I; y8 g
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ Q: L. m% z+ d% n2 b/ B
  2. #include <malloc.h>0 a- k! B6 N: }
  3. #include <sys/types.h>
    / V- _: Z! B% d/ J* x0 f, t
  4. #include <sys/stat.h>8 [$ }" W6 i6 E/ m5 A6 s4 C/ f
  5. #include <sys/ioctl.h>
    1 m% R# r; A! Y
  6. #include <stdio.h>7 E' T4 |9 ^0 M
  7. #include <string.h>9 [" w% a7 l, G. D" c- g3 p
  8.   l* `9 i. b2 U1 b5 k8 t8 a7 x
  9. typedef struct {% `' h+ @) F! ~" b" `- V- ]
  10.         unsigned int        e2prom_cmd_sub_addr;! {9 |1 ?3 h0 R1 d  L' [
  11.         unsigned int        sub_addr_count;$ Q; ]: y4 r7 s7 p* b$ \
  12.         unsigned char*        e2prom_cmd_data;
    + h5 b3 T, ~$ i6 k: N# |
  13.         unsigned int        data_count;
    * S) u" |: I3 g& l$ n
  14. } e2prom_s_cmd;! a9 i  d4 e2 n. p+ c+ k# Q  T

  15. 3 C- g0 d8 I2 c8 s& ~) n8 I: u
  16. #define E2PROM_CMD_READ 1: K% v; z) v) G0 I: ]' s6 m  R
  17. #define E2PROM_CMD_WRITE 2
    $ D0 G% b# H# i9 w% S/ E
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 X; M+ D- a3 [" T3 ]& R. t2 @

  19. + N: K) W1 E3 }4 `
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 s9 p  S) _! r. F9 T4 b7 L
  21. {- a* O) S2 H5 H' {1 W- ^$ O
  22.         int fd, ret;' g3 s( s' x5 }( T+ H
  23.         e2prom_s_cmd arg;9 A, ~7 j4 e, L* \# y2 d5 b+ n
  24.         unsigned char buf[0x18];' U. c+ S, b. k* n0 `; T
  25. ' e2 H* P- U# X" j# U7 n* q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 p+ M2 L+ \; [
  27.         if (fd  < 0) {
    . R* O9 A( V9 V  e5 j
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);* p- w& x4 _! l2 T0 h
  29.                 return -1;
    ; ~; z5 o& \  c
  30.         }& n) a1 N1 Y# P0 D. s, q
  31.         arg.sub_addr_count      = 2;, H1 F* C% }: ?5 ?/ m
  32.         arg.data_count          = 0x18;
    & K8 k1 H% s, _' D- A6 |
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 ]  z6 m( M& t9 q% Q
  34.         arg.e2prom_cmd_data     = buf;
    4 n6 M/ V: I, G
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ P8 x5 \+ ]& A( B, G# o/ D3 r
  36.         if (ret != 0) {0 u7 O  V) p' M* q) M8 p$ e
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 D: ~6 y9 @6 W6 _1 ^# C
  38.                 return -1;
    & x( g- @9 Z8 v9 X
  39.         }
    1 R- H  g, J: M
  40.         memcpy(mac, buf, 6);
    , H3 a. v# k4 Z
  41.         memcpy(stbid, &buf[6], 18);& T" A1 z$ w8 x& d
  42.         stbid[18] = '\0';
    . k5 j2 Z; M. o6 C1 O- q+ o' R! a' d

  43. & v8 g# q1 A+ h  C3 y% Q
  44.         return 0;- q! w$ @, y7 d) n" M
  45. }
    8 \0 F4 H# U" `8 N

  46. 9 `2 M9 B' H2 n9 `8 O/ U0 b) a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)* a+ Y1 C& S* U$ r; V# [
  48. {3 S5 Q9 x; ], q* V( l
  49.         int fd, ret;
    ( H# `0 Y7 C  b+ N# w+ L
  50.         e2prom_s_cmd arg;! A' Y" w; T$ i; x: d! o: U
  51.         unsigned char buf[0x18];" @: Q* a0 l* F" D& }6 x
  52. # f" I! Y% d7 \+ c# m
  53.         memcpy(buf, mac, 6);
      o  A* ]; V9 h6 ^# g( r" b' N
  54.         memcpy(&buf[6], stbid, 18);9 I9 N6 E3 @) o) d4 r/ r8 O
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 r. T. r9 d1 c* O7 t8 _
  56.         if (fd  < 0) {
    " `% B2 O+ y; ~+ ^
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " N4 B0 }7 c5 v) ]
  58.                 return -1;
    3 d% W% d3 n4 q3 \
  59.         }3 Q) g) U- S* J7 ^# r7 m' b
  60.         arg.sub_addr_count      = 2;7 J0 C6 L; p! W& {- A: A
  61.         arg.data_count          = 0x18;
    $ k, o3 _% V' K% _* X! t5 w
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + b; {9 z5 L9 L# q; U
  63.         arg.e2prom_cmd_data     = buf;
    8 I6 G7 R2 Z6 y* K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 \  V- M; R+ P- }8 r. X
  65.         if (ret != 0) {! V" s8 a% Q: g9 F2 \( m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; b5 x4 h; c& M
  67.                 return -1;$ W& S. _& E% t8 u2 J2 W
  68.         }4 `4 U5 c8 U- e1 `1 p% Y& ]
  69. & k0 d7 W9 w: A9 ]; R8 S0 L
  70.         return 0;
    # o2 m; w* V4 u6 h  c8 L- w
  71. }
    6 x8 @4 Y) H! B- N! i* t8 T4 J) @

  72. 2 U: U* [1 h0 c! i/ J
  73. int main()* L( g: W+ I9 W5 X0 D9 E7 m/ m
  74. {
    ' y6 M8 Q4 r% g( x& J' N
  75.         char c;5 Y( w1 E+ R6 i# O4 Y- s
  76.         int i, macs[6];# j$ p% d, E. \. L4 f
  77.         unsigned char mac[6];
    ( S3 x  U  w! I' \; h) L9 u
  78.         unsigned char stbid[256];6 w7 P* l9 D! y4 b

  79. 7 |: M2 q/ f0 C9 i
  80.         if (readparam(mac, stbid) < 0)
    : v$ c: f: y+ z$ \; V2 R" D7 r! h
  81.                 return 1;
      w9 D! I: t" J( e

  82. % n0 V* y; S+ b1 b+ O
  83.         printf("Current parameters: \n");: q+ z; u# ]: z6 r1 I2 E
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; r/ j2 |1 M2 F- u2 h4 m! v
  85.         printf("  STBID: %s\n", stbid);8 i$ S& m) g0 M, A
  86.         . D6 J' ~+ C. _4 O- l0 E# R" M
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  s  C5 B* Y+ i( i* z9 ^7 j  n- {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : j2 G9 t9 [; p, z0 z
  89.                 printf("Input MAC error\n");
    ( ], z, a9 H- j6 @; H
  90.                 return 1;3 V; Q( V0 C5 [0 \
  91.         }
    9 ^; v+ J* S- F8 g4 F
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    9 Y. e7 X5 `* J- f! R, {$ _
  93.         printf("\nPlease input new STBID: ");: h6 `  _! _% `2 b
  94.         scanf("%s", stbid);
    ) I/ K# G& N+ i9 w$ W* M
  95.         if (strlen(stbid) != 18) {
    ' b6 `: {$ c0 i: F$ g+ R' Q
  96.                 printf("Invalid stbid\n");
    6 p. F+ \2 h9 m! m
  97.                 return 1;
    5 x# X0 o8 N' U+ `, V2 G
  98.         }' l7 _$ m9 ?+ D  I& L+ y8 }
  99.         printf("\nNew parameters: \n");  P: C" q# M8 |/ o
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : {8 _, J+ p4 P/ `) V& K/ M& t  m
  101.         printf("  STBID: %s\n", stbid);: G2 ]6 V8 T* W( j5 W- v" _

  102. $ v" X' p. e7 i  O9 d
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & o0 j) d4 s+ Q, J
  104.         for (;;) {* f- R. w% n3 O  \; @
  105.                 c = getchar();+ b- U, x* L5 q) q) D9 Q# o. ^
  106.                 if (c == 'y' || c == 'Y')
    $ N, M" n& z3 f2 z
  107.                         break;! q/ r* [+ V! o( s% _
  108.                 if (c == 'n' || c == 'N') {
    # @, z( g3 r  l! K
  109.                         printf("\nAborted.\n");4 k1 N5 N3 H2 d% S' l  U* N$ [, Z
  110.                         return 1;3 |% z9 ^' `# N1 v4 b; A* C4 c
  111.                 }- r0 p/ \+ }0 Y
  112.         }7 |! P+ p( ?$ Y% A- q; u7 F
  113.         if (writeparam(mac, stbid) == 0) ! J: E# m' z7 |1 @/ S, E. m
  114.                 printf("Parameters changed.\n");
    - ~* }( I3 m' c: {! }! f* i

  115. 0 M: _" @9 i" l8 q5 ]7 b
  116.         return 0;1 E% m4 @6 i8 ]4 ?) t! i
  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
' J) {9 I! Q7 [4 P2 `6 a. P在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
  j1 x6 U* }8 g, r8 A
你用的编译命令行格式是什么?  c' g" J% m0 w8 c+ a
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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