找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15322|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    7 I7 ^' i# i2 X( V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' l& A. i9 o  E% P6 I7 [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 S  Z) F0 g' a: y6 k! N4 Q- P
usage: himr <address> <value>. sample: himr 0x80040000 0x0
" k% b: J6 F5 |/ A4 R; \- t% c( c3 \# \2 n/ X

. h" ~% L) Z! `: i6 {不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?+ ~# l+ L9 m) ^2 `$ T, C
. A0 ], Q% K- t2 ]+ J
补充内容 (2012-3-8 09:42):9 d3 y1 Z8 l( F7 j  ~: w
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% c5 a) I4 B1 o' B
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- d' D2 F2 R! ~
$ k/ a& m& R+ K& a& M. W
himr <address> <value>. sample: himr 0x80040000 0x0
) v$ @. X$ s5 W6 M3 v& P; a/ e# m' s! g/ a9 r) O) n
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. l0 R, P* W/ r( ~: dhimr 0x80040000 0x00, A3 V& F5 `/ M  J' D- r
himr 0x80040001 0x110 p2 m9 y( k+ o+ m% [2 G% Q+ Y4 X1 u
himr 0x80040002 0x22
: p0 E5 ^- n: h2 E, n) o' ehimr 0x80040003 0x33
. X; Z3 e; ]9 h6 X0 D2 c2 chimr 0x80040004 0x44. G/ a& C6 i% E. I, o1 U
himr 0x80040005 0x555 S% ^, O( d% D# n1 R. M  {
. B; `! l3 m# c6 R8 [
SN也是类似。! G/ z, c9 f* E8 E
! }( ^  ~. X9 f/ N3 f' R
现在主要是,谁告诉我们MAC和SN的地址?
: k7 T/ `' O4 Q( O' J- \
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 " N3 [  _: e4 S+ y" U
一直想找到运程修改MAC和SN的办法,苦于无解啊

  m6 x8 ^9 p& W. T, l源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   h6 d) [$ A: l1 P) e

8 V, R( g4 A+ C+ s. b: \修改的代码早有了。到今天不会编译。
$ x7 y0 b, e* B3 B$ m0 \需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) u0 j7 p5 L% t5 S
  2. #include <malloc.h>
    ! a( B( f1 Z+ K0 D: ?: ^
  3. #include <sys/types.h>
    ( u( f9 `$ c; F" M, c9 B! K
  4. #include <sys/stat.h>: q4 j3 d7 }6 l
  5. #include <sys/ioctl.h>0 [0 H/ c  m" O' {
  6. #include <stdio.h>* N- D! t) E) C( A$ ^3 X# E
  7. #include <string.h>
    9 r! }8 b2 ], `( ?/ g- R
  8. ! y. S6 Z( g/ ?  a; d/ `
  9. typedef struct {5 @9 b  W0 L1 Q# p
  10.         unsigned int        e2prom_cmd_sub_addr;
    # z/ E. R8 Q7 O) s- _. `' `! @+ P
  11.         unsigned int        sub_addr_count;2 Y* I$ }. ^4 P, I7 q, j
  12.         unsigned char*        e2prom_cmd_data;
    : q. V# w$ M( A0 Y. w! ]% X( s
  13.         unsigned int        data_count;
    1 M5 @9 I( H9 T" k$ ?' K% w' z7 V* G6 a
  14. } e2prom_s_cmd;
    1 l6 a7 y6 V( a1 D7 M$ W( m, B
  15. & }/ b- [8 b  Q. c, [6 ~5 O
  16. #define E2PROM_CMD_READ 1
    6 z! I3 a8 {) _, L3 [1 [8 b) s
  17. #define E2PROM_CMD_WRITE 2
    # B  \6 d- ~: l7 m$ k
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    3 I: A! \4 h9 h- t
  19. ( M! @+ s& O8 P
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    . F9 N+ L3 o; i7 n) r
  21. {* x* @& n2 E+ A% x* D
  22.         int fd, ret;1 K: t7 T# b7 G' G
  23.         e2prom_s_cmd arg;/ \8 j2 e$ |5 o% s5 l, L6 _" |+ h
  24.         unsigned char buf[0x18];% a" J8 V# n. Z# \

  25. 7 T) a% D6 [& [' k" R
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 }  W4 P' d$ K# ^) N# P6 d
  27.         if (fd  < 0) {! t$ }; O* A0 [* }) Y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 @! X/ z( v# v9 k6 C; b: f+ z
  29.                 return -1;4 `0 d, u% V# R9 p1 J
  30.         }
    0 P; |9 Z$ E& _: }7 _6 N2 f
  31.         arg.sub_addr_count      = 2;, r" \' n# B" a2 }
  32.         arg.data_count          = 0x18;
    , ~/ ?7 J7 N) q; U
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ V! D# n  _% T! u" B- o
  34.         arg.e2prom_cmd_data     = buf;
    6 ^+ Q# W+ x0 ]; @) D) i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 N. S+ w. M8 I1 a- W& S& H8 y
  36.         if (ret != 0) {
    + E2 r  [' z8 T0 F) O, o: Y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    , j! A0 q/ t3 o, \! |
  38.                 return -1;! b( r- M' K/ F6 u9 K1 {
  39.         }
    , b6 i/ Z" V, v$ f8 J
  40.         memcpy(mac, buf, 6);1 v! g8 N0 \7 p; N% p, d
  41.         memcpy(stbid, &buf[6], 18);, K$ b4 |6 J. u- X( X
  42.         stbid[18] = '\0';; h. z$ H& q: v- }' M
  43. $ I6 F, S2 x- L5 f
  44.         return 0;: q. ?/ D6 F/ m6 i, w( ^. a! H5 d
  45. }. W7 x( j. a) V9 G6 q/ z

  46. " X/ a4 h# l& {/ u2 C+ ~% H1 D6 C
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ' a; g' e6 _" K2 s
  48. {
    : Q/ M& x5 _* d; ^- k; [
  49.         int fd, ret;% h) `. F8 e' Y6 j1 X8 J
  50.         e2prom_s_cmd arg;9 L- Q- o2 [. C9 V4 b5 z; F- y6 |
  51.         unsigned char buf[0x18];
    6 |; W3 d& I8 y. ^

  52. - ^& t0 {# k0 |7 P2 f# `
  53.         memcpy(buf, mac, 6);
    % b* O) @/ ]( d/ l, H# T
  54.         memcpy(&buf[6], stbid, 18);
    + S5 F8 g' s% c, y2 L5 \
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 P# U5 N" R  ~7 W; T
  56.         if (fd  < 0) {
    0 v$ n8 C+ J/ j' z) m2 y: I: m
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 B) o; k1 I9 ^3 o
  58.                 return -1;6 V) }$ ^) H8 ]& }
  59.         }
    ) b. Q3 s# m5 W+ v' a
  60.         arg.sub_addr_count      = 2;
    2 y) H8 f( z6 ]1 P/ u4 T
  61.         arg.data_count          = 0x18;
    ) ^( ?8 U3 Q9 z1 v6 O( {6 r! E3 M+ U
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 ~0 ?5 o& @% \
  63.         arg.e2prom_cmd_data     = buf;8 `; q3 w8 O& O3 C* m: s: Y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);8 t& \$ {9 S8 x( P1 T1 t
  65.         if (ret != 0) {( J; Q& h. W( c
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 s2 K& }$ Y1 C1 L0 S
  67.                 return -1;% b3 x0 h. T+ B& H! \
  68.         }
    6 z5 l5 C7 D7 @+ J' W0 Q* O
  69. ' N( A. Y# b( W) W0 V2 g
  70.         return 0;" g* V, N% [% h2 w
  71. }
    : C8 c9 u, c. n

  72. 5 }& O0 \- _1 r
  73. int main()( ?" H+ y9 V  A* `/ M7 x
  74. {
    # p+ D& z/ g- {$ d0 R1 x. Y* r
  75.         char c;
    3 h' m: Z- m- M4 U( B
  76.         int i, macs[6];# Z, d' Q$ y* O
  77.         unsigned char mac[6];
    7 W+ I) _" p$ @! [
  78.         unsigned char stbid[256];
    + a; }( S. j  Q- v$ l
  79. : t3 i4 I: J) p! u& S  K
  80.         if (readparam(mac, stbid) < 0)* E. P! U/ y7 x
  81.                 return 1;1 X1 }" c1 \# k% y. v
  82. ! M. ~7 V, [) Z: {. ^0 G
  83.         printf("Current parameters: \n");5 Q7 a: X4 g- X" o! d- Q% x
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 y+ @& _7 y+ e
  85.         printf("  STBID: %s\n", stbid);4 N8 u+ {- F) K* y
  86.         : c8 K0 n! {/ N' N1 n6 B4 L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ' }5 `8 k. K, \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ R: k. ?( z1 k/ l- r; S+ v
  89.                 printf("Input MAC error\n");- b0 x. n! [' V7 _( A
  90.                 return 1;
    7 k, l- N# F) \
  91.         }
    ' C7 F5 Y5 b5 s2 y8 B3 K
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
      i% y( P0 _- K) Y7 n! |
  93.         printf("\nPlease input new STBID: ");
    & l) i1 V. n4 g( G8 [( E# s9 ~
  94.         scanf("%s", stbid);
    - o, d( m, g( L$ Y& l4 r  R8 j
  95.         if (strlen(stbid) != 18) {
    4 c3 C* w1 e+ w$ f3 l
  96.                 printf("Invalid stbid\n");: e: L: H& k2 ^% Y3 J
  97.                 return 1;8 ?) O- E6 j% R$ q
  98.         }' r4 A& H% x. e9 D! ~' X- O" p
  99.         printf("\nNew parameters: \n");2 N- A3 ^, _; n! O5 y- v
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : V, M9 M0 P; Z- ?7 q8 G
  101.         printf("  STBID: %s\n", stbid);- E" f, H7 j; V9 ?+ p
  102. ( {5 q4 ?2 S: D
  103.         printf("\nDo you want to change paramemters? (y/N) ");7 t" @* f. M* x1 z" A
  104.         for (;;) {" k/ |, S2 X% v
  105.                 c = getchar();# b3 i8 U: K+ H7 i8 @. s
  106.                 if (c == 'y' || c == 'Y')
    $ G' m/ X$ ?! J8 [! H+ g$ z9 ]) [' K! O+ W
  107.                         break;( F! R( Z+ M) ]3 l% A) W
  108.                 if (c == 'n' || c == 'N') {
    9 v2 X8 C& a8 J% N
  109.                         printf("\nAborted.\n");" m* q3 }5 G+ Q' w
  110.                         return 1;
    $ q8 g( G4 q# j5 C7 |: _2 g
  111.                 }" K0 R, @  O' k1 l
  112.         }$ T# H" t3 m" _4 L, ^
  113.         if (writeparam(mac, stbid) == 0) 0 c6 ]. c7 W* j9 ]) w* [! n9 c
  114.                 printf("Parameters changed.\n");. @" \8 v2 o. X/ V
  115. 9 q5 ]  T5 Z" d% a  `2 Z' g+ O7 @
  116.         return 0;
    6 \: l: W4 K8 c8 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
# F) z9 |/ [1 g0 m+ b& L; W  c在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

* p/ a5 l' U$ s. |, c' a4 }3 o. y6 C你用的编译命令行格式是什么?
9 f- a1 s' q1 K2 A  H, F
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-21 03:44 , Processed in 0.032347 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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