找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15575|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# A9 `4 s/ z% j+ V' A
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 l% S: u! a. M* ^* `* l2 L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
3 f8 w4 K- V5 d; Z' Fusage: himr <address> <value>. sample: himr 0x80040000 0x01 K7 d7 z, q- F: V
0 ]( _+ |; {+ [' C2 a2 c

( b6 p# ?* ^9 H( L/ p不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: v( U3 t/ Y9 e' l( m0 ^+ m& N% m  k& ~" y* |) Z' h1 O8 A4 [
补充内容 (2012-3-8 09:42):6 u/ l2 B/ J, D9 y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! \: ~' S" e! [, a' a这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。. m) T4 ?+ _3 n* {% n

" k- s- C& A! J2 hhimr <address> <value>. sample: himr 0x80040000 0x02 b$ ]7 v) I; J

2 \$ U7 f/ z" R2 g- r4 Y例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。2 ^: J5 b) C4 ~5 e: K) y
himr 0x80040000 0x00
' |4 L+ F0 O: ~' J3 J4 P/ jhimr 0x80040001 0x11
* O/ C. I) K' X2 Ehimr 0x80040002 0x22% Q. }' S. c$ Y# A3 x7 I/ f
himr 0x80040003 0x33; N  T! T( ~  ^" @5 ~' n
himr 0x80040004 0x44& s( P8 Q$ T# L9 }
himr 0x80040005 0x55& N; s! u* m" [! m9 ]/ ^' h: u
, ]; O  R% F1 m+ I  a, m
SN也是类似。9 f* {$ v1 A' w4 n* O, m

; [6 h# \2 y: K现在主要是,谁告诉我们MAC和SN的地址?
  `/ N$ s$ d' ]- W, s
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : O7 i  q" [3 m) o- A2 D9 S, z
一直想找到运程修改MAC和SN的办法,苦于无解啊
& w0 b6 q4 B, Z2 C4 j9 i
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! R' F2 {* ^0 \9 k% C+ I5 B* G) i
) d0 A5 h0 F- {- T# }
修改的代码早有了。到今天不会编译。
! X8 ^. \6 G3 N# W需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>9 \( r2 s4 W1 B/ N1 ^$ ^
  2. #include <malloc.h>
    # a  j3 _; m4 M" v2 A8 ^0 C& |, Z
  3. #include <sys/types.h>2 J- X+ u6 }1 }: _2 i; a. W1 c
  4. #include <sys/stat.h>2 C4 Z; @: h0 {6 I* H+ s
  5. #include <sys/ioctl.h>
    6 m4 w3 [; d! @8 X
  6. #include <stdio.h>
    + ^/ _6 H) s% P1 i
  7. #include <string.h>/ ]3 t4 G# e- o
  8. + j; }5 Z- ~: Z& q9 O* i
  9. typedef struct {
    5 I3 r5 _8 {7 ]+ R
  10.         unsigned int        e2prom_cmd_sub_addr;# S4 c8 V/ g# P" I0 ~& G
  11.         unsigned int        sub_addr_count;
    & j2 Q# a! W4 q
  12.         unsigned char*        e2prom_cmd_data;
    # S3 M; B# v" v- M
  13.         unsigned int        data_count;
    2 H& H8 z6 Y* w! z  m/ C) S) _  q
  14. } e2prom_s_cmd;5 Q- L6 L9 H/ c
  15. 4 b  ^! ?+ I$ \3 K5 c( q
  16. #define E2PROM_CMD_READ 16 p: s; r; `/ t% p
  17. #define E2PROM_CMD_WRITE 24 W8 O5 Y4 F9 n4 X, ^* z; H2 N
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' p3 E8 U* b  h* ?& ?; R, Y
  19. 3 q& ], B# o/ Q, ~9 D8 e- N* D5 [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 @. j% e# O. M7 Z# \
  21. {% n9 q; _' c+ ]. ?2 L
  22.         int fd, ret;" d9 l, ]. ~  `( D) K! b
  23.         e2prom_s_cmd arg;
    8 K2 u0 V. @7 N7 U0 j2 N" e, C
  24.         unsigned char buf[0x18];& @+ |9 I9 L3 W4 {0 z  i

  25. : ]* F4 j+ q2 O' a3 P
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % k" f  w" G/ o4 y
  27.         if (fd  < 0) {
    , E& _3 s9 N2 u8 N. b9 l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 n2 Y2 F! ~* ~4 \/ c- X! f
  29.                 return -1;
    0 U5 e& K  \( @$ J" _4 F: Z
  30.         }
    ; D: s% P8 h/ z
  31.         arg.sub_addr_count      = 2;1 J; R' z9 w9 n- n7 f
  32.         arg.data_count          = 0x18;
    2 d* \2 b. b: j
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 _, c6 R& S- M6 x# d2 `, |
  34.         arg.e2prom_cmd_data     = buf;
    % i9 D# l5 \3 m* R7 o, w3 q; i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ k: i1 [7 D  r" i) j3 _4 [  E& L+ d
  36.         if (ret != 0) {
    $ t5 T: c4 Q2 @  m
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; s. ?6 {$ n$ H# t7 c! f
  38.                 return -1;9 A8 w# b) {4 ]% u  f
  39.         }
    + w/ J+ _, I" O# e
  40.         memcpy(mac, buf, 6);
    , i! \. y5 P& S+ `
  41.         memcpy(stbid, &buf[6], 18);% R2 ^0 t7 }2 u- K0 V
  42.         stbid[18] = '\0';
    / f4 I9 Z1 h* Q  g+ f
  43. 3 R* O4 P8 u3 O+ n  b; R
  44.         return 0;
    ' S+ J2 k% v% \: R
  45. }
      q% {7 z7 V1 ?* u" W
  46. - q2 E# [( Y* M8 l! w
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - W- @* k6 z+ w. p7 B3 H/ S
  48. {1 z, u. o* s% i2 o+ |& l- c
  49.         int fd, ret;
    * u4 q) H, x# x1 a; F5 {+ M$ |
  50.         e2prom_s_cmd arg;
    3 j; d! {) r6 Z, y/ w/ X+ `
  51.         unsigned char buf[0x18];
    9 V1 s3 H7 M7 [6 v4 S# l7 L

  52. ' s; L! R( ]! Q) V% Z
  53.         memcpy(buf, mac, 6);" E( a" V: j& p2 n, u$ u; P
  54.         memcpy(&buf[6], stbid, 18);
    8 f: l. I. u3 V( t; Z; N; R/ \
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " F$ P/ b( n% B( z& h; K+ K
  56.         if (fd  < 0) {$ E: @5 Z" ?! G* ?0 _7 N: ]
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - d* v2 d4 b0 b+ V/ {
  58.                 return -1;
    , |3 }5 I. w# j5 L$ t
  59.         }
    + Z& P/ c" t2 H8 g$ z2 i, o1 L0 u
  60.         arg.sub_addr_count      = 2;
    % [( B$ p7 ^# P# [9 Y) ?
  61.         arg.data_count          = 0x18;
    6 o) h& x4 b$ W' D
  62.         arg.e2prom_cmd_sub_addr = 0x290;; [8 p$ Y: P5 @+ |" U# z
  63.         arg.e2prom_cmd_data     = buf;8 b' ^' P8 Q$ E. o# u5 [; E
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - h0 E/ d5 t! N8 f& o+ i
  65.         if (ret != 0) {: Q5 K# v$ |& M7 k6 g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& }% A# G; Z. ]! p$ B4 H3 R" x
  67.                 return -1;
    9 F, H- G1 v: R2 s
  68.         }
    3 [7 |6 f8 Z2 M' |  `5 @

  69. 8 ~! m. ]' a4 G
  70.         return 0;
    7 N1 y2 v, E% ^" q) e/ }- y# |5 ~( |
  71. }
      I; O) K. z5 m5 l- G5 p

  72. & |8 R( M* P# C4 [3 j
  73. int main()
    1 d8 q) Z+ d; ]5 [
  74. {9 S1 V) h" g. e" Y
  75.         char c;: ^( v8 Q) j# J) p" w, k4 W8 F
  76.         int i, macs[6];, [2 t& x& W9 e
  77.         unsigned char mac[6];7 I$ T( I3 n, D. X6 m' b2 t  _
  78.         unsigned char stbid[256];
    " f" g4 a* k$ @6 x6 @- X5 ~( f
  79. ( X3 X8 I; O2 h# [1 B
  80.         if (readparam(mac, stbid) < 0)) w7 w8 c( B% x9 a( I2 K
  81.                 return 1;
    . d) C1 c/ X& y1 l, R

  82. $ E/ J! n+ E3 d# Z$ E# |) y% g7 u
  83.         printf("Current parameters: \n");0 Z  u9 t! P8 P0 ~
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% f% D! _- d% y: [+ S! r
  85.         printf("  STBID: %s\n", stbid);$ E( J0 Q6 {" V
  86.         3 L5 u5 |) V2 a7 ]2 ]( F1 P/ I
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    0 F! e% r. g% |8 h$ H" `1 w9 z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 u0 p5 G* D- e9 b/ |# o
  89.                 printf("Input MAC error\n");  G6 i& `$ u2 v$ _( Z
  90.                 return 1;0 _: E* A3 |8 g) f6 A
  91.         }
    * S5 u$ D6 r( |* D" u
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 d. h3 E3 e, i/ Q: Q; M6 r
  93.         printf("\nPlease input new STBID: ");
    ( u4 }0 o) [1 `6 D" }- J
  94.         scanf("%s", stbid);/ Y+ U5 Q0 o' X/ r% h! [
  95.         if (strlen(stbid) != 18) {) }6 m+ }- j4 R  a  ^5 N0 q
  96.                 printf("Invalid stbid\n");9 a- Q2 ~  `: _# f8 D4 e
  97.                 return 1;& _4 O2 ?) b$ _: _2 F4 n7 X% u
  98.         }8 C$ v+ F- n1 Y
  99.         printf("\nNew parameters: \n");& j9 I4 h- P% p$ b. V7 l
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 W- \2 @* P! e: @. U3 I/ Q0 K
  101.         printf("  STBID: %s\n", stbid);. H/ a6 Z" `5 X1 g- N
  102. 9 h2 H4 g/ J! T! G
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    + A/ U* G, w1 Y7 L
  104.         for (;;) {
    2 y/ b5 @0 @0 d1 b+ X0 T' a! J
  105.                 c = getchar();
    9 S2 L3 s: Q) C3 T' R* M7 K1 q
  106.                 if (c == 'y' || c == 'Y')( \( {; ]* @+ h$ y; m
  107.                         break;
    & l# x; D6 H3 a% V
  108.                 if (c == 'n' || c == 'N') {
    4 G  I$ L+ q( F! Z0 r! k/ f0 a9 z9 L
  109.                         printf("\nAborted.\n");
    . z% p& j# \5 u8 e/ u  e+ h( D% S& [
  110.                         return 1;# j+ X( N* U  R$ E2 _- X
  111.                 }
    + |- o$ g9 y2 Y- x& k( h8 {" U2 a3 e
  112.         }
    4 D0 L) F( n; E7 K  V9 I; E
  113.         if (writeparam(mac, stbid) == 0) 4 z& Z* ~# T/ u& o
  114.                 printf("Parameters changed.\n");/ n4 e/ T/ |7 m6 }! e

  115. + |; l8 a" \. e" D2 j
  116.         return 0;1 i/ ]' Y1 d7 V" j: Q0 _% |$ O
  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
0 z9 F' y  C. P- z2 B在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

$ L* G, J9 |+ K你用的编译命令行格式是什么?/ P$ I* v% y7 |. E$ ~- B
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-15 09:00 , Processed in 0.023723 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表