找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15132|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + U  b0 {: w8 @4 O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % @5 h3 c, ~! [* p3 N* Z4 F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:8 M0 b$ u5 G5 f2 G
usage: himr <address> <value>. sample: himr 0x80040000 0x0
- I, T$ R" z  k# f  h9 U2 b
9 `$ ~* K9 u0 O1 [# t3 I$ f) _8 P8 z7 R" {
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 k. g( Y% m& M
- V. U" ]) b, [. o4 E
补充内容 (2012-3-8 09:42):9 P! s+ v  @, U# q
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: d4 H& D- h6 H5 a& l这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
7 g9 V+ B2 h; v9 Q/ ?' f- m; m( P1 Y
himr <address> <value>. sample: himr 0x80040000 0x0. A5 {. g3 f% C" A% I. n* C
* J0 S% c: J3 b" W
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。. }4 @2 w5 X7 e
himr 0x80040000 0x00
+ z' t) p; ]0 C, mhimr 0x80040001 0x11
6 s. A, @  r/ X$ Q7 I  @himr 0x80040002 0x22
6 F2 [7 q; D" Q+ k& g# Z. c, ~$ Rhimr 0x80040003 0x33
' S/ P/ r$ O" O7 `+ h4 chimr 0x80040004 0x44
7 ^( V5 f0 K/ ]( U0 ihimr 0x80040005 0x55
% Z: x; G0 r: I8 u6 q% v
. f8 @' e% p8 M# j+ N3 d2 hSN也是类似。
6 z* G  s2 t, t9 N- e, P1 t9 O3 d% ]0 ~6 X
) L5 L4 j( D! Z* F现在主要是,谁告诉我们MAC和SN的地址?
2 U4 v& i, S1 y. ?3 b- a% {
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : \! J( p8 V& |# _/ y5 [' y* D) h
一直想找到运程修改MAC和SN的办法,苦于无解啊
8 q0 J3 S8 ^- x( P' B$ |
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: `  }5 j4 [. R6 R! s* \: A& B3 u# F# @4 ]" k4 C2 y! j, [( h
修改的代码早有了。到今天不会编译。9 [, a9 u4 U# c
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* b% F$ l8 f5 t4 P, @6 [2 X" a
  2. #include <malloc.h>
    2 F( d, S+ Q  ?
  3. #include <sys/types.h># u3 e" e. {8 a* l/ Y1 w9 ^+ m. l
  4. #include <sys/stat.h>
    , ]7 F& s& Y  x1 z- Y
  5. #include <sys/ioctl.h>
    . o" L3 X, m4 K$ Q( P
  6. #include <stdio.h>/ B, R( R% D9 M
  7. #include <string.h>
    6 B' d) h, f1 [) P2 `2 V0 h5 A

  8. 4 B& I% d# ]" K/ c( v+ x
  9. typedef struct {3 w! W3 A, p1 f  x) @! d# {$ A# P
  10.         unsigned int        e2prom_cmd_sub_addr;
      S$ P$ t6 ]# u
  11.         unsigned int        sub_addr_count;+ U3 A# |. y  h6 w, X6 l
  12.         unsigned char*        e2prom_cmd_data;
    3 S! N( V% L; w* K" h  [
  13.         unsigned int        data_count;
    # }% K( A8 D0 s- p
  14. } e2prom_s_cmd;
      t" `* @0 j# Z+ H6 a( t
  15. 0 }$ @7 |* Y8 p( G7 e
  16. #define E2PROM_CMD_READ 19 L! ?% u0 x. K$ `' R' ], X4 j
  17. #define E2PROM_CMD_WRITE 2
    " p2 c6 D$ t0 Y7 Q3 ]( N
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    7 V. w1 I' C2 N; y2 Z5 [

  19. 2 z/ d$ c- G( c3 k& H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& Z- p: B& M/ c8 y) h
  21. {( r* {4 l1 b- Y0 ]
  22.         int fd, ret;
    7 c6 Q6 J1 y0 ]  {( B
  23.         e2prom_s_cmd arg;
    # T! L6 ~" k' z% s9 _3 c( G
  24.         unsigned char buf[0x18];
    # M% G- u9 M( x4 {% ?/ @0 s

  25.   @* ^. T7 S6 n- m6 _; b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 I* b: \" m& G: l" e+ W2 H
  27.         if (fd  < 0) {
    / s, T. N2 U8 W% o$ ~) x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 m. |; y/ d2 s( i0 V, v
  29.                 return -1;" ~8 r- \7 n) W" o
  30.         }( p# A6 N, j# p/ {3 v: j6 I
  31.         arg.sub_addr_count      = 2;
    ( [) Z) l0 i& |
  32.         arg.data_count          = 0x18;8 {* a3 k9 E( E% m
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( z4 h$ n8 D0 b
  34.         arg.e2prom_cmd_data     = buf;
    & y3 v% h+ T: D  t( g- ?6 s5 `
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);  @' D: j9 K8 ~/ b
  36.         if (ret != 0) {
    . N3 {  q6 F5 T3 ]3 ?3 p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);1 ^8 d* N- y% h4 r
  38.                 return -1;
    ( k& d5 z) |2 w
  39.         }- H6 S, B) z) t' r9 j9 A1 @
  40.         memcpy(mac, buf, 6);  D6 C; s1 c( c$ T) J
  41.         memcpy(stbid, &buf[6], 18);' Q$ U+ ?7 Z. O  v
  42.         stbid[18] = '\0';8 b: ]! b5 B9 e8 h" f. @
  43.   i2 x+ N/ u) T* u
  44.         return 0;
    ) J4 @; v+ J# C  w/ N
  45. }
    + g! {" i4 c4 C! Q; n! x0 V

  46. + Q" a& w) k- A; T+ W6 ^
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)2 S  K' m0 K- F' g, D
  48. {
    5 m5 b3 o7 C1 y: {! b. I  D% W
  49.         int fd, ret;5 Q% n- @/ R0 m* v' n
  50.         e2prom_s_cmd arg;
    7 ]' p$ [' d, g
  51.         unsigned char buf[0x18];5 ]7 D8 b- J& r) z2 Z( L# l
  52. + L- f. v5 r* M3 R" R0 n! y7 G1 j6 ~
  53.         memcpy(buf, mac, 6);5 y3 L: M+ \# ?, ]$ o' @# {
  54.         memcpy(&buf[6], stbid, 18);
    # J; O! ?7 F, l$ e8 b) ?7 p
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ |8 s& l: ]# W5 S' K
  56.         if (fd  < 0) {
    : I! @- e" r0 ~- ]" V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 k5 v$ W2 K1 B" C9 _8 E
  58.                 return -1;+ }) w5 Y3 Z1 x1 L
  59.         }( O' B6 `5 K/ ~
  60.         arg.sub_addr_count      = 2;$ ~6 U& m8 @+ U' e$ a
  61.         arg.data_count          = 0x18;
    / R+ `. }- e4 Y; W" i- a
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    $ u4 i2 N5 Y5 D* j5 n
  63.         arg.e2prom_cmd_data     = buf;( R9 p" e1 Y+ b% F1 h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! _9 O- F% M/ o: Z  z# v7 }0 U
  65.         if (ret != 0) {. ?/ p) p4 z5 x
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ ~+ A. t9 f) k8 |, r. p% e! ]
  67.                 return -1;4 A2 _/ D* c, I5 l
  68.         }
    - P- z. _# H& k8 T# T5 f9 c

  69. ' W9 B3 p6 ^8 ]
  70.         return 0;
    1 K  H' m0 n- J& z% l4 d2 g
  71. }( L& ~9 {2 H2 [" J4 a
  72. 9 S9 V5 Y% C5 X6 g- u3 C
  73. int main()
    6 L2 A( H) q. }4 O1 O
  74. {' Y5 N# u0 r6 W& B
  75.         char c;8 N0 G6 ^, f' e
  76.         int i, macs[6];; u* j# {, V' t
  77.         unsigned char mac[6];
    % h3 W: P& E0 Q+ R7 z' i0 ]. m
  78.         unsigned char stbid[256];0 a% W) _+ D4 H
  79. * j+ P; j7 o7 p, ~: Q2 J. W
  80.         if (readparam(mac, stbid) < 0)  Q  P. y: w+ {4 {" v
  81.                 return 1;2 I* o, R" l5 |* ]( y/ [

  82. & ~$ C& r* H& |; f
  83.         printf("Current parameters: \n");. i1 T2 {* l5 K. k
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 Q+ N8 B0 Z5 k. T
  85.         printf("  STBID: %s\n", stbid);* a6 `# L7 T4 [3 v( o0 V
  86.         8 F% L; v; j$ G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , h) q; L* Z% L* @" r# e; h
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {( d+ S, J0 |6 p9 T2 |8 i
  89.                 printf("Input MAC error\n");, C* F! d2 S0 o8 [2 J. g# ?
  90.                 return 1;6 _$ C1 z  o. }( ^0 J) f
  91.         }- c. @6 `! O$ J  J& U3 a: v$ V& N9 n- D! V
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! ]9 [) J; K" t0 u0 N. u
  93.         printf("\nPlease input new STBID: ");) @& `# c- s, j' x2 s3 ], z! t0 W0 z1 ?9 ~
  94.         scanf("%s", stbid);% E0 t/ N" h) R& Z6 N1 @0 `
  95.         if (strlen(stbid) != 18) {) O$ a! ?' I, u& v( G
  96.                 printf("Invalid stbid\n");
    ! D3 L8 l& O- l0 A
  97.                 return 1;
    6 t+ f6 p7 i$ x9 _
  98.         }3 V! V; N$ W6 `( L+ B$ u7 W+ t7 U  x5 [
  99.         printf("\nNew parameters: \n");: E3 c. b: g8 B* N+ m9 q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * g' N" q5 ]% X( U' j
  101.         printf("  STBID: %s\n", stbid);
    4 v( N) Q, Y  W+ W

  102. + p5 _- `1 n" q4 [
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( Q' _6 t5 O0 E0 w
  104.         for (;;) {5 C* I# b! n9 S. i" m3 @
  105.                 c = getchar();6 G# V, z& d9 T  h
  106.                 if (c == 'y' || c == 'Y')& c! Y$ q( k- ^8 J
  107.                         break;
    7 Q) F5 y0 v2 e( f
  108.                 if (c == 'n' || c == 'N') {1 A  i; u8 l- D9 k3 e+ a
  109.                         printf("\nAborted.\n");
    # B( X( c5 @! f) O
  110.                         return 1;" r7 [8 b; K2 a' Z( J1 B6 O
  111.                 }
      i! A% W6 W% h  X6 d/ [
  112.         }
    : b: {" ~5 H4 X9 X/ ~, }
  113.         if (writeparam(mac, stbid) == 0) . v# f( l9 J: n. `8 t. W$ y$ O
  114.                 printf("Parameters changed.\n");
    2 p0 _6 e. L, N& ~& p5 R9 P
  115. + B, {5 W2 K' r; L) X
  116.         return 0;
    + N% B$ M( l" o, m
  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 8 O& A/ M6 n" _; A& b
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 Y+ A0 b8 M, I& z8 j) H5 D
你用的编译命令行格式是什么?# f) V+ X) c+ H0 u( H% a( q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-26 11:34 , Processed in 0.067409 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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