查看: 16270|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr8 _+ D4 G! X8 Q# y3 ^: E7 z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . e- J5 T& I# f) {
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' M2 b) D+ w" q) u% nusage: himr <address> <value>. sample: himr 0x80040000 0x0
) V. V5 D3 p1 t* K, j* J2 F/ r
$ i; j7 s; a2 r- \4 C- V: ^/ B( _6 K6 e3 S+ L
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 R) b1 k3 a0 l4 K7 D4 c
# v/ v' u$ |6 b! `9 e
补充内容 (2012-3-8 09:42):
$ p2 m& g) ]- ]! L9 mhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数/ R  b8 ?) N3 Q
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 D: y% m- F9 z; c$ G7 Y* a: I
/ O# Q' m$ X' F2 z8 o
himr <address> <value>. sample: himr 0x80040000 0x0
. _' f' M( ]+ D( G) L& i( ^1 n8 M$ ^2 f: ~. m5 j* s& k
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 f) d7 P$ S5 P2 R* X% ~
himr 0x80040000 0x00. j! q$ V+ G' S3 t/ I
himr 0x80040001 0x11- C8 W' @4 K' q
himr 0x80040002 0x226 g, D( T2 j$ `. ^
himr 0x80040003 0x33  ^9 X0 ~: ?! e
himr 0x80040004 0x44
1 [2 [0 g7 y+ f8 b3 B. K0 y$ }himr 0x80040005 0x55% n8 d4 z1 V8 Q: \' P: H
) s: R( i& f+ R- i& [
SN也是类似。9 I- k1 ?' K  e' {; H
+ K, x* O2 k* j$ l9 ]
现在主要是,谁告诉我们MAC和SN的地址?1 S' W* f% Y% ?4 L1 [
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 U% B8 C, P: \一直想找到运程修改MAC和SN的办法,苦于无解啊
, D4 C4 z" {$ o0 q) L, R- ]
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 0 b8 U" y# [  h: F
- X- c1 ]+ \1 B  _' p# J4 n
修改的代码早有了。到今天不会编译。9 g4 G. d" \' n
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    6 x: C6 P$ p: q" p2 J+ W& q9 I2 k
  2. #include <malloc.h>
    ! P8 \9 `9 g" e2 u. f2 x) _
  3. #include <sys/types.h>
    , w9 Y5 `- y( v; }: W, H1 f
  4. #include <sys/stat.h>
      t3 K; r: p- A' B
  5. #include <sys/ioctl.h>
    1 K3 O9 V: k7 b2 D4 l2 X
  6. #include <stdio.h>
    6 Z1 b1 @& P) d
  7. #include <string.h>
    - N$ i7 Z. g- E  f* B" B$ h
  8. 0 g2 i0 Z% N9 @* ]
  9. typedef struct {8 ~4 C4 X& e8 z( r
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 i% k  t4 L4 ?  N6 v/ c% N6 ]5 F
  11.         unsigned int        sub_addr_count;8 b- f) r# \2 H) c8 ^; a
  12.         unsigned char*        e2prom_cmd_data;
    - U  H- g+ b. }) d' ~- v' ?5 u# c
  13.         unsigned int        data_count;- D4 @# \  O$ d7 ~. y
  14. } e2prom_s_cmd;
    8 W0 o: l' f1 y& a' V; F# t
  15.   w% g. \5 I: I1 K
  16. #define E2PROM_CMD_READ 1% i' I$ h& D. R3 `' J# i
  17. #define E2PROM_CMD_WRITE 2
    . F, ?/ l$ C" m" `* k( S
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . c) H% v6 o, X& `3 u% d8 ]' V
  19. ; Z; k: Q$ j3 c3 M# z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / v3 ^( l' z& `7 N8 S) _* t
  21. {5 |* N" @  P* A8 A1 s% \0 }  b
  22.         int fd, ret;1 y0 @* j/ u. j9 Q8 j: F* F
  23.         e2prom_s_cmd arg;1 s7 Z1 ^1 o/ L5 z* s& P9 s
  24.         unsigned char buf[0x18];
      }1 E: O! N4 j2 b/ k5 x: l( H* w

  25. 8 D9 T" R) L5 F% W8 }
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 }% d) V! d& w
  27.         if (fd  < 0) {
    2 t" N; m- {* w' N. x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 l: n1 V1 t. w8 w( k0 V; ]
  29.                 return -1;# g% `& _) Z0 _3 ~  e
  30.         }
    ! l2 N$ U2 V' r2 x
  31.         arg.sub_addr_count      = 2;
    4 Q# `( C% ^" w! Z+ y
  32.         arg.data_count          = 0x18;
    9 B: M) `, m+ ^/ ~" c
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 H) [6 S8 f) ]0 M6 Q1 O# _. k
  34.         arg.e2prom_cmd_data     = buf;+ \' a" h# {% i* e/ ]* J- C2 X: q! D. \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ d; l  ?3 m1 Q$ Q4 h5 c. ~8 F
  36.         if (ret != 0) {
    / X' M- i& I7 ~* }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    / @* a1 R0 o! Y1 H9 O
  38.                 return -1;
    2 P% ?# m) g+ |$ j- X
  39.         }: T0 @9 K) o# r5 Q7 ^# j, g
  40.         memcpy(mac, buf, 6);  ]4 F' H6 t; ~6 G! z
  41.         memcpy(stbid, &buf[6], 18);
    " M: U1 ~( O' _! ^# G8 e) U" r  u
  42.         stbid[18] = '\0';* }; t, e/ E! ?4 n( ~
  43. $ i! \( {1 \' p) d* h! Q
  44.         return 0;
    " }& Y  _5 d$ f4 L+ n3 v6 J9 @
  45. }
    ! _1 E, j& E4 y' w* k' k9 I

  46. ! `# q1 |( k  R( ?+ B- K
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    * u  a( b* d1 x! y& N1 K! @! N
  48. {
    " ?4 d% l4 W* t+ H/ U- I6 [
  49.         int fd, ret;
    6 L, s2 M# v( ~1 P5 M
  50.         e2prom_s_cmd arg;# g; n) b  @" ]: U" B$ x3 B
  51.         unsigned char buf[0x18];2 l  Z! T: [3 [0 ~3 o7 A6 Q
  52. 1 Q* Y' e( |8 Z$ I4 [
  53.         memcpy(buf, mac, 6);
    7 f  v4 \$ Q3 v% m1 `3 t& k) a% a
  54.         memcpy(&buf[6], stbid, 18);
    8 t, U1 {, z& J! i( m- O( Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);8 x. b' _' n+ K, ~2 `. ~  c
  56.         if (fd  < 0) {  |! z7 s% \5 n
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 v. s7 b5 y1 }: R- E' ?6 s
  58.                 return -1;- o- D9 z  L; K/ \& v" ]  |) D
  59.         }* b; |4 `# X4 E% ^7 H8 z
  60.         arg.sub_addr_count      = 2;9 e8 m6 k$ x1 f
  61.         arg.data_count          = 0x18;+ c, F3 n( A: B7 s, @
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 L( {" s0 _% a# q
  63.         arg.e2prom_cmd_data     = buf;: R$ _$ a& n" n$ m) I( R
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + P+ W9 i. N1 H$ |1 w$ {2 w
  65.         if (ret != 0) {
    ( ~6 ?. f1 A6 h+ ?' T3 b
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);$ u3 z' |# Z" T# b2 V( o0 K
  67.                 return -1;
    - \. m+ u' K$ d$ C
  68.         }
    # t/ e, C  }8 O6 R

  69. 2 E. p6 F9 |. I& I3 C, Q* C  h
  70.         return 0;5 s9 }1 m2 {5 `
  71. }" a8 R3 T% L; R3 c: o

  72. " I$ M8 C" g, N# @: z8 @( I' ?6 s
  73. int main()
    2 D  _$ W9 y/ {8 k# S" F2 a6 h
  74. {: c+ R3 C) M4 O
  75.         char c;* z/ `3 f  y; C: S& U
  76.         int i, macs[6];
    6 Y  g) _. H  t( s/ F
  77.         unsigned char mac[6];
    4 V7 F" @% j6 q8 a
  78.         unsigned char stbid[256];
    ' B; P8 @- N' j4 z! }4 ?* l* z
  79. 3 v' I  j6 }$ W* p% }
  80.         if (readparam(mac, stbid) < 0)
    ; i% u$ B0 T% X: n
  81.                 return 1;
    6 G' I$ P$ X% n. {5 o

  82.   V0 k) v( ]0 @9 ?
  83.         printf("Current parameters: \n");
    1 }4 k6 R, p; z% Z1 A, m
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % g+ H1 U7 o" |& n' G* A
  85.         printf("  STBID: %s\n", stbid);
    ) K2 {- y) f" v* @
  86.         - `; D) F3 l3 t5 R4 d3 l
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    0 y0 j+ M0 c8 \# H: j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {2 X& j' V8 V8 j! o9 _( v( P
  89.                 printf("Input MAC error\n");
    + U" R1 O& S' ?8 {) @
  90.                 return 1;5 ?% V& h5 D# ^+ U- X
  91.         }
    # I, s6 h# Q( F2 Y0 v! W6 R, S
  92.         for (i=0; i<6; i++)mac[i] = macs[i];& u% _: e+ d; J  W% s  M1 x
  93.         printf("\nPlease input new STBID: ");
    8 R# T$ P7 a* \. C- n
  94.         scanf("%s", stbid);
    9 f& ^3 U5 G  y6 E* ~
  95.         if (strlen(stbid) != 18) {
    2 @  c& u" h4 z: E9 V7 @" {
  96.                 printf("Invalid stbid\n");
    ' q3 P5 m# V$ ~5 S5 A
  97.                 return 1;0 y# B0 M$ H  O+ ~3 z3 z
  98.         }) `+ c" l, i7 h
  99.         printf("\nNew parameters: \n");3 h4 G* g! o* A( g& h: `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + h' P# I2 F( [& [: E5 W/ A& C
  101.         printf("  STBID: %s\n", stbid);
    1 g$ |* Z1 j& S0 `: m* g# p
  102. 2 S1 z* U; M5 H' E- T
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 O7 q* x0 H% X/ W6 P: e
  104.         for (;;) {
    * y$ h1 o1 y; ]; s) i) W
  105.                 c = getchar();
    4 Q$ R1 {. _& q" v* C; g
  106.                 if (c == 'y' || c == 'Y')
    9 k- H5 r* ]; M$ Y3 j6 U
  107.                         break;: \. c# a9 I& c+ _
  108.                 if (c == 'n' || c == 'N') {! v& r' G5 G& W8 S4 a
  109.                         printf("\nAborted.\n");
    3 N! E, z$ v2 ]& A8 X8 d% s& L
  110.                         return 1;' N8 A5 D5 O# Q) Z  ^0 b
  111.                 }
    ; ?* ~; }' Y8 U& F- k: \+ ?- Z
  112.         }
    9 }" O) W7 c0 w1 f2 z1 s
  113.         if (writeparam(mac, stbid) == 0) 2 }6 o# @4 F' C) a
  114.                 printf("Parameters changed.\n");  o0 n: G" [$ R/ `1 P- s$ Q

  115. ! Q* u" [! @! r3 D, F
  116.         return 0;
    ! y8 K) f2 R  G2 k
  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 + d' _4 R; T4 B8 e
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ o. _9 u! g" j5 a
你用的编译命令行格式是什么?
4 Z( g" f3 w' v* a5 Y6 R
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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