找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15748|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + ^3 K3 t  h! D) F4 A; G: l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 Z2 V, @+ o- A
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
0 C+ t4 Z/ u. J5 {- Wusage: himr <address> <value>. sample: himr 0x80040000 0x0
# A: X& U- D8 n) K$ d) H3 G0 ^3 z& k  [( w7 u3 Z0 j
3 e! c9 a5 W, Y) o  G* W- x& i! v
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
. a5 B& e# j5 h; C
0 @! Y+ \- {( G, V& t补充内容 (2012-3-8 09:42):; {' g3 T% s/ q$ R( T
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
+ {$ p/ J/ i8 b1 b这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。( j) k' n/ L2 O0 }% O

, E* Z! m7 Z, B, vhimr <address> <value>. sample: himr 0x80040000 0x0: ^# Z, C4 V; B6 R) ^; E

4 L6 C0 O" q. H, @7 u例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。9 Q: o1 {& x& N% Q9 D; A  {" G
himr 0x80040000 0x00
( o' y& \, S) P9 k4 ?himr 0x80040001 0x11
. D/ L4 b% x. u9 Yhimr 0x80040002 0x22
. v. S; B- T+ M4 H  U0 Uhimr 0x80040003 0x33) k+ u% [" V3 E9 v4 C9 E: p& r
himr 0x80040004 0x44
. [4 a9 k) c" f, Z, n$ Uhimr 0x80040005 0x55* B5 }# J- J5 X
5 L+ K+ ?2 W9 W7 m
SN也是类似。
# C5 {  v1 n2 S" Q1 Z8 y, Q+ u2 z
现在主要是,谁告诉我们MAC和SN的地址?$ o- J8 P6 d: \0 M1 z/ D
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ Y& b6 d4 t1 P9 b5 }* R一直想找到运程修改MAC和SN的办法,苦于无解啊

* T: d6 ]  R5 `: l6 T. G* W8 K. Z源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ V1 B3 W- V4 h6 c3 F1 B1 h/ l1 M' K2 V. d- t
修改的代码早有了。到今天不会编译。
& ?$ R  h* {6 @7 k+ c需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" G: s! f0 y- R. ~1 v! G  W, v3 O; K, V
  2. #include <malloc.h>
    1 J0 B7 u0 G3 D/ C
  3. #include <sys/types.h>
    0 }( j  g/ K8 U  {+ i
  4. #include <sys/stat.h>
    * @7 |$ \4 b: V
  5. #include <sys/ioctl.h>' N+ C: g- [* C# _2 A9 X# t; m
  6. #include <stdio.h>
    5 }$ \. t; L  y
  7. #include <string.h>' T: D; j  Z& M) f# f9 S

  8. 3 }& [+ n' z: H& a9 E/ Y6 D
  9. typedef struct {
    : v& Q- I4 P9 V. ?; ?/ p
  10.         unsigned int        e2prom_cmd_sub_addr;
    & m- z; ~1 T/ E5 \: e8 x+ \
  11.         unsigned int        sub_addr_count;
    ) L* R; b" `4 {, u- \9 }# O
  12.         unsigned char*        e2prom_cmd_data;$ |  H: C0 H( J/ b; Y6 E9 X7 ]
  13.         unsigned int        data_count;' _8 G5 Y9 ]2 W. u
  14. } e2prom_s_cmd;) H+ i* u) T) V8 r* p" C: \- C
  15. & |, }0 l( Q% u! g( r* k6 |! S
  16. #define E2PROM_CMD_READ 13 R- v0 P$ W! k3 z5 Y# K
  17. #define E2PROM_CMD_WRITE 26 s) e  Q7 h* p8 J7 i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* J2 A6 i& s+ A$ u3 P( C
  19. $ b) f- u- ~  }
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 F6 L4 f. E8 e* p
  21. {$ W) j5 l7 E9 Q3 Q
  22.         int fd, ret;( t1 I( d3 x- |4 L" q& U
  23.         e2prom_s_cmd arg;
    - }. `3 D' Z' }$ @; {  v  s
  24.         unsigned char buf[0x18];7 f7 m) i9 `5 n5 r2 f5 w
  25. / W' \8 i8 }4 J- R  H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);$ J: ?% `4 M2 X0 Q, V* }, P
  27.         if (fd  < 0) {
    ( ]8 S8 h0 e; ^0 ~2 T& T
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . P1 L: @: o; P$ L+ S
  29.                 return -1;
    3 D. X- S9 R# ]+ r( S
  30.         }: [% Z9 l( p$ A) M
  31.         arg.sub_addr_count      = 2;, \/ i5 I2 k( n+ C2 h
  32.         arg.data_count          = 0x18;
    4 l% G4 u2 m# z* o
  33.         arg.e2prom_cmd_sub_addr = 0x290;$ j% Q1 L8 X" ]* E
  34.         arg.e2prom_cmd_data     = buf;
    ! b7 s6 ^5 q; o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    5 i( R  p8 R; F1 l% t
  36.         if (ret != 0) {
    - N) \" Z6 \6 B  h: U& N
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);" p  x7 z: {$ W, E0 A3 t
  38.                 return -1;
    $ {7 p7 f% d7 C1 Y+ n' V! k* L
  39.         }
      J* w0 W# ?* p# v- ~- Y
  40.         memcpy(mac, buf, 6);& f9 C% M7 F6 c, K. Y
  41.         memcpy(stbid, &buf[6], 18);8 g. |. f' U( g6 s
  42.         stbid[18] = '\0';/ H, b6 M* K4 A# x, ^% _7 z/ E$ [9 @8 B
  43. 3 [! G4 M1 F/ d/ K
  44.         return 0;3 r( M- O2 Y$ u' l- n3 l$ R& X
  45. }; H: |) j) R/ A5 d, r8 `
  46. ) P' ^/ b- f* p! m+ j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)2 Q8 e% z6 N3 X" C8 J$ n! a
  48. {
    " K! i: l, j$ U
  49.         int fd, ret;
    7 B. L9 ^( `: Y+ S& s  \( P3 U
  50.         e2prom_s_cmd arg;
    4 i2 ^1 r  f  w1 j( B) n# Z3 C4 _
  51.         unsigned char buf[0x18];& t' I, @2 N8 E6 W1 `7 E

  52. 4 K0 [( W, m( i4 d# x: c- G
  53.         memcpy(buf, mac, 6);
    : {  {/ @$ C1 c, s4 p
  54.         memcpy(&buf[6], stbid, 18);
    6 r& x3 {# ^+ w8 \* z1 ]3 M) i. l
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; }$ D2 u$ o+ P: v
  56.         if (fd  < 0) {
    4 }3 X# D& `8 J
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : j3 [8 E' W5 y9 L
  58.                 return -1;
    * ?: P* o7 O/ M* J" K; F. p; |- J
  59.         }
    5 d4 ^6 Z6 s, \7 T; W. C
  60.         arg.sub_addr_count      = 2;
    " V9 t$ t, N% k1 r1 G
  61.         arg.data_count          = 0x18;0 e: y& f8 X5 Q+ t
  62.         arg.e2prom_cmd_sub_addr = 0x290;% B9 E7 v7 r! ~* n# m% ^
  63.         arg.e2prom_cmd_data     = buf;
    7 `/ l; U9 T- }  I& Y6 m2 {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 l1 r5 G( |+ b  p8 q7 T( `: [* _
  65.         if (ret != 0) {  U. f; {( O, b/ z7 q' _. X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
      A( k, o* X) n  p- {, H
  67.                 return -1;! g4 v$ T1 m* e# G
  68.         }" s; s- i& e7 w: z. e2 j7 X  _" i$ G  i
  69. 4 j" W7 W, P/ x" [2 ~6 r
  70.         return 0;) s  x  ?6 R5 h' c& e( y! T
  71. }. z! J( l/ d% `2 K- ?

  72. 4 X4 B9 w" j$ V3 j
  73. int main()$ s, Z, I. k: g( x( y
  74. {
    1 Z- b# d# E1 |, U
  75.         char c;
    ) u" P1 C* q& J# r
  76.         int i, macs[6];) n/ k$ y2 ^0 E/ R4 U
  77.         unsigned char mac[6];
    , B0 n5 d  m5 c* k+ h# s7 e9 K
  78.         unsigned char stbid[256];- Q! e# [4 k& |, m3 L0 S1 n0 p1 e. O

  79. 9 H; _2 Z6 H! _+ e- `
  80.         if (readparam(mac, stbid) < 0). U% u9 K& P, Y3 c6 H; A
  81.                 return 1;
    : u1 \" R! c# v3 H6 z% J9 V

  82. - w, L0 q8 i, u- A) c) s* z" q
  83.         printf("Current parameters: \n");
    9 t" j6 K& ?; b" g; Y0 ~+ w) o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, H$ @! p9 A8 u. r& D6 h2 P% K# i
  85.         printf("  STBID: %s\n", stbid);
    . B+ Z: W+ O  m( q; m% ~
  86.         , k0 m$ M# ~+ `" o
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% z  m' L& z% J! [7 ^! P9 Q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  [2 C( c4 l9 Y# W( ~* T: H
  89.                 printf("Input MAC error\n");/ h% Q) L3 r. i+ n
  90.                 return 1;
    ! x# ^% N) y7 c3 L
  91.         }, u9 S  ?7 R9 p- X
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    . e8 n! r+ l3 \. M3 l' W
  93.         printf("\nPlease input new STBID: ");' r( ~# i9 c  H
  94.         scanf("%s", stbid);. k6 H& p1 R& w4 q6 i
  95.         if (strlen(stbid) != 18) {* v( d0 ]+ W. ~8 N4 q; h
  96.                 printf("Invalid stbid\n");
    ( C, D3 [: H' S; u2 k) R
  97.                 return 1;
    5 m5 h& H) F' u1 I% [$ j
  98.         }
    ; ^, \8 x- y0 ^$ p: L! c
  99.         printf("\nNew parameters: \n");
    ' ]* U* I# i( c; D: |; I9 {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . U" x9 }3 K2 A9 f+ I1 w# i
  101.         printf("  STBID: %s\n", stbid);7 i# b: z4 Z* q4 Y

  102. 5 j! n4 M1 J" P
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ Q/ X6 B" H! F8 _+ m9 z5 W! }+ E
  104.         for (;;) {
    & `- J6 q1 {6 W; R2 x
  105.                 c = getchar();
    & s& O: q" b+ ?% }, l
  106.                 if (c == 'y' || c == 'Y')
    . Y5 g( W% L8 r
  107.                         break;7 g/ x/ B: t, D; l: X
  108.                 if (c == 'n' || c == 'N') {
    / t/ i: T) p6 z/ r: U0 q
  109.                         printf("\nAborted.\n");
    / f! y; c' E, c5 W, L3 N
  110.                         return 1;3 I. K, X$ w: X! ?  |+ \  P0 T* u
  111.                 }
    # v+ ], T$ }1 a( U! ?7 `7 ?& `, V* m
  112.         }0 r* S+ Y! M& a
  113.         if (writeparam(mac, stbid) == 0) 9 R( n5 T3 b! S2 [: l' U9 ?6 n5 y
  114.                 printf("Parameters changed.\n");0 R4 i* z3 w6 U1 ~6 v

  115. 3 {1 N( r; B; O) @$ T
  116.         return 0;
    7 O7 ^7 P* @1 ]  v9 W5 c
  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
" P$ _  g" q! V  h  {在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 V* S" {. z% U
你用的编译命令行格式是什么?
: D! n" ^! V3 U7 R6 |
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-12 19:08 , Processed in 0.057442 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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