查看: 17754|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : b7 Z5 S3 `; C9 P) }0 o: \+ e- k  p
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - ?3 s! R( e; j  c2 I; M
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ O/ q, i# F* K, cusage: himr <address> <value>. sample: himr 0x80040000 0x0
7 e: \2 ?0 M8 V0 z8 N5 `* g
0 t, G+ s. C+ Q5 m1 p( E$ m
& {5 l+ t5 Y4 ?. Q% d* a* ]不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 S0 \$ y7 v# j& k# @

1 c! H& D  T  l6 Z- H! w补充内容 (2012-3-8 09:42):2 ~  s# T9 K, V3 o( O
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, `& H& I, v# T1 [0 `
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。" q, Y# F" N4 Y. v( ?( r

$ E1 Z% ]: O  J' u7 Y3 r; bhimr <address> <value>. sample: himr 0x80040000 0x0
: l8 Y# E* }: {$ ]/ J4 @
* s* @# v0 I8 f/ B1 y例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 F: }9 {2 d6 K; Zhimr 0x80040000 0x00
) R; ^/ [2 z# R6 }himr 0x80040001 0x11
% A% Y/ h- w0 _7 v+ Dhimr 0x80040002 0x22( c  y. ~) f" a2 B4 @1 Z- Q
himr 0x80040003 0x33
! F! T3 i1 g- Lhimr 0x80040004 0x44
/ }  R7 U6 H) p) \/ y+ phimr 0x80040005 0x55
  n1 k% D9 _8 Z" \
) D4 N& Z" H, a5 G, ]" ~SN也是类似。( y! I- h$ H- Q- U8 ?9 z( l" `

# Q0 d' X2 H' S现在主要是,谁告诉我们MAC和SN的地址?. Q# `0 Z& \: f1 b- J& z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! \( Q% c4 [* S8 e4 w3 }4 z一直想找到运程修改MAC和SN的办法,苦于无解啊
3 y0 j+ V  _* t
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 9 j' n1 Q3 x* Q! G
  v7 G# t4 A. `5 r) f6 k9 E' Y5 l; _
修改的代码早有了。到今天不会编译。; Q6 ?( ^  h# s, B
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: Q$ Z' F1 w6 ]. B  ^4 ]
  2. #include <malloc.h>
    6 K2 Y" s5 k& ^* n1 X! A( x$ D' A
  3. #include <sys/types.h>
    " Y# W1 r9 N# c9 r8 ~( o; }
  4. #include <sys/stat.h>
    ; J0 l0 W; P7 r6 o2 F( E0 D8 N
  5. #include <sys/ioctl.h>5 J, Z1 c- r- b0 q% c! K- C
  6. #include <stdio.h>
    " q' ^* Y7 q+ T5 o9 ^
  7. #include <string.h>
    # v8 b: [4 y+ O: M
  8. 8 o3 n7 \5 [3 X4 z
  9. typedef struct {
    % x! A2 y; Q; K% j
  10.         unsigned int        e2prom_cmd_sub_addr;& Z7 D% Z  G3 _* ]
  11.         unsigned int        sub_addr_count;1 d$ i! T4 f' q, n% k
  12.         unsigned char*        e2prom_cmd_data;7 U! ^8 c6 G' c8 {5 }4 l
  13.         unsigned int        data_count;/ ?/ O1 T9 D: q; S( O
  14. } e2prom_s_cmd;
    9 \7 P2 ?( A! A* i

  15. $ h. }6 y, H+ g9 ^9 b; ?
  16. #define E2PROM_CMD_READ 1. L; R7 P! M0 i$ k9 e
  17. #define E2PROM_CMD_WRITE 2
    - C) n( y$ z+ [' k" \4 D& v3 |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 }4 j) V5 i+ L* L4 P6 m

  19. . ]5 M7 \4 l& {6 Y0 P- U
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    . t+ E# J: ?6 ^9 h
  21. {3 ]5 M2 i$ q" k0 `' O! E9 d
  22.         int fd, ret;
    2 u, q3 ~, p2 a: n8 A7 L% F# k  g
  23.         e2prom_s_cmd arg;+ Z# O; }; h0 r. r$ X) Q
  24.         unsigned char buf[0x18];
    ; H& z. Z4 i# _1 U* z2 H; D
  25. : w5 l- a/ Z: h- c
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ n* A! E: p' ?! i' S' y/ s+ D
  27.         if (fd  < 0) {8 Q9 Y& W# R/ [/ y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - n. f6 R" N& ^: ^% x  d3 t: @
  29.                 return -1;# X7 D/ Z* ^0 {' _4 k: J. L: {
  30.         }  T) w% U1 `- N, e
  31.         arg.sub_addr_count      = 2;
    ) T& y6 |# @. X
  32.         arg.data_count          = 0x18;
    . l5 @5 X! u7 L# G
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 \; ?) u& Z6 p* o+ b* H
  34.         arg.e2prom_cmd_data     = buf;& o1 y& _* n3 N8 z: _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * B$ C4 c( c8 ?  s' C" t  s6 \
  36.         if (ret != 0) {' P& L4 N) U! W2 S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);* H  ^3 `" Y! T1 d7 m. N
  38.                 return -1;
    7 N  y$ Y) t9 j$ H- j+ ^
  39.         }
    1 h/ V. a; f) U7 @$ d! ?8 }" u
  40.         memcpy(mac, buf, 6);
    + ^: k# n1 p* j" ?
  41.         memcpy(stbid, &buf[6], 18);) ]# k/ D$ g- a7 k* n+ Z6 a, X+ a
  42.         stbid[18] = '\0';
    ( Q3 m4 ?" t7 T+ l6 z" ~1 p* Z+ A
  43. % R5 s" ~: N- I% ~( r& L  l3 a
  44.         return 0;
    ; i! O( k( G# ]6 T6 K
  45. }
    $ u- e( y# A) b. [( O

  46. 8 l" t+ i' _+ D! F
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 _: D0 f  q5 \7 w' ^/ y* s4 r1 X
  48. {
    0 {& e5 O  k9 I
  49.         int fd, ret;
    0 F4 }. N; m+ k
  50.         e2prom_s_cmd arg;3 F% z# K7 B) W; `. n
  51.         unsigned char buf[0x18];3 J; U$ y. X. C* p$ l" @
  52. / I  Q% J1 f# l
  53.         memcpy(buf, mac, 6);
    ) @' q( S- P9 g% n1 X
  54.         memcpy(&buf[6], stbid, 18);
    1 e- c0 c6 c$ |# T  }. v* k) D
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( i# K" i/ B. ~( z6 T* |% M
  56.         if (fd  < 0) {1 i) Q3 B( l" T6 Q- Q) P* o" R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / W# p4 L2 q4 B
  58.                 return -1;9 d7 E8 s. z' s) J  ~* M
  59.         }
    7 G8 h; p# L( g% T' _; S$ q1 L
  60.         arg.sub_addr_count      = 2;4 a3 S# E% t4 j; I0 k/ e$ V* C8 ^
  61.         arg.data_count          = 0x18;
    $ y% G% o7 Y# y" `! u, j
  62.         arg.e2prom_cmd_sub_addr = 0x290;2 W5 s4 B% ?/ d9 @6 s# c
  63.         arg.e2prom_cmd_data     = buf;8 F8 E. n7 e7 R% G% `: {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: c1 `% {8 ]2 S& i2 h
  65.         if (ret != 0) {2 ~1 q& `* y2 X) o2 I) T9 [( R/ l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. q) o( q/ D, c1 A
  67.                 return -1;
    ! x' c6 v$ i4 e7 }+ I6 c, ^
  68.         }) q1 d8 ~  ?. j  ^  U& T% y

  69. ) `5 s+ y9 p( y0 @2 j0 u
  70.         return 0;6 ?: u# i& m! v  v
  71. }% N3 F5 e2 C  W( u" o$ ~6 x" m

  72. : `0 t5 A% V  X% S" t
  73. int main()3 K$ ]- ?6 B( S0 T: x
  74. {% K4 ~$ H- E, F, P9 f! C5 U
  75.         char c;
    8 o9 v: W5 R0 o
  76.         int i, macs[6];
    5 \0 t0 @- O. n+ i0 ]
  77.         unsigned char mac[6];
    ) Y& v- b2 f/ X& o5 B
  78.         unsigned char stbid[256];
    # ^* J, E. W, b( b# O+ u; k, c  M1 X

  79. # l/ ~: I4 @. y. L5 t/ f) c- |
  80.         if (readparam(mac, stbid) < 0)6 ?) V' a7 K; l1 d* v
  81.                 return 1;: G" S2 h, X0 M+ r5 p" I* X
  82. ! D1 G- ?. P- X8 I0 {
  83.         printf("Current parameters: \n");* M' L7 z" |2 p% U3 A+ D- @; _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 j( M4 O% r6 Z% T" g9 ~5 p4 T
  85.         printf("  STBID: %s\n", stbid);2 C. r8 B6 \3 }, b" R2 U+ T( g" o" G
  86.         2 M) u% d& x* d. b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , u* n5 H- H: I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 J* C$ x/ X1 {- X2 i; ~1 H5 B& ?
  89.                 printf("Input MAC error\n");
    % [* `* I  v7 j) `7 H& r. O* X" d$ F
  90.                 return 1;: c0 |0 ?% F, z5 I  ^; w
  91.         }4 ^* P$ @( f" ]8 s/ D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , Y6 A, `/ W7 Z9 S% _
  93.         printf("\nPlease input new STBID: ");1 M+ _( i% s) O- e8 q* M
  94.         scanf("%s", stbid);
    ; r& O: f7 `7 F9 X) ?: ]. [
  95.         if (strlen(stbid) != 18) {
    1 y) Q4 L" N3 q" {+ k9 B
  96.                 printf("Invalid stbid\n");" t; I- `* r7 M* P) f; @/ t/ h
  97.                 return 1;
    3 ~5 W2 b* ^5 e
  98.         }4 i' s$ L9 _% k) X+ V
  99.         printf("\nNew parameters: \n");, ~0 y7 |  O. \5 k5 G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . m2 Y; }+ u: c. n
  101.         printf("  STBID: %s\n", stbid);
    0 Z/ w0 G" y& g/ B* e9 M
  102. ' l, H' D! W5 }0 L6 H' I
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & y3 p, s# t& [6 O
  104.         for (;;) {
    4 c0 |3 O, b) V+ u
  105.                 c = getchar();7 q& @- w" h* u1 `' W
  106.                 if (c == 'y' || c == 'Y')/ n9 o' P3 a3 W4 _& b* F2 t
  107.                         break;
    ! J8 S1 i- q) i' s  x! g( {, W
  108.                 if (c == 'n' || c == 'N') {
    ; W9 C1 Y) w  x9 z" ?
  109.                         printf("\nAborted.\n");( A/ g+ |$ h, D8 F) R5 _
  110.                         return 1;2 L. i( H7 c* q8 W
  111.                 }$ h: Z! k5 N1 B+ E, e. O
  112.         }: Y% S. v* O+ L) }. A$ Y
  113.         if (writeparam(mac, stbid) == 0) " E, Q6 T) D3 \- i$ w
  114.                 printf("Parameters changed.\n");, y8 n0 }, ^* G  a; s; m  c8 o! E/ d" C

  115. ) w8 s# b# O# x" S
  116.         return 0;
    # @6 F+ L8 w5 V" L/ O  {0 K( x
  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 & `' ^2 i( y4 r/ b
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" I: {' n5 r4 G/ ~9 ~) V' L' j8 ?你用的编译命令行格式是什么?6 S0 o) W; C9 L% ~5 K2 q+ J# b% }
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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