找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15517|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr& e! V6 n% j5 U6 t# {2 k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    8 y7 Z6 t! u7 J( X* z1 S
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 V9 k6 i* W( v
usage: himr <address> <value>. sample: himr 0x80040000 0x0: h2 ^5 P% P: @
$ [) h6 x# \* _0 X
6 w. n+ e, B% m+ b
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* T; b* T' Z% h, F2 j5 j' _# H" O1 m3 Y- N! F% ^* @( z
补充内容 (2012-3-8 09:42):
8 v7 |% H6 U7 |3 r' lhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* w/ a! f- I1 k6 r% Q+ j
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 w/ C( R; s* \' c  j2 k

3 K) B- t; L0 g: f2 `$ i) t+ o6 zhimr <address> <value>. sample: himr 0x80040000 0x0
2 s% F; I  @( h2 Q: b0 J' E, \* Q- @: P! ~4 K: H% P+ S5 N
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& ^0 p1 U' Q% D) [* ~& h0 A6 ^, W* ahimr 0x80040000 0x00. k6 G/ z4 X5 o" M' U% G9 `  X
himr 0x80040001 0x11" Y- u# n( a! z) y$ `. B' m0 S
himr 0x80040002 0x22
5 T  a' N; X, u' e7 Z! `& N8 Ahimr 0x80040003 0x33! U. `$ u3 t' s) F
himr 0x80040004 0x440 a# H/ p0 K6 [  W0 |8 I
himr 0x80040005 0x55
& M0 J2 H( B. w8 W+ W: x& c1 c5 w- c
5 _& Z% Q0 V0 e6 V' Z! C) C7 \SN也是类似。
# H0 f$ V) ]0 S. N8 @7 H- X
5 b$ [' {5 i/ i/ N4 Q/ g6 Q现在主要是,谁告诉我们MAC和SN的地址?
2 h8 j* b4 j1 P: P1 t/ ]
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 n0 H4 D, b% O3 f/ k7 V: G7 R" B$ Q一直想找到运程修改MAC和SN的办法,苦于无解啊
4 G; w1 k, ~7 t6 y% [- K; `
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 Z) O; F3 h+ [1 p: ?2 x6 Z7 y+ v( F1 T  D0 }
修改的代码早有了。到今天不会编译。
& ?. k! q; Y( g% j7 E8 R需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    5 e% A3 U  t3 c6 D+ Y. a+ X
  2. #include <malloc.h>
    & L- b- t2 _$ s( P1 _, V* Z: q
  3. #include <sys/types.h>: y1 _1 P, l/ K
  4. #include <sys/stat.h>
      @  h: N6 O% l8 t. X( X* u% \) p, [! ?, P
  5. #include <sys/ioctl.h>
    , J& j5 Q% x4 i! ^% p2 p( s
  6. #include <stdio.h>
    ( q5 w+ M! n9 d, x6 J* T
  7. #include <string.h>
    ! D6 H: g( L  G3 h) H
  8. 7 {0 e  A+ U% J# S% D0 P
  9. typedef struct {* h, G4 D8 C/ A2 D  t
  10.         unsigned int        e2prom_cmd_sub_addr;/ Q' h9 h: Z9 y8 m) b) u; ]  \  C6 `3 a
  11.         unsigned int        sub_addr_count;- _- L; U4 d  @9 r$ b1 V
  12.         unsigned char*        e2prom_cmd_data;
    ( r/ a. P6 k$ U- h; `) M; p" l( y
  13.         unsigned int        data_count;/ Y7 d/ P% j" m: F
  14. } e2prom_s_cmd;5 Q) p& L7 l9 ^! e

  15. . v' @& `$ Q- `+ t' [- o! l
  16. #define E2PROM_CMD_READ 1
    ) f: N7 g' A; N5 q& F, }
  17. #define E2PROM_CMD_WRITE 2$ _+ h  p% v$ e
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", U# B6 z/ a0 n1 [5 D
  19. + S0 d& P) c0 P- Q/ @, e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)3 g; [4 S) \- h$ X4 u6 |
  21. {; j9 T5 `+ x, x# L' l
  22.         int fd, ret;
    5 ~) j# i( T8 b. @' C
  23.         e2prom_s_cmd arg;0 R# F9 F! y1 I" P" [
  24.         unsigned char buf[0x18];" ~& D; y1 s& |

  25. & ^% c3 |6 \# v5 A) d
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : }2 v8 r/ h. |7 D! V( \: y" P, k/ G  K
  27.         if (fd  < 0) {5 T" {% h4 q8 {* e- a
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( b4 h& @3 q, f" U6 I$ r4 r0 Q
  29.                 return -1;
    9 |! S2 `9 E' V5 Z( X8 ?
  30.         }! g! s  _4 {& `+ P4 J7 M& x& G! t# ?
  31.         arg.sub_addr_count      = 2;
    2 C4 B; O2 B; p3 n
  32.         arg.data_count          = 0x18;
    7 U! B5 @# g/ @1 I' |+ y' U
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 L* }5 o+ ^1 m9 ]
  34.         arg.e2prom_cmd_data     = buf;
    ; B' |; ]: ~4 S8 [9 \' y# ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * `% ^8 ^# F; d8 m# b* Y: i/ B( y  v
  36.         if (ret != 0) {, c9 ^8 G1 t* m% M+ O1 c' `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    1 h$ R% e) b0 l
  38.                 return -1;% b& u2 d! C4 |9 f( a
  39.         }
    ! _; j) z4 X7 r9 a. `9 c3 P3 @% V9 N
  40.         memcpy(mac, buf, 6);
    ! k# v8 V; y% ~, [% g- E! u
  41.         memcpy(stbid, &buf[6], 18);
    % V5 _  v# D; h0 q
  42.         stbid[18] = '\0';
    ! M1 L& h+ Q  t4 z
  43. / b3 Y+ t0 Q, f+ W4 R
  44.         return 0;
    0 ^; c. J. w+ o/ p0 n4 q1 i
  45. }6 [! }7 @! W% }7 r* ?# N: h  P3 }
  46. # r4 P1 x9 E, Y& J- r* H2 o7 ?/ r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)( z& g* z" c/ F( E
  48. {
    9 n# i7 V* m5 ?& w9 a% ?
  49.         int fd, ret;
    9 E/ N; V% K. J
  50.         e2prom_s_cmd arg;& k7 g/ V8 [, j4 W1 X
  51.         unsigned char buf[0x18];
    2 I) {+ i5 b& v# J6 M( K" ?0 h  O
  52. ' O) e& D& L4 Z; \. x
  53.         memcpy(buf, mac, 6);
    0 V8 |& U/ @- S7 ~5 G
  54.         memcpy(&buf[6], stbid, 18);7 O% l: @0 y  e7 I8 a
  55.         fd = open(E2PROM_DEVICE, O_RDWR);8 M: B$ T1 d2 o
  56.         if (fd  < 0) {8 m- W+ m0 A1 g$ V; H7 V0 j
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) `' U5 `. b+ X9 T
  58.                 return -1;
    5 r" v" ]7 w0 [' A
  59.         }, C4 K" |: \4 l7 ]
  60.         arg.sub_addr_count      = 2;4 e' p4 f' ~+ |" f2 `* Z
  61.         arg.data_count          = 0x18;
    . A& R- A7 f0 H# a
  62.         arg.e2prom_cmd_sub_addr = 0x290;$ e9 q* c" K7 {
  63.         arg.e2prom_cmd_data     = buf;
    , k3 `/ b2 K5 K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 {" ^$ q+ `* M" \, L8 |3 o
  65.         if (ret != 0) {
    , p1 _8 X6 J' C. k/ @
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % ]' G6 t) e' z. g3 t* J
  67.                 return -1;6 _! U! z# O1 }# ^
  68.         }
    ) d8 V2 d! R& s
  69. 0 D7 ]  v9 ^; u  @* @* r/ x4 T
  70.         return 0;$ |8 e+ t( _' M1 u0 M+ O5 ]
  71. }
    # R- X. {/ s8 s# h9 a
  72. 3 E% c. U5 y7 |3 g
  73. int main()  Y, r7 ]7 q, p4 s9 |
  74. {& b3 H2 a' ^* Y! H2 N7 e) o; z9 I& t
  75.         char c;2 t4 h( E( y' O7 Q9 Z4 m+ U+ R
  76.         int i, macs[6];
    % m2 s; q+ S" R; F
  77.         unsigned char mac[6];
    ( r7 p  n; P5 T# F
  78.         unsigned char stbid[256];
    + s( N' {4 \4 P( X4 K8 f, X, j
  79. ; K: h! S5 P4 Y+ n; k- F
  80.         if (readparam(mac, stbid) < 0)
    % r0 {0 V- N" V
  81.                 return 1;# |% v4 G$ d/ {! H

  82. * G6 K. D2 J1 }& ?
  83.         printf("Current parameters: \n");
    6 G$ Q6 T0 _1 a3 V/ z8 Z0 v" g
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' [, P' ]' G) l. I( P! x+ Q8 K/ F
  85.         printf("  STBID: %s\n", stbid);+ N( a3 X9 x, z+ L
  86.        
    3 x2 w% ~% K- L* _+ N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    3 {# y+ v# F9 |) D
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 `5 P2 N$ d1 K7 k2 k) f1 `9 R
  89.                 printf("Input MAC error\n");) M8 z% O  Y, X/ C( `4 `# I8 y
  90.                 return 1;
    4 |) v5 f9 \2 t" o8 }1 p
  91.         }: ?! m) a4 e$ M+ L( [- m. V) _/ M
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    + ^5 B3 x& c* D# j
  93.         printf("\nPlease input new STBID: ");
    % }2 i# J6 V" a' b3 y% D8 x
  94.         scanf("%s", stbid);
    & f4 {8 Y: b! A# R* g- y
  95.         if (strlen(stbid) != 18) {) n2 ~1 J9 C9 S% }" g  O. ]% N
  96.                 printf("Invalid stbid\n");
    . ^- D3 r. `, G+ y
  97.                 return 1;
    + Z% e5 |/ `/ F5 ~% @: a4 Q4 [: M+ Z
  98.         }
    * l# @' [7 W, h) y
  99.         printf("\nNew parameters: \n");
    & `% f4 U$ _0 u3 ^" q7 t/ g. a
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # s. A3 N+ g- ~5 h9 i
  101.         printf("  STBID: %s\n", stbid);4 a( a: U7 c$ g& ]  c# I3 L

  102. 5 p& E1 b5 u# v% `& O' B8 [
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 u9 [1 ~9 c7 b3 d6 s/ X7 R
  104.         for (;;) {+ }+ V/ k3 b  I2 y
  105.                 c = getchar();. z1 R& B: S) o9 D
  106.                 if (c == 'y' || c == 'Y')
    ; k' ?) E- N; G
  107.                         break;, h, z5 P2 ?( m* y
  108.                 if (c == 'n' || c == 'N') {
    4 V& l# Z) o& r, r* @# O( _; T
  109.                         printf("\nAborted.\n");2 j  R9 {* q1 U! S" z* l
  110.                         return 1;' s% z. r6 T# T! m- R6 s: \2 P
  111.                 }$ h; Z' C4 ^. }5 c' V/ S
  112.         }
    4 h; q  [# z8 J6 `/ j: R  }
  113.         if (writeparam(mac, stbid) == 0)
    / M) }8 V) c) R" r5 Y& Z
  114.                 printf("Parameters changed.\n");! J9 a4 [& Q1 F$ M7 f9 }5 C& \+ K

  115. ; k6 k( v- q( \# }, z
  116.         return 0;
    4 N) Q! B1 j0 h8 \" o; y
  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
- m  Y5 D* L. `在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
  Q9 D; e# Q! G; Q/ M# k! {1 p+ n
你用的编译命令行格式是什么?9 p( U; k; ?5 j  p
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-14 00:56 , Processed in 0.026142 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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