查看: 17459|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) f3 g6 I; G* N7 W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* C& N; L; A& P4 q' {3 b
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
  _( V# d- u( A" dusage: himr <address> <value>. sample: himr 0x80040000 0x0# M9 V% [* a, s6 t
* ?9 R9 `+ @$ [
; U: S6 D! B1 m+ {
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 r1 W6 z5 _6 r6 C+ V' X% R! ~
1 ~% L* o0 {3 y0 h1 ^( U0 E
补充内容 (2012-3-8 09:42):
+ j3 s; `2 }" a2 ^2 ~6 ihttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! J8 ^8 z3 Q' H9 A( q/ j/ r; e  ]
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
6 q' o2 o% Y7 g! E  g5 Z
8 ?1 T5 l; o7 F" Fhimr <address> <value>. sample: himr 0x80040000 0x0
$ }: ]& {  n0 G7 w
% Z0 K/ Q: v( ]例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* g0 }4 c. n' _
himr 0x80040000 0x00; c6 d$ A) c( e3 L( p0 z( w/ ^% U; x
himr 0x80040001 0x11
0 }, U: d2 Q& i! J; \. o8 F# \himr 0x80040002 0x22
7 L# c) O& C0 [; j* h& D% a4 c0 C. hhimr 0x80040003 0x33# d4 s4 L2 A- @- `
himr 0x80040004 0x44
" n  ]; {4 i  |# {$ C; K3 phimr 0x80040005 0x55
' d& g% N# t! Z8 z! |
  D" i  O: w8 }/ u5 {1 a+ eSN也是类似。
9 w. D9 n2 ]2 X4 {3 ~1 z
) v5 J. w$ o. A8 _8 G现在主要是,谁告诉我们MAC和SN的地址?
* G* c) S, g7 W: l+ u3 s/ i
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
. w5 j4 V; I1 J0 I一直想找到运程修改MAC和SN的办法,苦于无解啊
, C& d+ H) u3 m7 [& {
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 7 _& Q+ D! i& i* G6 g& F& `6 ^' A7 {
3 q$ |7 @, X# ^
修改的代码早有了。到今天不会编译。6 f& B% S2 L( P, ~/ |* |
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" p0 |0 Q+ z8 D4 t4 L* V
  2. #include <malloc.h>
    5 _4 U# |3 r" y8 e
  3. #include <sys/types.h>% L" W& Z7 F. S0 c! y  z
  4. #include <sys/stat.h>
    , A- \- J" {( U& D9 B" l0 g
  5. #include <sys/ioctl.h>
    , @% F/ ~/ C; _- ?8 l1 e# y& B
  6. #include <stdio.h>  y8 ~: l; J! x! d: ~0 t
  7. #include <string.h>
    # y8 S1 g7 e3 ?/ l" k+ w

  8.   J% J0 j# A- F) P4 d$ Z' \3 a
  9. typedef struct {2 d) `1 |$ ^8 {" Z1 I: k
  10.         unsigned int        e2prom_cmd_sub_addr;! k+ \% ~% i0 O5 C
  11.         unsigned int        sub_addr_count;; x# b8 R% p8 o0 S3 [
  12.         unsigned char*        e2prom_cmd_data;+ v; L, Z+ {! ^5 n8 q
  13.         unsigned int        data_count;
    5 P; J" Y& A' }6 V, V$ I( T
  14. } e2prom_s_cmd;. a; B: ?9 ]& C6 w+ H
  15. # R7 ^# s. u  M( D
  16. #define E2PROM_CMD_READ 1
    2 A' {7 v& w3 G( x
  17. #define E2PROM_CMD_WRITE 2
    & `' J8 M* {/ b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". L' m! r& O, F6 Y+ L

  19. + D6 }% |0 p9 x1 _' {8 k! i+ M5 b
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" S! p( _1 C, N; E
  21. {; O/ n0 z! F/ J/ U  i! w
  22.         int fd, ret;
    3 {$ H7 k+ k- h3 T
  23.         e2prom_s_cmd arg;
    , Y6 s. c' q9 W* |" B1 R2 S
  24.         unsigned char buf[0x18];
    6 y' p8 p$ J6 N$ N* M% u1 |
  25. , u% }/ E$ T  E3 E, P6 q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
      _3 @! f  C1 ?4 Q8 c8 c
  27.         if (fd  < 0) {
    # h4 _7 W  b3 Q2 _" a- S
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 t# [# J, p( u" P9 @) q+ T3 z
  29.                 return -1;
    : R  P) Z* X8 F: S
  30.         }% _) E* k7 W5 @1 y
  31.         arg.sub_addr_count      = 2;
    0 W8 ~2 i/ @- J5 p" I/ w
  32.         arg.data_count          = 0x18;! O. e2 X& h9 \1 i1 @
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / n# j) ^. T$ B$ Q& L
  34.         arg.e2prom_cmd_data     = buf;
    8 T# k5 R- V/ ?: J8 g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    . O7 u1 T/ m4 u( |* ~; C+ u, S# F
  36.         if (ret != 0) {
    " S: [- Z3 i; O$ h% d0 c% t; |0 Y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    6 Q6 E1 _3 O/ d) }3 C
  38.                 return -1;- r0 B& B! t. H) }8 e
  39.         }
    , o% d, e5 c: U0 j# e( G- M4 s) t
  40.         memcpy(mac, buf, 6);" S. ~9 L7 h# R
  41.         memcpy(stbid, &buf[6], 18);( m' T% \$ E" b3 K8 h1 d9 E
  42.         stbid[18] = '\0';. P1 j5 G9 w, c

  43. ' y; w9 B; f/ R
  44.         return 0;
    , V  M& n! a6 h: L% Q  b
  45. }5 c1 n& c8 [: R# r& ^

  46. 6 R0 D, B' k* T) f8 {0 a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- u4 _0 ?  _. W) x; m1 [
  48. {9 Z( F  s$ ^& N1 }. _7 _) V
  49.         int fd, ret;6 ]/ W  j6 n$ P8 d2 `4 W" H8 O
  50.         e2prom_s_cmd arg;! k! ]0 h! U1 w. [
  51.         unsigned char buf[0x18];( i$ b" a# ^- z6 i( M

  52. 2 T* L, i  |- ^- i4 Q( c3 D9 F
  53.         memcpy(buf, mac, 6);
      m1 Z, a% R3 x
  54.         memcpy(&buf[6], stbid, 18);
    ! z2 t8 o5 J: e- w8 L# _0 F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 K: D$ o: x) X2 k* c, o
  56.         if (fd  < 0) {
    ) L9 |: L; j# ~
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# e6 i- r  G+ h* R" p+ V/ G* P
  58.                 return -1;
    5 b7 x9 i2 y( k* y
  59.         }
    / j1 p" L5 O+ }
  60.         arg.sub_addr_count      = 2;
    7 D4 L8 L  P( |: r/ C0 p
  61.         arg.data_count          = 0x18;, ]2 k- l0 R" C8 {" x
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    0 W0 t( e, D; N. d/ X. v( r0 ^: B
  63.         arg.e2prom_cmd_data     = buf;6 ~. B3 p/ C% _+ x$ @3 h+ f" o
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 {0 t* }& w* |; F8 ^' _* S! _
  65.         if (ret != 0) {
    * V- T" e8 M1 S  E- C) ]3 [$ n( C+ n# L
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 d- D7 V1 R  I
  67.                 return -1;+ k4 Q- l4 M* Z, {
  68.         }
    " _; }$ f! R- i+ ^5 ]1 z
  69. - K$ ^: T; G8 e) o, S
  70.         return 0;
    : W6 @# `9 r  U$ W# l5 K  I# ], A! `/ F
  71. }- y! ^0 ]3 R' u! i+ d4 K. I
  72. 5 _" m* s: J* a7 D
  73. int main()1 s4 s" A2 u2 d9 e; V
  74. {
    ) i0 D( r) ?0 n: g
  75.         char c;
    0 ^' p8 x' b; C7 O/ @, {& e
  76.         int i, macs[6];
      u1 S: Y8 i+ v% @% j, R$ ]' p
  77.         unsigned char mac[6];
    1 {) Y- e. Y6 t2 w; B( Z1 `
  78.         unsigned char stbid[256];
    ( V8 w3 w, L# c+ a- }6 P  K

  79. 3 X( [/ _2 Y9 g
  80.         if (readparam(mac, stbid) < 0)
    * X* k$ m* D! e, w3 u/ U3 n" H9 X
  81.                 return 1;
    1 G  U. R8 C6 L1 T6 u2 _7 ^

  82.   P0 L2 K5 f) o! L+ `
  83.         printf("Current parameters: \n");
    5 a6 O! b0 N& @* V; y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " \  }5 h( _0 v
  85.         printf("  STBID: %s\n", stbid);
    9 V8 R+ V% ~( q" [) j
  86.        
    6 W8 J* h0 z% M( a4 U5 P$ k7 i9 e5 T
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. Z% i7 V0 [) Z3 O  L' t5 [  S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    " ]9 n. l7 v* a; H7 K
  89.                 printf("Input MAC error\n");
    & }. S. o7 C5 |4 y  r! i. ^/ U
  90.                 return 1;* X( r+ K" w. ^$ b! s7 T9 @
  91.         }  L2 R( `3 k+ u% k2 U; O
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( q* E0 S! l5 w5 o( V
  93.         printf("\nPlease input new STBID: ");- P4 X* S( \4 U1 [9 F
  94.         scanf("%s", stbid);1 T" V4 c9 ]$ W& H2 \  V
  95.         if (strlen(stbid) != 18) {4 v3 J2 n( y; l4 N+ ^
  96.                 printf("Invalid stbid\n");
    ; ^) Y7 Z' I* U8 C2 g) @
  97.                 return 1;- j# X& V; z/ x, Z
  98.         }
    6 s$ ?2 r: A5 M& S5 c
  99.         printf("\nNew parameters: \n");
    ! s4 F8 c: @/ ~) G5 I6 Q* c$ B' W
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / z  ?5 K: B! B* G
  101.         printf("  STBID: %s\n", stbid);
    ' g: F4 b7 i9 l) `, }

  102. " }" W' V' u9 f; s- O0 F& u
  103.         printf("\nDo you want to change paramemters? (y/N) ");( W- Z; T) R3 D$ L
  104.         for (;;) {
    ) X" t3 N$ S: _- B% m1 s
  105.                 c = getchar();
    & g7 s5 |+ c! c' S. n% w1 f% e+ \
  106.                 if (c == 'y' || c == 'Y')# O' K4 c& F& Q$ J* C- q
  107.                         break;
    ! F- B' r. ^% }* J
  108.                 if (c == 'n' || c == 'N') {
    $ q2 }3 }) ?! N2 K- ^* n) w! J- E
  109.                         printf("\nAborted.\n");7 m" C9 ^  W; w8 ?& E, r
  110.                         return 1;
    % T# x. P& D+ z$ p3 N/ N
  111.                 }/ S6 S2 O- ^5 e* R5 n: d7 ^4 t
  112.         }8 k2 ]$ Y/ Z  O# G( J: e$ i
  113.         if (writeparam(mac, stbid) == 0) 5 X% R$ d1 o* @) Y) E4 K
  114.                 printf("Parameters changed.\n");
    , b" s% ?! ]; _* b+ M0 O+ m
  115. ) e  \! C* _: N: T. W' ^
  116.         return 0;: w; `6 i+ w9 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 ' `5 D5 s) w) u. x& K
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 |, _" R, j8 h, X+ @. i; g& ]
你用的编译命令行格式是什么?
1 ~6 F% v/ z; D* d# U& 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客服返回顶部