查看: 16342|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  l* A' W7 X* u. q! b) v$ T0 o
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig/ W# m4 |  |! @
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
" A+ r6 m! t% D- \& `/ Dusage: himr <address> <value>. sample: himr 0x80040000 0x0. P% W; ~9 L% x1 Z

8 T" H6 B' r& Z9 Y6 ]: n7 X& M1 u+ d) G
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
2 E+ j$ T  Y& U# j8 ?7 @0 G$ _& H+ C, L- w
补充内容 (2012-3-8 09:42):# ~4 E9 U3 B& \  z9 ^$ Z% K
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  m/ o; Z3 x$ Y. h4 n这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。/ _% C. u; G- O, Z3 r, s3 s
7 S4 X: B8 n' i6 i
himr <address> <value>. sample: himr 0x80040000 0x02 N" W3 j  o; Z4 R$ Y
* [! m; d2 j& I3 N  }- t
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* S8 t/ o9 p) N& o( lhimr 0x80040000 0x008 L4 r/ b8 B' a9 I& i
himr 0x80040001 0x11
7 U0 P6 r0 ?, w5 J( D& G4 ?himr 0x80040002 0x229 o9 N: I/ l0 b5 h
himr 0x80040003 0x33
( H4 Z. |- A6 f" c" ?: J8 U. Thimr 0x80040004 0x44( X! \7 N2 w2 o; U" n1 P
himr 0x80040005 0x55' o" X/ p/ T9 }6 C# D0 K2 z% g2 n

& ^& P, Y. z0 a1 S7 wSN也是类似。
3 [) d1 v7 z" f& w/ n' z* W8 E: x1 l9 w0 S0 O* _5 d2 m! [
现在主要是,谁告诉我们MAC和SN的地址?
- d3 [8 i& K9 n9 }$ n/ x9 b% o
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
: C+ Y- a6 |7 X0 s一直想找到运程修改MAC和SN的办法,苦于无解啊

; V3 E$ j' r! ~源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : z7 g. O/ r7 D
9 m' [1 K7 K. I( d# r
修改的代码早有了。到今天不会编译。! G1 Z; k1 X. G$ N# I
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    4 C0 T: i# j- N4 M7 u1 w. z, c
  2. #include <malloc.h>, Q' \4 G/ x9 J; T) y4 O& R
  3. #include <sys/types.h>
    ; `8 o( f9 O$ n, f3 P4 ?
  4. #include <sys/stat.h>
    2 w' s- |8 K$ d, p
  5. #include <sys/ioctl.h>
    3 R, F2 q, c+ I! B% M; _# O$ h
  6. #include <stdio.h>
    1 g7 i' J: w) G! _5 G
  7. #include <string.h>1 s; ]% N3 s2 G0 h( o. o. m

  8. ) w: I; ^0 X9 U3 z2 L* D
  9. typedef struct {
    % `' L7 X. G' Y3 r: m2 G% ~2 ?% U' e
  10.         unsigned int        e2prom_cmd_sub_addr;
      e; S+ Q: y  j0 ~% F5 V# v
  11.         unsigned int        sub_addr_count;+ o7 I* V8 I/ R/ [9 \- N
  12.         unsigned char*        e2prom_cmd_data;7 w' `$ F4 b( P9 b4 c! u
  13.         unsigned int        data_count;
    ' [9 a# c: F! I
  14. } e2prom_s_cmd;
    6 f. n4 ]6 L: G  g% G
  15. " }8 h% G* A8 }& q) @
  16. #define E2PROM_CMD_READ 1
    & n8 J' R+ z3 ]5 ?8 Z# |
  17. #define E2PROM_CMD_WRITE 2
    % Q) I, b1 m7 w
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    * u# s  j  c" ^0 F1 L9 l5 A7 q. i
  19. 9 z' z! x  u' g% T% g' P+ s. D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)' Z: y) c7 @. G# T% \$ z( a
  21. {4 c9 E& J! O( i/ P% D! _
  22.         int fd, ret;% w/ A' f" W9 F  S( T; q
  23.         e2prom_s_cmd arg;( u" o" o9 j* g6 Q" J% p$ F
  24.         unsigned char buf[0x18];# ^" u! i2 [' G

  25. ; ~( o/ V% @/ K7 ^" i% K
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 [/ K& P7 x5 A6 B2 t! e: v
  27.         if (fd  < 0) {7 ~9 @3 a. e& x- g# ?# s
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);, d: E. R% Q& b3 z0 h( k5 B$ M
  29.                 return -1;
    ) D: r$ A$ u; B
  30.         }
    ; P5 M' ]' p5 F8 P  \/ I
  31.         arg.sub_addr_count      = 2;* n' {& _0 H6 a4 {8 D8 E
  32.         arg.data_count          = 0x18;# p8 _# n$ w6 z2 m) i$ X. x8 p
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    + @5 {4 `, A' U" k9 `" D5 x
  34.         arg.e2prom_cmd_data     = buf;
    7 C  k& Q; S1 Q$ a& I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    " t! i$ E+ C. o* O; K
  36.         if (ret != 0) {' J4 t, X, G% }4 i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & ]) D7 o2 Y2 v5 U
  38.                 return -1;
    9 h3 S$ i8 A# N  _% E' n$ q
  39.         }, _0 @, h* ]6 J9 d
  40.         memcpy(mac, buf, 6);
    ) n0 t" U2 C/ i) g
  41.         memcpy(stbid, &buf[6], 18);$ ~; c  X) u' w& @3 d$ f% O8 W
  42.         stbid[18] = '\0';
    , f( G1 y( q* q9 G: R2 Y* h

  43. ) C( Y) V3 S) X& f4 Z. w0 p# T, c0 N
  44.         return 0;4 c2 P0 R1 `1 Y( z$ e3 E
  45. }
    - u" l) p0 j+ j. q' S# _; |

  46. 9 ]; O# q8 j/ J; V
  47. static int writeparam(unsigned char *mac, unsigned char *stbid), L+ d! t$ U- \: v
  48. {
    5 n  \& ]! T) q0 k
  49.         int fd, ret;3 ~1 X* p' ~( K' p
  50.         e2prom_s_cmd arg;
    % e# _* r1 i- N5 ~: a1 u4 [% n
  51.         unsigned char buf[0x18];1 x+ m5 b; u1 }  `: A# u7 M
  52. ' s9 J- g1 J7 @0 ]  R
  53.         memcpy(buf, mac, 6);8 t+ c  f' X* k3 g$ `9 B
  54.         memcpy(&buf[6], stbid, 18);  a1 ]8 r9 i& A( R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! e. b, ^( U3 p0 r6 G
  56.         if (fd  < 0) {: I; [- ^: e# i1 W/ |$ u- H; k) Q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% ]: S* l$ r3 d% v; ~- ]
  58.                 return -1;; ]9 u) M2 D/ r; V; s$ ], W+ k
  59.         }$ ^/ ^1 L8 b% x3 @
  60.         arg.sub_addr_count      = 2;
    % b5 K' z1 X5 h: w$ k' n
  61.         arg.data_count          = 0x18;( i8 D# @: J! E, m
  62.         arg.e2prom_cmd_sub_addr = 0x290;( q- F! C; Q$ k7 x- J- K
  63.         arg.e2prom_cmd_data     = buf;
    ; ?- w' s" [! J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 u* c$ @) i* S3 [8 A; M
  65.         if (ret != 0) {0 F* `  }7 p5 ]+ q6 }# G& k; G* Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ A; \8 J' p; D! b
  67.                 return -1;
      H( T* E1 C/ E$ u" G
  68.         }0 d. @, D/ J# p- G" T: l
  69. 9 S* e& p: p1 z$ l7 _
  70.         return 0;: t/ ]  e8 m9 r# o
  71. }5 b3 n/ p% |# \  s4 v) e5 a
  72. 4 @0 ~2 J  i+ n' \- S+ F
  73. int main()  E+ W# E- ]) T" m
  74. {: D3 F6 @$ a5 J: D; j6 @. X1 V0 K
  75.         char c;  R. I( |+ r. z/ V7 [  I
  76.         int i, macs[6];/ U) C6 f7 J9 s2 x% q* L' a: }
  77.         unsigned char mac[6];9 d* l1 Y, |* S/ V9 N$ S
  78.         unsigned char stbid[256];2 p) G8 X2 ~* p. W, G- y1 x

  79. 9 S+ ]/ v9 f# K
  80.         if (readparam(mac, stbid) < 0)5 L$ E" E, B. P3 L
  81.                 return 1;" _6 K6 c, I' P3 O5 B% d
  82. ' i3 w) e, F4 k/ t) C5 `9 d% d. L( w7 U
  83.         printf("Current parameters: \n");2 W0 \5 |" q/ K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 A4 w, u6 u, U
  85.         printf("  STBID: %s\n", stbid);
    2 I. y8 K3 H7 d5 H
  86.        
    1 o) L/ J2 I; Z4 ?& C2 K$ i' Q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 Q5 {9 \, ~! f$ m. B1 T; |8 w
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    / _" ]2 R1 G( v# Y
  89.                 printf("Input MAC error\n");' h& n" M5 a) g& R. d) k% g6 ^
  90.                 return 1;
    9 v6 [. Z1 J( K5 j" O: P8 x! c
  91.         }: O( k  w: s7 J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & _0 i; ^" q: }5 E, R0 J
  93.         printf("\nPlease input new STBID: ");
    + [- y0 i  X, u* L+ `2 ^
  94.         scanf("%s", stbid);1 [9 R; s0 B6 r5 \, Z
  95.         if (strlen(stbid) != 18) {
    * `+ E5 _4 p1 k
  96.                 printf("Invalid stbid\n");
    ( r4 G( m2 o- g& ~7 ^; p' r& F, M
  97.                 return 1;& h$ S# V+ G! R' t" ~( p" \
  98.         }
    . `3 ]& {  K( u" o
  99.         printf("\nNew parameters: \n");. m$ n6 q5 ?8 ^) Z' M
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 w( v6 g% J8 m4 P: }7 N
  101.         printf("  STBID: %s\n", stbid);
    ; C3 W; s/ z0 J- `' `7 _

  102. $ C2 x4 @+ O8 k7 g" A. |
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 z1 u% [8 O3 I  S
  104.         for (;;) {7 k0 A3 i9 }3 B4 t
  105.                 c = getchar();* l' w& X, a/ v, e. F  k
  106.                 if (c == 'y' || c == 'Y')3 u! c0 R- X4 B8 b
  107.                         break;( `: A( L( B  M. _: W3 z
  108.                 if (c == 'n' || c == 'N') {% t+ v5 F* q/ l* P! j1 v3 ?  E
  109.                         printf("\nAborted.\n");
    % S# \! ^& }% u7 B5 n" o
  110.                         return 1;
    0 t# E1 }! F! \0 m: e0 U
  111.                 }
    1 `, h/ k; R' }
  112.         }+ i6 z( g! E, t7 K! k% g8 p8 I% Z  L: ]2 x
  113.         if (writeparam(mac, stbid) == 0)
    $ J, f5 _, B; o' N
  114.                 printf("Parameters changed.\n");; y, L8 W( }; Z

  115. 6 B. }! I& D) q; O# b
  116.         return 0;
    - c- @" B2 }4 M5 U
  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
) r* u! l# M* @# G# n9 ~在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

* g8 ~- J: }! V) K) ~你用的编译命令行格式是什么?
7 H0 n8 Z& k. i% O
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部