找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15643|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; |4 @0 r2 S% \  h8 ?: l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . B# N3 b# c0 L3 h  h* T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:/ X, S5 W, F- t" `) J8 T
usage: himr <address> <value>. sample: himr 0x80040000 0x0
. ?; e8 }6 g9 D  P) X  J3 }" u1 @- m7 h6 w! W

5 q3 h7 j; V, P0 i不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?+ z$ H& u+ j+ E
1 o3 n0 X( w/ ~. m) F7 [
补充内容 (2012-3-8 09:42):4 T' o3 M. g, G" T9 E! Y4 A
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; W1 J3 @$ m  R3 w, ~8 P) G$ o这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。$ b+ ?. i* k& l5 i( c

- y, H9 g! c$ e9 R1 ^himr <address> <value>. sample: himr 0x80040000 0x07 R3 m2 Z# ]8 k0 s. [$ T

6 r/ T* |& w' a/ Q  Q7 s; v例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. R* p* \* ^$ @  z* }  H+ Vhimr 0x80040000 0x00* A, \9 P6 u0 `
himr 0x80040001 0x11/ M; f% Q8 _; O+ s/ V8 E1 t% B
himr 0x80040002 0x22( l4 o* V- _0 K( W. t3 ~7 j! d
himr 0x80040003 0x33! o7 }8 b. Z! Y' A- l
himr 0x80040004 0x44/ B, x6 g2 |" `; d2 `
himr 0x80040005 0x55: m) z# D3 o) _1 b% ^+ i& h
* n: n5 s! I3 ]
SN也是类似。
$ v9 K, X& g/ N) a* j, W9 W+ C) s' t$ f3 i
现在主要是,谁告诉我们MAC和SN的地址?
7 |$ G" e- n$ `% J
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ i+ t1 h1 I  @/ r1 m一直想找到运程修改MAC和SN的办法,苦于无解啊

' }' p9 U& k" I" H) e& U$ I源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
  U. j: ^( e. r0 s( [0 R
. q+ p: X. a4 Q/ c2 L8 O* a修改的代码早有了。到今天不会编译。
! n) t7 W+ ]/ [. r8 e- {* }5 s  p需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ n$ u# C& O( @# R! \
  2. #include <malloc.h>5 o! D# b- u' L* a
  3. #include <sys/types.h>
    * y0 e) H* {0 D. p% x$ z1 p/ l2 d
  4. #include <sys/stat.h>3 _8 j3 |7 ^( f! U5 [" N
  5. #include <sys/ioctl.h>0 c% \# i+ {4 l3 R, V) D' ~
  6. #include <stdio.h>
    2 t6 A3 {& M! _
  7. #include <string.h>
    ) R. t9 s$ [3 _2 @- a) j
  8. 0 b5 b$ @) B9 {, g; t$ u5 k
  9. typedef struct {
    - I0 ^( E+ d& z
  10.         unsigned int        e2prom_cmd_sub_addr;* F3 s9 H% E  S# \; d
  11.         unsigned int        sub_addr_count;
    + ~( ~9 `4 {6 g0 t& i8 Z
  12.         unsigned char*        e2prom_cmd_data;
    8 |0 w1 u4 b8 }2 V: I- x
  13.         unsigned int        data_count;
    . G7 O  H! H; f4 ^1 j) j8 R3 L
  14. } e2prom_s_cmd;
    3 R0 Y6 u  O, W

  15. 0 u/ M) s3 K& B+ D4 z+ G- o
  16. #define E2PROM_CMD_READ 19 Z+ _% q, a: Y2 W
  17. #define E2PROM_CMD_WRITE 29 O. S, Z8 |1 h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' Q+ B/ k3 ^+ e( i0 x" p
  19. ! w& p  H2 _, {6 S; O4 x' ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 O/ e) K0 z/ c8 `% h, ?* l
  21. {
    9 }$ U9 J+ [% _
  22.         int fd, ret;: P+ s' R$ ^3 k! x& L  p
  23.         e2prom_s_cmd arg;6 s- Z/ S3 ]. ?7 j. x) p! D" S7 q
  24.         unsigned char buf[0x18];
    ! h4 z# i9 M0 v, M

  25. % W: }; k. \5 J. j
  26.         fd = open(E2PROM_DEVICE, O_RDWR);$ O( A$ I3 R: o7 O5 H
  27.         if (fd  < 0) {
    1 d+ _# f5 U/ U% r% h) m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 d$ q: ~) f1 L2 X2 P* Y0 ~6 u
  29.                 return -1;/ j5 ~; t, }0 l1 ^
  30.         }( e; j4 D2 k% A/ K6 N
  31.         arg.sub_addr_count      = 2;
    4 K$ L9 c, Z' y, b2 v
  32.         arg.data_count          = 0x18;1 |/ R/ r2 P) \7 A: J6 X+ L
  33.         arg.e2prom_cmd_sub_addr = 0x290;0 R( I, E8 V4 d* J2 m6 w( y
  34.         arg.e2prom_cmd_data     = buf;, Z3 |5 c& h, d, e+ C
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , C( i- A0 P! w) N) U" X0 `
  36.         if (ret != 0) {
    . h. e% f* [% @/ A- j, k4 E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- P3 i( k& r- H* `' v
  38.                 return -1;
    ! U$ Z; G, I: v' Z" D
  39.         }
    4 t& S& k3 `% a5 {- W) A8 ?
  40.         memcpy(mac, buf, 6);
    . ~& r2 g' K5 `" o
  41.         memcpy(stbid, &buf[6], 18);- s1 [: k8 |# \. C& Z/ A
  42.         stbid[18] = '\0';
    3 u3 l! d' I0 P# Y% r0 p* K! X
  43. * F5 P. B8 v3 _- ^
  44.         return 0;
      y5 p4 Y5 J. @8 e
  45. }% ]# j* l4 D- s* o1 z, }

  46. # ^( z8 N% e) k% p" m1 v! O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 d+ i: P3 f3 ?& k8 i# W
  48. {/ x2 X+ @5 ?1 A/ v! ?; n
  49.         int fd, ret;
    9 }8 [( u7 v# Z+ M
  50.         e2prom_s_cmd arg;
    0 x& g; M0 ~0 q( O
  51.         unsigned char buf[0x18];" v; p# }0 h, p
  52. 2 H2 |4 N$ a/ Y. e! m% m: m
  53.         memcpy(buf, mac, 6);
    1 t$ J+ B8 H: E) c' u, E
  54.         memcpy(&buf[6], stbid, 18);/ ]8 G8 P: X9 Y# c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 m; |- y& v: C1 B4 d5 B1 \; w% _
  56.         if (fd  < 0) {
    7 A5 K1 ^) U# q' ^+ X9 h9 _
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 A( N. r2 G* e
  58.                 return -1;
    % {' W& @8 }3 g* d
  59.         }
    9 L& ]" P. F, E2 p% R+ a
  60.         arg.sub_addr_count      = 2;0 j  n# N" @# O- W, _/ U
  61.         arg.data_count          = 0x18;
    , P9 c% @3 s/ I3 H( _3 j  ^
  62.         arg.e2prom_cmd_sub_addr = 0x290;  B( l$ H! O8 J4 o
  63.         arg.e2prom_cmd_data     = buf;0 {/ o1 B% o8 b! Q& N; x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    % U: `( ]. [" h" b( M
  65.         if (ret != 0) {0 {0 l7 \4 u8 a/ V+ j- n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # J6 R; I4 _) R  F0 V
  67.                 return -1;
    2 C' n" K- Z) M- [8 I* j
  68.         }
    9 k1 M9 f/ _; A; m8 x  {
  69. 7 V- g; X/ ^% Q/ Q
  70.         return 0;
      l3 z- r7 V- D1 y0 O5 y
  71. }
    ' W% r! w2 Q) y7 J# I
  72. 2 E, P( Z. W1 u5 i- o, X6 M, |
  73. int main()
      S, A+ v8 Q" J* n
  74. {5 a5 Q9 ]5 w# N* [. l
  75.         char c;* m) p! P$ T. k+ }7 u+ P! j
  76.         int i, macs[6];; ~) Z/ @3 G* Z* L" f+ L4 ^0 `5 z
  77.         unsigned char mac[6];1 _/ S& k- C: w- N: A' I( A2 `/ B) l
  78.         unsigned char stbid[256];  ?+ S5 Z& R3 q$ k

  79. * F6 E: i7 j$ y  o0 B1 f
  80.         if (readparam(mac, stbid) < 0)
    . {, S% V( C5 G' o" U* R" ~
  81.                 return 1;
    ( \& p1 N) L$ n0 p& j- _' l

  82.   {8 f+ B1 O2 w8 p+ q- p
  83.         printf("Current parameters: \n");
    ) p. M" }; I% ~# Y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- Y& I8 `: h7 s, l6 U' q
  85.         printf("  STBID: %s\n", stbid);6 O( J/ [- M- ]
  86.        
    . ^* h$ ~/ Q  B
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");9 U, p+ z- a% d" Q# C
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ X9 m2 }2 E0 g2 A1 C3 D
  89.                 printf("Input MAC error\n");3 a- q4 W+ U2 g2 h  E3 N
  90.                 return 1;
    3 c! R; c9 A0 a) p( Q# k, R; \
  91.         }! F* t1 r7 [( \$ t' ^6 V
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' _9 n8 v7 t: n9 {+ v4 x
  93.         printf("\nPlease input new STBID: ");) x, S9 X7 y6 j; l5 |2 J" `
  94.         scanf("%s", stbid);
    2 @, V4 I5 n/ O
  95.         if (strlen(stbid) != 18) {
    / Y) H4 r: ^. D8 \, A0 T
  96.                 printf("Invalid stbid\n");7 x0 x' g" }  W7 f4 _
  97.                 return 1;
    # a5 O- y. v% w7 J) I1 o  c: @
  98.         }
    + c' Q( m; ^% B/ e: B. Z
  99.         printf("\nNew parameters: \n");
    / U* q- y! R9 M4 |  I1 X. s- W, X, k
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' J; c" z1 H' a  E& m
  101.         printf("  STBID: %s\n", stbid);
    ( c7 a; |7 e1 y8 d

  102. 2 F! g+ g9 v0 @& d( v# l
  103.         printf("\nDo you want to change paramemters? (y/N) ");) ?& A: {! s% }5 ^1 c# I' c
  104.         for (;;) {
    - V6 ~/ ?; _2 ^" Z+ T
  105.                 c = getchar();
    5 t- y7 B, y8 l# g
  106.                 if (c == 'y' || c == 'Y')7 g: Z" s2 I* |& f. {  s* u
  107.                         break;! Y/ f; p8 A7 Q$ ]! O6 v) B% g  s
  108.                 if (c == 'n' || c == 'N') {: F/ ^4 @7 B5 K: Z8 y
  109.                         printf("\nAborted.\n");/ m7 ~4 O* i$ c8 h* h" X0 h/ `
  110.                         return 1;+ A7 n* x% N( ^, V6 N' i  X
  111.                 }0 Q( H8 W. I9 w2 T* H  Q9 I  c4 Z
  112.         }
    : r& {4 s/ ?( [2 d7 Y8 M: @- \
  113.         if (writeparam(mac, stbid) == 0)
    6 E" i: e9 s% l! _9 d/ j" B# @, x
  114.                 printf("Parameters changed.\n");
    . K  E3 b' Q! ?

  115. 4 t  g- m3 {& [1 m1 ]& `8 {
  116.         return 0;5 i$ b7 ~( V: `9 P* d* j+ r/ Z
  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
( V9 D6 K* L) H4 E1 S4 D- c0 k在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( j5 x3 e& y1 H" }2 Y8 _0 i/ k/ Y* o# v你用的编译命令行格式是什么?
5 j! [2 y; c: a+ J+ t& A. _
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-21 14:07 , Processed in 0.024062 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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