查看: 17103|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    8 d( P) H+ s" m* j, t6 v" D9 x0 J
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig3 o/ }: q8 ?/ \' O) Z  V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:9 y' X3 f$ |; A3 y& X# G8 X2 t# S
usage: himr <address> <value>. sample: himr 0x80040000 0x0
1 t. `( m8 N! z' J* r
. X! ?( v- c$ W. \0 F
* R# \0 o0 Y* E6 S6 a3 E1 P不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?* A6 D0 ^* w5 a; n6 o

* B) r* Q7 \# a3 o补充内容 (2012-3-8 09:42):0 B7 v' \* k# D9 ]8 ?; c
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 [8 O+ i, ?* C& f- p" E这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。/ f2 d) @7 Z2 W8 e; b0 p% l' X

7 c) d$ o" p& `2 p# a1 n1 n7 |himr <address> <value>. sample: himr 0x80040000 0x0$ f4 z$ m! K. j- m2 M5 O1 i
) z. `# ~' r& C/ n" h
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 `8 F, r% K3 L0 n# u. C7 ehimr 0x80040000 0x00
; @; f. y2 t" H' v- Khimr 0x80040001 0x11
* j' k5 \: [6 h  chimr 0x80040002 0x22
# B& ~+ j2 e- @# Zhimr 0x80040003 0x33- h- R  y" P3 a. E3 k- ^
himr 0x80040004 0x44
% L7 f& N/ r+ A0 P; Vhimr 0x80040005 0x553 k& @% ~0 s  m7 A2 }6 V4 _; ^

, i  G4 Z" e3 x  v  F" qSN也是类似。
& q( j6 B3 f, t. j6 x. T0 {# Z/ p! }
现在主要是,谁告诉我们MAC和SN的地址?$ |3 C/ r  W3 h. O3 y  X8 W$ l) |% p
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 $ `7 g* G! V! m4 ?$ F3 I9 O( f* {
一直想找到运程修改MAC和SN的办法,苦于无解啊
/ ?1 s* h' |0 M; B- j1 [
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 H# [) T3 T' I  O' ?
4 \9 r' E1 S: d2 M修改的代码早有了。到今天不会编译。; j8 x3 r8 F5 r6 a
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' q- j# j1 i" P/ {* l6 T0 B
  2. #include <malloc.h>1 M4 p, f' l) q
  3. #include <sys/types.h>1 e% H. W" U/ H/ j7 ?; U
  4. #include <sys/stat.h>, u  O" @" j, w5 k; C& K! K0 `# ^
  5. #include <sys/ioctl.h>
    3 _5 `* ?! I" x/ d, m
  6. #include <stdio.h>
    7 y  a) p' f1 ?$ a& b, ?
  7. #include <string.h>
    , U( ^6 z3 ~9 R) E9 A) [+ o- L% G
  8. / e6 ?, k0 O: c
  9. typedef struct {
    9 g! N8 `( s! a; V
  10.         unsigned int        e2prom_cmd_sub_addr;
    " y% L! `( D4 w1 M% g
  11.         unsigned int        sub_addr_count;( H0 S# S, C' C2 Q$ h0 D# f/ t
  12.         unsigned char*        e2prom_cmd_data;
    5 C0 q" c4 }2 A( _4 L
  13.         unsigned int        data_count;- q- G9 [& r- Y- H# D
  14. } e2prom_s_cmd;* Y; z, `" I! d1 Y* q! f/ o5 ]% B% y
  15. ! B' V% L# \( K) Z$ d
  16. #define E2PROM_CMD_READ 19 M! ~, V2 f8 K! ]8 J# c+ |
  17. #define E2PROM_CMD_WRITE 2* O, i% p0 K) F& o$ a* ~
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16") f3 Z( N  Z) g3 ]9 N( r. {; B

  19. # A% @( ], J; I6 Y1 j
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ y7 g( L# d/ J% v! l
  21. {8 K; o: M% K- R! m6 X
  22.         int fd, ret;
    & N! G0 p& n& K" X  s. M
  23.         e2prom_s_cmd arg;
    3 j7 v1 s6 U0 A5 h
  24.         unsigned char buf[0x18];. d+ u2 |: A* Y$ P" P8 h' G! s

  25. $ n* f9 Y0 N* d+ K2 n8 V( d9 H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' O8 q( D7 w4 [
  27.         if (fd  < 0) {) Y$ c2 ^3 e  G0 \! l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 A0 l" L3 [2 J0 E' g& B
  29.                 return -1;
    ; S  M9 F: z: s- {: Z( O- D
  30.         }% E" m9 x  q- A# V6 u! D5 X
  31.         arg.sub_addr_count      = 2;6 r& V" r2 Y+ j
  32.         arg.data_count          = 0x18;
    3 W, }) a- |- r- ~# [9 [4 C8 W
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 G) a5 D* I: d1 |. x; J0 `# E4 h
  34.         arg.e2prom_cmd_data     = buf;
    * M% C* c+ A# T5 i0 M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 |3 I( V" a6 c2 @9 M
  36.         if (ret != 0) {
    4 @+ x; T' b& T& @! G0 w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);9 p$ k7 [  m" C' @5 d1 @* y
  38.                 return -1;$ D( f( X9 i" c  T* C* }5 g+ S4 U
  39.         }) ~& V* y: D2 b. O6 K9 J
  40.         memcpy(mac, buf, 6);$ y" R! y" X* _1 P
  41.         memcpy(stbid, &buf[6], 18);
    ' |* X3 k2 s0 [2 x. h6 Z" R% j: i* Z# ^
  42.         stbid[18] = '\0';4 |4 E9 ^# W6 d. a

  43. , m. x7 t2 s* _( B8 A( n4 \
  44.         return 0;& k+ p8 D# `; K1 p" l8 {
  45. }- _1 C' R7 r1 L; _

  46. , X. F; L2 `, A2 b4 O9 Y$ o- d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    & j: }; L3 U& I" E$ N0 d
  48. {
    " Y. ^/ D" M+ X  d* _( F/ t1 y. h
  49.         int fd, ret;
    % a( F5 i! E+ _9 \6 `3 d+ Q
  50.         e2prom_s_cmd arg;
    9 w7 M" M/ y. {6 h1 S
  51.         unsigned char buf[0x18];
    ( P+ T2 u* E5 m+ X  {( d6 r9 r
  52. # k8 I2 B; p7 }# q" ^1 q
  53.         memcpy(buf, mac, 6);
      B, w7 p: j  M% x: y0 ?) x
  54.         memcpy(&buf[6], stbid, 18);( q, P$ }; G2 p  c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ I- y* n8 B$ H
  56.         if (fd  < 0) {
    ' i* B  S* x% \' d' R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " j/ {! |) m6 ~" o% A7 M) h7 ]% |/ F* F
  58.                 return -1;4 j# F: I: H2 n% G/ S( z8 r4 X
  59.         }* B; Q4 s* ^# ~( ^
  60.         arg.sub_addr_count      = 2;, `! c3 `$ b, Z9 y' Y
  61.         arg.data_count          = 0x18;* H- x8 o: z' e# H
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 w2 Y1 y( S. C
  63.         arg.e2prom_cmd_data     = buf;
    - Q3 b) T" b  {+ f+ i" ^! A
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 d' U* N7 w( m6 I3 D' ?
  65.         if (ret != 0) {
    4 H" s7 S( G' g8 J6 F9 v
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);+ v3 ]; I5 S' l/ a) T3 ~3 ^+ `; u
  67.                 return -1;- A7 O: l$ X- ^( ?. @* d
  68.         }
    9 Q4 S5 B" R7 p( m" E
  69. 2 g* ?* w0 ]) W# \" d- H
  70.         return 0;
    : h6 k, b% W7 r# n
  71. }
    % \' m) h; P; Z/ B

  72. 8 Z; M3 V3 }% u7 O6 B9 E# Y. U
  73. int main()" \2 J4 [3 _# o& q1 k5 A# U! q
  74. {+ S# s. y2 {; g1 z1 ~% z" E, l
  75.         char c;2 P! ]! V% d1 O; q, \2 @, j5 K7 i( X
  76.         int i, macs[6];
    , Y* h& H! n: [7 V
  77.         unsigned char mac[6];
    ; r( Y- F* ^' N2 M6 M- Y7 E1 M3 ?
  78.         unsigned char stbid[256];5 j" p0 [* Y( H/ w4 e5 r

  79. $ F8 z, f7 D$ D' ^3 `
  80.         if (readparam(mac, stbid) < 0)
    1 i  ]0 v1 r8 }% W% d  Y  i' \
  81.                 return 1;& Y2 j$ F, ^+ G/ l: [- ]

  82.   O7 w1 H# ]" N. B  n  D! C
  83.         printf("Current parameters: \n");3 [0 z5 B3 \1 T% j$ C1 L4 p% X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, ?, _: l  ~% ?0 X
  85.         printf("  STBID: %s\n", stbid);5 J: Z5 l: S' ]) m, C6 j1 V  \
  86.        
    & C) _5 c1 C/ b/ W- L! q) X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 y7 }% Q( h5 s3 U$ ^8 r( k/ ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 ~* R$ G: J. p) v; J# z. A
  89.                 printf("Input MAC error\n");
    9 f9 m# Y5 e6 j+ {& P7 c
  90.                 return 1;
    / v; d8 p( e4 \' z4 j, L$ q
  91.         }2 ~9 B4 F! U0 E% {7 Y* f
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' S2 @- N1 E! ]6 Q) Q
  93.         printf("\nPlease input new STBID: ");3 J* \0 F7 U7 c
  94.         scanf("%s", stbid);
    # e2 w0 K' t9 F9 m( f
  95.         if (strlen(stbid) != 18) {% R6 x% T, e8 b% p1 m
  96.                 printf("Invalid stbid\n");9 o4 x3 D0 X4 Q6 w4 E5 s5 P* Y8 |
  97.                 return 1;" z( p" A/ h6 F0 O0 H3 L
  98.         }/ `5 J2 S  b4 k) a3 S, |
  99.         printf("\nNew parameters: \n");$ ^  ~+ l6 w2 e; u, o: x
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 N, q  R/ `# X8 p7 F; \% I& n6 T
  101.         printf("  STBID: %s\n", stbid);
    / I% D, n% M6 T, l! q& [6 K
  102. 0 k9 E# R* W2 \( J* B. h' O; j" P+ }8 h
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    " Q4 u) U3 C6 R' V; Y
  104.         for (;;) {
    ( G' j/ @" Q* e# R' U
  105.                 c = getchar();+ l, f! h' C' y
  106.                 if (c == 'y' || c == 'Y')
    1 ^4 w$ I. C7 K7 ]5 H3 ^
  107.                         break;
    ; j1 J  R- d% D* J# k# g: V
  108.                 if (c == 'n' || c == 'N') {
    $ {8 K  \% v" r
  109.                         printf("\nAborted.\n");
    0 F! B3 V4 ~7 z% J
  110.                         return 1;
    8 I5 u/ y' a2 M' a. z( E7 K
  111.                 }
    & V, a, ^; r8 C' r
  112.         }
    6 _0 s8 P/ _. X  j
  113.         if (writeparam(mac, stbid) == 0)
    * j( Y, v8 D0 \( g5 b
  114.                 printf("Parameters changed.\n");4 e5 F& V( g0 u  X3 l3 d. Z# o7 x
  115. 3 K0 ~! i! F+ _& h+ n) H' B
  116.         return 0;
    " v6 h6 O3 `/ V) ~/ Q0 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 ; g2 N" Z  z: F
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 v: a" W& i9 M& D$ U你用的编译命令行格式是什么?2 i, X7 ^4 P( T7 n
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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