查看: 16939|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr+ S: H) X. }$ J$ {! p
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    5 X3 p% W) w6 ^, |8 K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:7 S: Q5 w6 U$ B$ _& }$ Z. o
usage: himr <address> <value>. sample: himr 0x80040000 0x0
5 V% E* T, R6 q. P+ K, _" M% W( p7 Z" y7 B2 M: K; z
/ X5 w: n8 U  k0 Z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% _9 j0 {% v; R2 M

' A2 ~7 F! ~3 Q$ z- i2 X0 C补充内容 (2012-3-8 09:42):  f0 F5 c4 G. G. c- L. `" W/ J/ K" N
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数2 w; z! H" I( t# N% O  q
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。) |) w% B7 `- d) ]- y% \* L, T! q
- P* i6 x5 }1 X2 D: M1 C
himr <address> <value>. sample: himr 0x80040000 0x07 ?1 W; F/ w* g/ B9 H; P; S& J9 U$ G

6 H# r% F9 Y+ ~. r: K1 i2 n例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。3 [" [. C( ]& C3 [+ j9 F, s
himr 0x80040000 0x00: O" a2 Z+ C2 \! h- O
himr 0x80040001 0x111 t. g  S3 x- v/ G3 l4 d' c
himr 0x80040002 0x22* Z( g' L9 H0 {: Q& T% ?
himr 0x80040003 0x33
7 w6 o- @- P8 `' t, T$ Rhimr 0x80040004 0x44
/ A8 }" f* a1 R7 g6 L# Nhimr 0x80040005 0x551 `4 _+ {3 G1 }4 @$ i

! ~% }9 [- T/ Q9 t6 NSN也是类似。5 l# J) X) T" d5 m
5 V0 k, D4 E9 n: C
现在主要是,谁告诉我们MAC和SN的地址?. l' F$ d! g3 V- s7 t8 e& Q
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
6 w  x& Z, U8 T一直想找到运程修改MAC和SN的办法,苦于无解啊
1 R; P" _2 N0 E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 4 @9 g- l: ]( f" u7 t& Z% a

  L; e: q' l0 Z( S- U9 {& k修改的代码早有了。到今天不会编译。2 t4 B( j) Z: ]+ j6 g' h$ g
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* S3 f$ W! L" i) Q! y
  2. #include <malloc.h>) P8 q( l; w5 b6 ~
  3. #include <sys/types.h>
    3 J. O9 A. U2 p  o8 n
  4. #include <sys/stat.h>
    7 c& C7 i3 H, v' i
  5. #include <sys/ioctl.h>$ O5 A5 r2 n- m$ B# R
  6. #include <stdio.h>( z, `5 y3 ~% t) O% U* J
  7. #include <string.h>
    5 S) v0 ]+ ]; A2 w  Y

  8. ' v8 Q5 u' F7 N
  9. typedef struct {+ c/ \  F+ L3 H: \% |9 n+ E/ I
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 z( l& J2 i) M( {
  11.         unsigned int        sub_addr_count;
    2 U$ m' P' D& X7 o
  12.         unsigned char*        e2prom_cmd_data;
    5 ]2 M/ [( J! U6 S* ~* V
  13.         unsigned int        data_count;
    + A# ]& I* i- q# ^2 B
  14. } e2prom_s_cmd;
    8 B" }& Q: v0 k3 v1 S5 o/ I
  15. . y# {4 j9 l/ e/ _4 ^: U! f
  16. #define E2PROM_CMD_READ 10 C; U% L4 W) {9 M6 h
  17. #define E2PROM_CMD_WRITE 2
    / `; p" f% v; j. t% Y' G$ o/ H& e
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 p, v4 F8 d! F. q. ~
  19. * R9 a' y, N0 K. o; _, O
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    * L4 E; h4 d$ Z6 q- A2 Y
  21. {
    9 @$ G+ n/ ?/ i. o  q1 T5 J( q$ H. A- ]
  22.         int fd, ret;
    2 V3 a5 ^! s" s8 H  s. U& Z( W
  23.         e2prom_s_cmd arg;/ l$ v* o& \* ~# \. f5 h
  24.         unsigned char buf[0x18];
    ; W0 @5 U( D! t2 V% `

  25. 0 n% l. t8 O0 E
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    # U; d  e0 F$ C- x. T  M- |/ g
  27.         if (fd  < 0) {
    ! _7 ~, |& y' o4 l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ g2 y  v8 U& N. f# E) j; D
  29.                 return -1;; m9 m8 D; \" i, |% I
  30.         }1 {9 `# \4 _: J' h( i
  31.         arg.sub_addr_count      = 2;
    * H' \: R# {0 h3 l
  32.         arg.data_count          = 0x18;
    ( B- }3 H+ [0 q1 b7 |1 I
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % ^9 I8 {) e5 q8 Q6 J2 @
  34.         arg.e2prom_cmd_data     = buf;2 R% {: }" z9 a: M: d
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # F* L. z: W2 ]) ~
  36.         if (ret != 0) {
    6 r" b0 t9 B4 Z- h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 y/ d- I8 J0 t3 }# ^8 Q2 {
  38.                 return -1;' z% q! R3 q0 ]3 w0 D
  39.         }
    : J' V( I0 t7 j
  40.         memcpy(mac, buf, 6);
    # d2 ^$ Y& l$ z; g
  41.         memcpy(stbid, &buf[6], 18);
    2 [7 h' O8 B2 N
  42.         stbid[18] = '\0';& C$ m7 D) @, q8 C

  43.   ^! k7 b* O7 B) L' I' A5 ]1 ^7 H
  44.         return 0;! h# S3 s$ V% J/ F7 ?6 v+ u
  45. }9 I6 D0 g/ v7 O4 r! k- y% J
  46. & O1 R) i* {9 d5 {6 Q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 r, F" e6 D6 o" Y
  48. {
    $ K6 @7 G8 H' Q/ c, t( h
  49.         int fd, ret;* ^$ M) v/ p- r
  50.         e2prom_s_cmd arg;9 R8 i+ T% v4 ?; L+ S; Q
  51.         unsigned char buf[0x18];
    % s$ Q( ^1 r3 L; `
  52. " K$ d- ?% P/ y# M% K" B6 `* h
  53.         memcpy(buf, mac, 6);, h% X3 U) z% q/ W2 X7 `9 S. Y
  54.         memcpy(&buf[6], stbid, 18);
    : ^# K& p7 ?- m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) l* F* Q& S- n" D
  56.         if (fd  < 0) {
    % U/ X# \# _" M, [
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 s' A& d( a! E) R. ?) T
  58.                 return -1;
    & N9 k; F5 o4 k! c; l) g8 [6 i  d
  59.         }7 a+ B9 n1 Z7 e3 f
  60.         arg.sub_addr_count      = 2;$ C! @- z8 f* `0 `& V1 N
  61.         arg.data_count          = 0x18;
    1 O; g6 Q7 X  U
  62.         arg.e2prom_cmd_sub_addr = 0x290;. ^+ S6 S, \/ g* u
  63.         arg.e2prom_cmd_data     = buf;0 B! M9 _3 v' v" l$ Q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 s9 a+ m- I* P. D9 D
  65.         if (ret != 0) {
    - L# o  u1 ^: N$ ]
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ Y: U2 P. O, M3 G9 H$ ]
  67.                 return -1;( Q5 }/ b+ h( @. ?/ W' Y* n3 G, M% e1 r
  68.         }
    / ~' J6 j; @! D! ]4 r. l

  69. * j5 u; l3 h8 _1 i/ N: |/ U( Z
  70.         return 0;7 W8 r- ~0 W3 X- Q! t4 W) X
  71. }( l- x1 l% |$ l7 v1 v

  72.   t, l+ ?0 v& v  {
  73. int main()
    * ~/ V1 W+ @3 r; B3 K
  74. {' j0 q! H8 N. ?$ I; H
  75.         char c;) N# P; l/ g2 Y$ F1 n' L
  76.         int i, macs[6];% l& V3 d7 z, y* \6 p) M0 f! A
  77.         unsigned char mac[6];$ T3 K. T( F: q, U
  78.         unsigned char stbid[256];* j/ [6 R0 I6 ^* c7 i$ N3 a
  79. ( L/ \# \3 P  a& a
  80.         if (readparam(mac, stbid) < 0)
    2 Y0 `- p0 l7 z9 h- Q3 S1 |
  81.                 return 1;1 [5 T& |" {$ F4 ?
  82. 4 m. P5 ?! g- _% }& C
  83.         printf("Current parameters: \n");7 K5 Z# i3 O: V% b5 \  P* _: H
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ M; ]- p! Y9 l
  85.         printf("  STBID: %s\n", stbid);! S. H* A4 p: r( r5 t
  86.         : D/ K- N4 `) ^! I
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 y, R5 b4 s3 B6 Z' Z) g- U& s% {9 `* L
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; d6 I. u. M) w: T$ X2 _* f; U
  89.                 printf("Input MAC error\n");
    ( D6 ]$ \6 D) V: w
  90.                 return 1;
    5 l9 e: i  B( h, ?+ T9 P% Q
  91.         }
      V, j% `, J3 G6 i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];+ X2 m7 O% F8 x% }, Z$ S- f
  93.         printf("\nPlease input new STBID: ");
      X+ v9 k$ C/ z( ~/ G7 Z: e7 S
  94.         scanf("%s", stbid);
    3 m1 Q- R$ {: T3 n
  95.         if (strlen(stbid) != 18) {
    " g2 [, i1 L" W+ s6 r. g, D
  96.                 printf("Invalid stbid\n");
    ! K, ^1 R5 i" }# e& R
  97.                 return 1;
    & o! h6 r6 {2 \$ I$ @1 R) j: f% k
  98.         }
    ; m4 }: _  E; s3 `: q* \" a
  99.         printf("\nNew parameters: \n");
    ) J; l, u1 x. h
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 S( T4 _% p8 t" w5 a
  101.         printf("  STBID: %s\n", stbid);
    ! D" M0 a2 m8 N" K0 Z- u

  102. 1 S1 V( I- X% T$ w& V* e
  103.         printf("\nDo you want to change paramemters? (y/N) ");$ H! L9 W! w% o) t! h5 @4 y" B5 {
  104.         for (;;) {
    + i' T2 i8 s" ?) k: E  d3 K" {, U- M. o
  105.                 c = getchar();
    , [# _0 T7 d8 \- B; [
  106.                 if (c == 'y' || c == 'Y')
    . H4 }8 z* x6 X- _; Z; H/ j
  107.                         break;
    & i) u5 |! N5 b" @
  108.                 if (c == 'n' || c == 'N') {
    8 W( {. e2 r7 K3 N1 {5 e. x7 K/ U) M9 P
  109.                         printf("\nAborted.\n");% q4 f0 k& o# k. O9 M0 c
  110.                         return 1;
    4 t( `( |4 x8 r1 r7 r
  111.                 }' g5 Z/ L9 O0 z
  112.         }
    2 Q  Y8 G# [6 W, |
  113.         if (writeparam(mac, stbid) == 0)
    : N7 u4 d7 B4 M! m
  114.                 printf("Parameters changed.\n");3 Z( k5 `1 j) }- G
  115. 6 b" [- X0 Y! U  z+ U
  116.         return 0;
    ( t" @! s+ a: D3 Z; B: t1 n; r: a" Z0 J
  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
) I, Y: c0 |5 E7 l5 u, _在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 ^& G* g% Y' g" j4 X/ @& z你用的编译命令行格式是什么?* W% Z) E" `4 V3 H. P8 _# x9 V
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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