查看: 16547|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + y. U5 t. d9 o# K1 }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! F' M$ V; B' v# T* l& O$ E$ m6 n
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:& U3 u2 j' v4 k' B  G5 l$ m
usage: himr <address> <value>. sample: himr 0x80040000 0x0
2 t7 c! y1 |3 W# W
- t# T, t4 E1 u' c% K2 y4 Z! M. B1 ~2 ?$ e. F
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
4 x- B' n  {, g& g5 X2 \6 C
. Z8 o2 s7 ?8 U, ]补充内容 (2012-3-8 09:42):2 F1 `! c; s( @
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, B& B  p) r! U/ W  N8 A+ ^  c这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
4 n. d8 ?5 L  v/ ]" d, c2 s, g5 V; v) |% }) v
himr <address> <value>. sample: himr 0x80040000 0x0  J& O6 u- q/ F, G
$ d& U- e. c& j: I
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。2 b, j0 ]% Y$ U& H5 G
himr 0x80040000 0x000 b5 q2 z% L& m" H2 Z
himr 0x80040001 0x110 c/ _# J) }. Y$ `6 J
himr 0x80040002 0x227 p! B8 k& E% h* j0 p
himr 0x80040003 0x33
0 e. \1 q# G. }$ _6 I" y' \3 nhimr 0x80040004 0x44
. E* e/ ^. @, X2 `) Xhimr 0x80040005 0x55' y) u, ?# w/ X5 M+ ]4 p% Q2 H
& k- q4 f' V' @. {7 V
SN也是类似。  ^) d5 v7 N3 e+ [( {$ {/ H" |0 I

" E8 y; H9 p+ T  X. K! w$ @, |现在主要是,谁告诉我们MAC和SN的地址?
  A3 f5 X9 S* ~8 L1 [: s5 ^& w
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% _0 J8 \# Q& z+ d3 O7 H! ~. V! P& x+ |一直想找到运程修改MAC和SN的办法,苦于无解啊

2 D( S* E  d. s, j源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 |  ^& F& R9 q" d5 I* @  ^' J5 }) g9 ?. X6 G% K  K
修改的代码早有了。到今天不会编译。* P- Y3 f7 |4 k; _( }9 l  r" R
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    5 r0 \' a0 h$ z* t
  2. #include <malloc.h>
    " P" q5 {: Y7 K- _2 M# {$ U
  3. #include <sys/types.h>: I/ V9 v! e0 \$ V
  4. #include <sys/stat.h>4 R! M$ ~* h0 o8 Z; p
  5. #include <sys/ioctl.h>- D% g  @, D* O- I4 u
  6. #include <stdio.h>1 O. l  J4 D; R/ b
  7. #include <string.h>
    3 S* b/ Q9 t4 J* w

  8. 4 Y4 `4 u* W" k* O8 M" f
  9. typedef struct {
    ( H3 ?6 D, F! E6 C: G
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) D, f2 O( x3 S
  11.         unsigned int        sub_addr_count;
    ( D1 U) b8 }2 ]; ?- o4 _
  12.         unsigned char*        e2prom_cmd_data;
    ' t6 w1 \: q4 g2 _& d8 a. X* X
  13.         unsigned int        data_count;
    9 _  \- F4 v3 z2 c& v* }3 a& D; F
  14. } e2prom_s_cmd;
    ) u1 Y4 |7 c4 x7 e; l

  15. 0 P9 X0 Y* z8 v/ Z% L. P( E! U
  16. #define E2PROM_CMD_READ 1
    * D- N  f1 K$ Y! A' Q% O
  17. #define E2PROM_CMD_WRITE 2
    . h% C( A( G+ c: w3 `
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"2 w+ ^' y0 a- O

  19. ( r& b! f' {" j- [9 P2 b
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 L0 G/ u6 I+ Y( I1 T. I* A, _+ s
  21. {# ?- Q6 g! S; v! j* c7 {
  22.         int fd, ret;
    ) n6 W" c4 A, Y) v# z+ ~3 d
  23.         e2prom_s_cmd arg;2 o' d0 G9 h6 y- p$ V- {6 z
  24.         unsigned char buf[0x18];
    4 J9 `6 B& v  S

  25. , [, g& B8 W# d2 I
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ i3 u' d6 d  l3 @5 @' f  j
  27.         if (fd  < 0) {! O1 y8 g. U, P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);' I- |/ ~# ^+ ^* Z6 w
  29.                 return -1;
    , w4 D6 ?3 K# V0 ]3 q+ Z# O
  30.         }4 H2 N% [/ J/ k
  31.         arg.sub_addr_count      = 2;
    ) u% P4 o* k- K$ B, y& _
  32.         arg.data_count          = 0x18;" U) N4 ?" u4 {4 f$ D
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 v; L* ?* e0 c& b
  34.         arg.e2prom_cmd_data     = buf;
    : F: g4 p9 ]8 j6 t6 x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, o+ {: Q6 V/ W
  36.         if (ret != 0) {4 Y8 k, f# q, r' l5 R+ Q5 e5 ~
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    $ n' @3 K9 Q" s4 f
  38.                 return -1;! U  S2 H! j9 F. `/ C
  39.         }2 K1 E* S  q) l' a) E5 |. x9 }9 ]
  40.         memcpy(mac, buf, 6);2 Y2 r) s5 |$ f. K9 G& b% c. s
  41.         memcpy(stbid, &buf[6], 18);- t$ `+ V* B% {
  42.         stbid[18] = '\0';! T3 w9 K+ f  n" E
  43. % |3 Q0 s- J6 Z; A/ W% ]5 ~
  44.         return 0;& b/ _0 ]* A2 D" c
  45. }! K# P. ^# I* B4 [# t
  46. & e$ R0 t& c# O1 r7 c, p6 `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): p+ k+ I* K' V8 f
  48. {# A2 D' E3 T+ g/ {/ G- ~
  49.         int fd, ret;
    6 q" E4 L0 J1 [& \& l
  50.         e2prom_s_cmd arg;
    ' ?) G1 P' T! W+ ~1 H7 M
  51.         unsigned char buf[0x18];
    & M2 G' P" K/ X3 o* ~
  52. 8 F2 r9 n+ d" }5 f
  53.         memcpy(buf, mac, 6);
    2 t3 M8 G: J% t  o2 F# ?5 ?6 m- r8 W
  54.         memcpy(&buf[6], stbid, 18);+ ?4 K2 t* G0 l1 K1 T) U  k- q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( D' c+ S# l! E( }; M4 i
  56.         if (fd  < 0) {
    ' Y* i5 Z* w+ D% U- K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 z8 \4 L- d; N9 C# E- e
  58.                 return -1;" G5 k$ s* j4 s! _2 ~
  59.         }/ x: P# U9 `* ~. T( H5 v
  60.         arg.sub_addr_count      = 2;1 d; W& |" G9 e& Z8 ~
  61.         arg.data_count          = 0x18;
    ) Y+ {% K+ H9 m/ N0 a" H! G! v* x
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 h- V  O! F7 E. _
  63.         arg.e2prom_cmd_data     = buf;
    . t& z. N+ n1 o' Q! v: I. ~3 y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" ^( r8 s  ~9 e8 u( R* N
  65.         if (ret != 0) {; n& f# e+ t. k4 ^/ M  I
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : T2 E# }# M) T  H) J2 ]
  67.                 return -1;+ q6 H: v" l# ^  J8 V3 {
  68.         }$ t" j0 l, T, E8 Q9 m/ ^+ B0 f

  69. : ^6 J2 J; X1 `- ~
  70.         return 0;
    * n  }; Z9 t) k+ v( c
  71. }1 R, ?: T/ W" a* l& R  {& d$ e

  72. 2 Q, v- J4 \, @
  73. int main()
      s5 V: A6 `9 s
  74. {
    " V. h2 l- X* h/ z7 _
  75.         char c;
    * i/ v/ U+ v. x
  76.         int i, macs[6];$ Y9 q$ C* G3 i
  77.         unsigned char mac[6];
    $ b+ L4 R* z3 D4 P0 n1 E3 P
  78.         unsigned char stbid[256];" C  C3 l) S9 ?* w- R; ~9 }
  79. 5 M2 q. C2 e' t. |' U3 D
  80.         if (readparam(mac, stbid) < 0)
    6 c$ a9 U, T0 p( P- n
  81.                 return 1;& _% p+ p8 p8 W  i
  82. 2 i9 x, t/ D6 N5 C$ f6 h! A/ u$ _
  83.         printf("Current parameters: \n");
    ; e( L0 K! k, ]  y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ t2 u* Y$ Y0 ~2 }
  85.         printf("  STBID: %s\n", stbid);
    ; e" V6 _3 x3 m1 l- D% P" {
  86.        
    : H* k; u/ w" V, h" E( ~0 G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    5 H8 O" f8 \9 O& v, G/ ?+ M
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    1 J$ N1 N1 v1 w" |; b
  89.                 printf("Input MAC error\n");& Q4 n* L2 g1 k& F! D4 q
  90.                 return 1;. i7 {+ ~2 k+ i7 T- N7 K
  91.         }
    1 [5 O0 m8 h. E. a( |: g6 J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - W$ K) C: Z9 C+ d+ A
  93.         printf("\nPlease input new STBID: ");, e2 l5 p7 `8 v; k
  94.         scanf("%s", stbid);
    * w8 C; c' l+ v' j' m$ B  V
  95.         if (strlen(stbid) != 18) {
    + ]$ l% W+ C# b2 f! m8 v
  96.                 printf("Invalid stbid\n");, r9 s, i3 w2 C% U
  97.                 return 1;) e# ?2 L& ?  b* U9 m. t% W
  98.         }
    1 ]. W9 r5 Y6 z" P5 Y4 n, ^
  99.         printf("\nNew parameters: \n");- ^% b. l$ A7 w: v+ C& ?4 i5 ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + a/ `( K- U) [3 T9 s* I- h7 z
  101.         printf("  STBID: %s\n", stbid);
    6 h/ _8 y& F7 V, D/ e  {
  102. & Y& O. J( x7 L: [
  103.         printf("\nDo you want to change paramemters? (y/N) ");) ~/ H& ^8 l0 Z' m$ P2 r/ M) ~
  104.         for (;;) {
    ; C7 i( P. v( t2 E- m
  105.                 c = getchar();% \: I. s1 W* F. i7 Z4 o# E
  106.                 if (c == 'y' || c == 'Y')) h7 F; ^2 |7 q2 e
  107.                         break;
    1 `2 s% m, b5 ^
  108.                 if (c == 'n' || c == 'N') {
    7 j: L; D4 R- P7 v4 F
  109.                         printf("\nAborted.\n");  d9 n; J, Z! t4 Z7 t* A# R
  110.                         return 1;5 e% k% X+ @" t; F# {" Y
  111.                 }- v! j! h( y/ m! @# O1 b) h% x
  112.         }( X$ o6 W: E* C; g6 V# M
  113.         if (writeparam(mac, stbid) == 0) + w& u8 U+ B& t" V' s1 z7 O
  114.                 printf("Parameters changed.\n");2 U, A/ K9 B! g( y  h- \
  115. ; x/ Q5 E( p0 ]
  116.         return 0;
      _0 f' S0 e6 S) V( V
  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
& X9 t2 P! M7 z- k1 m# y在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 N1 ~" y8 G- d: [1 Y
你用的编译命令行格式是什么?
$ N0 a7 B' C# H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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