查看: 17214|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 J8 V/ u" G& K. W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
      W4 v- G0 G/ f6 {% U
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* C+ g% u4 x3 {, n2 P# S; s* b
usage: himr <address> <value>. sample: himr 0x80040000 0x0
. o; V6 `# Z3 s' u, w2 k  U8 X) j$ S: ^
; @: M6 R' i% x
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( B& k' N1 j' m4 D+ g1 w
/ Q' R7 _- l: P* j. V* Y7 i
补充内容 (2012-3-8 09:42):
3 Y  H  R+ ?% d/ fhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' @2 s6 N8 U  k/ R+ D/ D5 k
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。+ E2 L, N2 X2 @& Q
/ M# Z. m8 ^. o0 i& r
himr <address> <value>. sample: himr 0x80040000 0x0& X# C" W/ B+ S+ M/ k5 r% A

# R  B. a$ o6 r" a% e- }2 O) O例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* V0 X0 h+ \7 u
himr 0x80040000 0x00- {& t5 Z' R! N; V; i6 G0 ~2 O
himr 0x80040001 0x111 p- `) e& m" m2 f2 P
himr 0x80040002 0x22
; {' b9 u* u. x0 A$ qhimr 0x80040003 0x33$ s) }. Z. V2 e; _% V, o' p$ V
himr 0x80040004 0x44
6 G  U$ y# i" [$ z' ?himr 0x80040005 0x553 p$ r2 ]2 f$ A: E
& R! J( m! @; n" T% {+ s/ U1 `, P
SN也是类似。+ ?, A9 P6 O$ _/ ~

! @1 X! F5 f& t: X6 ^( i( _5 n; a现在主要是,谁告诉我们MAC和SN的地址?
& Q$ j8 l) u/ q5 t6 r4 ?
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! n5 U2 t4 K: K7 l+ o. N& K一直想找到运程修改MAC和SN的办法,苦于无解啊

% @! D3 C+ Z0 t% E# g源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& n3 n3 q4 @  q! }8 ]& a' S0 l+ I
$ c  M' t+ {6 u! @9 {修改的代码早有了。到今天不会编译。5 }' Y5 ?, D3 s9 T; K6 x
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  M9 U  N& I$ V
  2. #include <malloc.h>( e/ g# e& e7 ], P* R
  3. #include <sys/types.h>
    ) l+ ]( s, S# [: P, c
  4. #include <sys/stat.h>( b- I3 s- D% a0 E3 F$ f! b
  5. #include <sys/ioctl.h>
    5 G# F( k( {* b4 [
  6. #include <stdio.h>
    + P- ]  s+ n3 Q- R. t3 w/ e, n
  7. #include <string.h>% d2 v& N& p) _5 W, X

  8. : l% t2 t' M8 d* n) k- k) y3 s4 s
  9. typedef struct {
    ; o$ K  T' j2 k
  10.         unsigned int        e2prom_cmd_sub_addr;
    ( l0 u2 U: A: N4 i
  11.         unsigned int        sub_addr_count;( }; Q5 F1 e, b; A
  12.         unsigned char*        e2prom_cmd_data;
    3 s! P3 H5 q3 Z8 ^- ~
  13.         unsigned int        data_count;
    - t- ~1 Y7 k7 V( j1 T; ]
  14. } e2prom_s_cmd;
    / I/ R+ S/ G+ o4 e; K4 Y) C

  15. ( [: a# O3 W3 W3 \
  16. #define E2PROM_CMD_READ 1
      x9 b3 D# ^' p/ _0 w4 j! r! |
  17. #define E2PROM_CMD_WRITE 2
    5 i) P* u5 X4 ~3 e& I' z+ ]
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( ~7 m) m$ P  }# s1 S" ]3 \

  19. 8 K9 z* E( D" A. e' \$ Q" o
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    * |" ?$ _( a8 p$ [
  21. {2 ?$ h- ?) ^1 {3 ~1 V; d
  22.         int fd, ret;
    - q; ^* q; d" o9 ]! v2 C
  23.         e2prom_s_cmd arg;
    9 D; `2 G1 ~( g: T( f8 {2 h% o" N
  24.         unsigned char buf[0x18];$ o1 S7 O. o  k( l

  25. ! X: ]& i; N7 U: m3 L& e4 U
  26.         fd = open(E2PROM_DEVICE, O_RDWR);& [6 V7 l! |; Y  X
  27.         if (fd  < 0) {- Y- }+ N! b# Z9 g! r
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ A& t( Y3 N( u! `8 a6 O+ E
  29.                 return -1;0 d. p! j, j) P( y
  30.         }% W4 Y  m4 Y1 A
  31.         arg.sub_addr_count      = 2;; C; `3 G2 [3 [/ [) n4 y& w
  32.         arg.data_count          = 0x18;
    2 p. @  I3 P5 H& m. T
  33.         arg.e2prom_cmd_sub_addr = 0x290;1 `8 ]) B, ]" j& K8 j4 k
  34.         arg.e2prom_cmd_data     = buf;" T/ s% k" {" \9 u6 H! O  d
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ( f% h" K7 W2 i7 X+ I; J; l4 K
  36.         if (ret != 0) {
    ; @4 e8 M; H" d6 j
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& Q5 N3 R9 e* Q
  38.                 return -1;
    ; b: `* V" e& i7 G8 P/ U, i
  39.         }
    / x5 r& u* G3 M+ m" L% E+ H
  40.         memcpy(mac, buf, 6);
    . U% K9 `$ _7 r. }5 N5 V% I$ A: p
  41.         memcpy(stbid, &buf[6], 18);
    % @. F' T! N, h% G5 I! d
  42.         stbid[18] = '\0';
    1 _) Y; v1 _$ I1 I+ g0 M/ E
  43. # X) r3 |6 f2 B! v9 k
  44.         return 0;, g5 W: G' B: d) e9 j# ^
  45. }
    4 f% G' F3 S4 b$ z2 F

  46. % i8 M) v3 \! \, `+ r7 e
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) B/ {1 ~- t, ^
  48. {
    0 x# ^8 p* i) D6 c: b* Q+ V2 d
  49.         int fd, ret;: ]+ L: [! `$ C# ^7 U' g
  50.         e2prom_s_cmd arg;
    ; ?  [% Y5 }( s# T
  51.         unsigned char buf[0x18];9 o) x4 A8 V0 E, L

  52. " |! |; b5 y+ G- u! }# w; t
  53.         memcpy(buf, mac, 6);' T" v4 O. u" G4 d
  54.         memcpy(&buf[6], stbid, 18);$ y6 }. k" j* i, ?2 V& I/ M1 D
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 q; H0 V: D0 l: z( [7 Z- G7 J
  56.         if (fd  < 0) {* B* ]: c& w  L" x' q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ |/ D1 Q5 |3 o$ W2 X
  58.                 return -1;7 w& f: ?. N6 v; G
  59.         }1 I3 N8 A$ O# c; Q
  60.         arg.sub_addr_count      = 2;2 B7 i7 @6 |' V( D& Q( x
  61.         arg.data_count          = 0x18;7 N1 s% d, O5 p, x) `. M' e% l
  62.         arg.e2prom_cmd_sub_addr = 0x290;' @# e  S3 Y) R1 Y( Q+ F
  63.         arg.e2prom_cmd_data     = buf;3 G% F2 e# I4 ~$ T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- F, m. |* j' H4 H2 B  R
  65.         if (ret != 0) {8 e# Q5 e; |# G2 P% H5 J
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    1 N7 q; Q( Q! [8 \- W
  67.                 return -1;/ u4 E( b% N# Y0 o8 L4 x7 y
  68.         }/ J4 r; p! O: N0 b% ]8 v, F1 r
  69. 0 n+ F; C/ V( x
  70.         return 0;& u# |) p' H- [3 J! g* P
  71. }, [; K! k& g" a& I$ ^# U

  72. 5 h: l) n/ y+ L
  73. int main()! Q3 y3 T( m, j. M
  74. {
    / c. }1 ~2 _# Q" V9 o4 f- n) j. q
  75.         char c;# `- p8 }4 f" H3 \, D4 [, r: F" J
  76.         int i, macs[6];9 F, x! s3 Z; E! q  v5 U
  77.         unsigned char mac[6];
    $ }; M3 X$ g8 h$ R
  78.         unsigned char stbid[256];
    & [$ q2 J. x; b
  79. & \. x. p% [) ~' F( N! H; ~2 J
  80.         if (readparam(mac, stbid) < 0)
    $ J" N, F, L! n' j2 B& Z" X- g) c% C, {
  81.                 return 1;' Q& Y2 L+ Y) ]3 O5 S
  82. / F+ u0 H( H7 s( ~: K5 _' T% P
  83.         printf("Current parameters: \n");$ u  x( ^) I- J0 U0 d
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & Q- O, \# J* G0 P
  85.         printf("  STBID: %s\n", stbid);, i3 [. l" s: ]9 @6 a. t
  86.         7 R" J0 T2 L3 S+ o, T2 i# y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 g2 E' @+ G* [. t
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 ^% n3 T% N- `6 h' X& G3 N
  89.                 printf("Input MAC error\n");" c/ R! ~4 u, D3 C. Z9 M
  90.                 return 1;
    / v- |+ c, n" s' O8 h, L8 Y! ~
  91.         }* d) @% m! E: K1 `6 `' |
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    7 C" K- `/ S' c
  93.         printf("\nPlease input new STBID: ");$ o& C8 G0 s* @; A7 X, n( f
  94.         scanf("%s", stbid);
    ' e4 z$ l/ |. H0 {3 U
  95.         if (strlen(stbid) != 18) {3 Y4 P* ?& E; P' {
  96.                 printf("Invalid stbid\n");# S. t9 U. F7 k5 T7 _  W
  97.                 return 1;5 z) \! I' x7 \% g+ D2 S
  98.         }9 W( k# k1 m/ o* [  i% E; N
  99.         printf("\nNew parameters: \n");
    8 v1 V) ]+ t: \  Y0 u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 }, d" w$ Q2 Q4 l2 d) t
  101.         printf("  STBID: %s\n", stbid);
    0 q: e0 g" M8 B; v

  102. 2 D- \3 K( U& k1 z
  103.         printf("\nDo you want to change paramemters? (y/N) ");$ K& q" x8 E9 p
  104.         for (;;) {
    # ~  {! c0 A! k' D
  105.                 c = getchar();
    " |, y* T* }: {* l1 V; E; `( }/ x
  106.                 if (c == 'y' || c == 'Y')* I+ {! J# S7 F
  107.                         break;# o8 n3 b& [  X  ~  Y/ J
  108.                 if (c == 'n' || c == 'N') {
    / ?: ]! d. G) ^2 v
  109.                         printf("\nAborted.\n");4 P! X, j+ `5 p  ^
  110.                         return 1;! `' S% R* {3 b* G) F7 A; r8 a
  111.                 }
    * x; K% O0 p5 R) `7 Q
  112.         }
    3 L1 K3 n4 t6 J: l
  113.         if (writeparam(mac, stbid) == 0)
    $ g- }$ ]7 U  _* Y8 F# t" r( h9 N# J
  114.                 printf("Parameters changed.\n");
    8 b, N& K! V$ w& V: Z' _

  115. ; g5 n9 O& I( i
  116.         return 0;
    & X4 _5 y, R1 z0 ^; H1 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
: q+ g9 C, T* F: L0 S1 ]) b8 v9 X) H在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

  @0 \; j. C$ q; {6 K- q! E# h你用的编译命令行格式是什么?
5 G' b$ t* G; E
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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