找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15439|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  Y1 L$ e" a# ~- j& Y4 e
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig0 @( v8 s4 t) u  p
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ e1 L# x9 K5 i! wusage: himr <address> <value>. sample: himr 0x80040000 0x0
: _8 d, n) e; K5 O
& @: k2 B4 M# m# e
. M. D; w, w3 B, z( ]不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 J: }% @6 z* v4 c6 i7 V

: ]) Y! o; p% w. D9 L! x补充内容 (2012-3-8 09:42):% |0 t+ h0 z8 p' ~3 V9 K
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ P/ Z/ D& w2 K$ Q* r+ r这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
  D! q) V( f3 @6 C+ @4 G" L. \# q' L: O5 i; x/ u* K0 S! v2 h$ @
himr <address> <value>. sample: himr 0x80040000 0x0
5 ^' H$ A8 w. k8 D  u* F+ ]; `# j( b8 t, u8 r. u2 \
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 w2 ^; c* w. r
himr 0x80040000 0x00
+ O4 V' s5 F0 F; b% d) _9 ^himr 0x80040001 0x113 ~- u* r3 U0 V  s1 N: v, ~, W
himr 0x80040002 0x22% V' w4 [& ~; b4 x& m9 z4 L
himr 0x80040003 0x33) c4 r* e2 M4 u6 a7 a
himr 0x80040004 0x44
( |$ u5 ?5 t1 T9 Z" \; U6 vhimr 0x80040005 0x55; _  f# h* l/ G" D

9 {- S. x2 V- z. M. sSN也是类似。
- ^$ |! x5 {! c! N2 F, n5 i* ?2 z# Q, K5 G, U. q
现在主要是,谁告诉我们MAC和SN的地址?
8 c0 [. t7 `0 n/ G6 u& w0 [
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 H4 T. E+ D1 f7 m" V一直想找到运程修改MAC和SN的办法,苦于无解啊

: }7 d9 B3 |. }( i0 R8 G8 F源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% d7 h. l0 f; T' ?' m
- {" G# m3 ?6 a) f  ^8 A修改的代码早有了。到今天不会编译。) e( R6 `. n/ I, ]5 V
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
      R- _% e& b7 K: d/ `) H
  2. #include <malloc.h>
    ! e2 ?9 y. N$ C
  3. #include <sys/types.h>
    ' d: {/ @  L( E) z5 _. p: R6 M, Z
  4. #include <sys/stat.h>
    # i- c5 K- M: Y- b5 a
  5. #include <sys/ioctl.h>% ~2 J; r$ J7 ~! V. k2 k$ _
  6. #include <stdio.h>
    & a. a' Q  y2 S' D# m
  7. #include <string.h>) D3 w1 G/ T) e6 ?9 a7 J5 \

  8. * l9 {) [; T$ w8 \, l! p
  9. typedef struct {5 B; @/ Z$ ?! t8 U  u3 p* g$ y! Q
  10.         unsigned int        e2prom_cmd_sub_addr;; R& W' ~+ P% p1 N
  11.         unsigned int        sub_addr_count;' v& X  v' H$ Y+ C4 ~
  12.         unsigned char*        e2prom_cmd_data;
    ' }. ^$ l) O  R0 L1 G
  13.         unsigned int        data_count;& g# B' }4 Y) M" @0 q7 [% V/ }  a/ Z8 R
  14. } e2prom_s_cmd;
    ! C) ^) f4 U) p

  15. * r7 S$ T6 {! h! p1 Y# d
  16. #define E2PROM_CMD_READ 1
    2 \2 \8 v: f5 X3 k8 c. v5 G
  17. #define E2PROM_CMD_WRITE 2; D, ~8 A. a- _# P" G5 j6 }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / b/ d* C+ b% j' e  r- ~

  19. $ u. ~7 s& b. S( q" ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)0 R( ?: @0 O* ]$ r7 N5 Q$ \! f3 a
  21. {2 S9 A" q' w9 p3 ^1 g7 I& O
  22.         int fd, ret;+ h( E" w( o+ t) _$ A8 i& ]" m
  23.         e2prom_s_cmd arg;
    & b: v3 F1 W: N7 Q3 E6 U
  24.         unsigned char buf[0x18];
    8 i; A( ?( V. [) ?" o

  25. ' D0 Q& q$ B, n/ K' p
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( h# F: b0 M4 r$ d, d
  27.         if (fd  < 0) {
    * I7 B7 G2 ~5 u3 L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);: m. D0 w8 e8 M# V% |( r! q" R
  29.                 return -1;, y1 E- v+ D. A! _" F$ v( o
  30.         }
    $ B$ Y1 z% D9 c& r9 ?- X; J9 w
  31.         arg.sub_addr_count      = 2;& V; o9 N- @- \1 S, p/ S; f
  32.         arg.data_count          = 0x18;6 e2 ?4 F0 d3 K+ A
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 z) b& S' z: x3 X" ~/ s1 z: \: ~
  34.         arg.e2prom_cmd_data     = buf;
    4 P5 B* i4 l0 {7 Q2 k9 C" B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 z: z  ?$ \$ @5 S1 p4 D1 m
  36.         if (ret != 0) {
    0 I* l) _" l- z$ q/ N) s
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: e( t+ h, A. I5 {0 A1 D
  38.                 return -1;
    * f8 u6 }  Y" T+ G: x& D, N. D5 [7 O; N
  39.         }
    + m9 J. w1 }- s6 `, f
  40.         memcpy(mac, buf, 6);
    * `+ E/ V. P# n) K6 J; d
  41.         memcpy(stbid, &buf[6], 18);1 [  v8 c! Q% ]8 X+ F+ t8 J- Z9 c
  42.         stbid[18] = '\0';
    6 N& X9 l( v( Y& s; c; S

  43. / P3 r$ c$ v3 H. ?4 T' F, T" Y0 ]
  44.         return 0;- i  w- C& G  r/ u
  45. }+ g0 H/ z: F3 S8 I" }3 [

  46.   M9 C' C2 \/ |& J& c0 P' M
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - d/ `3 K( Y+ T; o* P
  48. {3 X( A+ C  B# Z0 W$ W
  49.         int fd, ret;; G- l5 r4 b/ {8 a
  50.         e2prom_s_cmd arg;
    6 c: b, g% s) V) H1 M
  51.         unsigned char buf[0x18];
    & n0 K( O8 ]; H2 ~4 O: B: ?& h' a# A

  52. : p  h" @% Q$ k
  53.         memcpy(buf, mac, 6);* f2 o6 E' ]( Q! d& q# K- {' s
  54.         memcpy(&buf[6], stbid, 18);+ f8 E! A' q) f% D
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 M; Y! u- ^" d( q  ^0 o
  56.         if (fd  < 0) {8 u" v7 h+ @1 {* P
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 G9 z% c- U. ?% o$ b
  58.                 return -1;  ?. l* z- r+ u; n- U
  59.         }0 T8 W5 b/ Z0 Y+ t# R
  60.         arg.sub_addr_count      = 2;
    , g2 \% Q2 z. l  D/ l. O% d! V
  61.         arg.data_count          = 0x18;
    + h$ a& E! m. s- }/ v+ a
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( |8 U& C/ y( y7 E9 o- y  K0 A
  63.         arg.e2prom_cmd_data     = buf;+ d9 r9 _/ o$ d$ r- q# N
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    : w8 x7 H" @; H' t. O2 m) O5 ~
  65.         if (ret != 0) {% }# C- v% H- U$ a* m/ p5 X) `! b
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 n' @. e: m# B
  67.                 return -1;
    3 ?" m2 o, M+ g
  68.         }
    * [7 d6 I' Q! V7 z/ h

  69. 4 s6 a0 b4 b9 r7 A: I) D( n
  70.         return 0;1 E! U7 Q) K2 f- m) A
  71. }
    $ a9 N7 Y6 Q' }# t
  72. 3 }4 {- M6 Y0 U4 W7 T2 s6 r
  73. int main()
    2 ~) v. K/ Z' [: n% Z
  74. {
    ( N/ Y3 x) {1 p4 W8 Z0 B$ i# w& v
  75.         char c;
    - Q$ s) o5 x; A: q7 @. r
  76.         int i, macs[6];4 |. l2 |/ p4 {2 n# D
  77.         unsigned char mac[6];
    8 {9 i$ G+ h% K5 W3 N4 \
  78.         unsigned char stbid[256];
    % X4 X' w: Q8 \# D: M
  79. * Z! v3 g$ l; V4 ^9 {* b
  80.         if (readparam(mac, stbid) < 0)
    + l. Y! ^7 W, e6 V
  81.                 return 1;# I, C2 w$ y4 ]( ]0 ^' K% i5 x1 i+ m

  82. * d# J. a( h. y# |2 R0 O5 F
  83.         printf("Current parameters: \n");( f1 m$ S* P! z& C; N
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 M' G3 z) H: w9 `( k! K
  85.         printf("  STBID: %s\n", stbid);
    ' Z5 f+ c2 s2 M6 e
  86.         0 I% g+ Z* h/ t
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 p% G' r" I, C$ g& [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {# D# @! ]* i% y8 z
  89.                 printf("Input MAC error\n");
    7 `. w& ?% |6 J3 I) z- ]$ g
  90.                 return 1;, E% a& o: N/ p) O  F3 R. q' H) q
  91.         }4 Z/ N' A% h& q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    4 Z1 p% n9 q$ e: a) [# x
  93.         printf("\nPlease input new STBID: ");1 w0 o/ K4 ~) D- I* J- `& W
  94.         scanf("%s", stbid);$ T% m0 b7 o/ j
  95.         if (strlen(stbid) != 18) {
    1 i7 |6 w% h% a6 h: R
  96.                 printf("Invalid stbid\n");
    ) F4 o( N5 E; H8 I' {$ O
  97.                 return 1;+ e9 @7 }! ~1 m+ |' c9 e
  98.         }
    $ [9 q. T. j+ }' m* [# D7 x
  99.         printf("\nNew parameters: \n");/ U  _. z- }/ o/ i1 k
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ y0 Q6 A- d( y
  101.         printf("  STBID: %s\n", stbid);- J) Z1 t/ t0 n/ }5 f1 H: C* l* b& k
  102. 3 @% m( m+ F. b9 {* {1 U
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - P3 q# U- h% g& U% k+ F
  104.         for (;;) {# d) C5 h5 w9 e% ^
  105.                 c = getchar();
    % f/ G9 [9 q; C) s. h, E
  106.                 if (c == 'y' || c == 'Y')3 c8 j2 |1 U( j4 \: `' w
  107.                         break;* ]  B' s# J% A; j
  108.                 if (c == 'n' || c == 'N') {
    / e9 o) q: Q; H3 a. e
  109.                         printf("\nAborted.\n");. k  U: k9 L  \  A# K
  110.                         return 1;
    % s5 _; x3 c) l5 b% R. s) @( y- a
  111.                 }
    6 T/ H2 L5 ^' _
  112.         }
    9 a5 L% f% E- B: b8 u
  113.         if (writeparam(mac, stbid) == 0)
    ( B" z6 W9 r0 J6 z- w% W7 x. G
  114.                 printf("Parameters changed.\n");6 w, R' A) {* D9 S1 G4 L7 {$ d

  115. 1 i5 f* l* O" H# k( k" a
  116.         return 0;  i& I$ g" s+ w  Z% H' u% L
  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
& E9 M& o/ x) k. P& \在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 i7 o  A* i4 ~6 W/ T你用的编译命令行格式是什么?
8 q3 t! i9 C. ~0 v3 s& i0 `  Z1 {6 G
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-5 09:25 , Processed in 0.028665 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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