找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15718|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    7 W& B; `' s8 x
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . Y2 q% ^; |6 f* ^
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:! M9 I0 Z1 ~/ y* I
usage: himr <address> <value>. sample: himr 0x80040000 0x0( V! I  K( ?3 e+ x# A* V$ s
' v0 m/ N; K+ r4 D
' N9 B! a( v+ c% E
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 {, |% R$ `, R: n7 O$ L
7 C  S6 N! P: G) p3 |6 t* g
补充内容 (2012-3-8 09:42):( T  l) ~, }( m6 h& \; G
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. t+ T* b0 c2 D! g  [* I/ \8 y" |
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。# k3 e4 N. Q4 t% [
: D8 L+ `- ?2 Q3 z
himr <address> <value>. sample: himr 0x80040000 0x09 `/ D' K, F+ x) Q/ n6 m, N4 f2 `3 H
2 M% N/ ^3 R( T% m# ^& y  m
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  }& Y3 k" `& a1 r2 \
himr 0x80040000 0x006 d' t# R# g  B
himr 0x80040001 0x11
& d% C  ]" i, s7 Mhimr 0x80040002 0x228 ^2 @) w2 T! m, \( J; k. [) E
himr 0x80040003 0x33
9 s5 T- I$ }3 ^  s  Ihimr 0x80040004 0x44
1 z2 V! v( x1 {- @9 I  ]! i2 ^himr 0x80040005 0x55* p- l8 D/ U0 B/ B
; p9 n9 b5 d9 r9 O1 o) R- l0 d) z9 B
SN也是类似。1 c* b1 A0 Q; [3 Z" n6 ~

1 f; b8 P& h* Q2 `6 I4 K现在主要是,谁告诉我们MAC和SN的地址?5 _9 y) G* P( e8 }
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  w7 F# Y8 ~9 W5 |一直想找到运程修改MAC和SN的办法,苦于无解啊
7 v/ @9 {8 x. F& \3 m4 |; j$ C
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
7 q+ q: {, c3 n9 M2 v% f4 o3 b4 W3 l8 Z8 q! _) v
修改的代码早有了。到今天不会编译。
* W7 F. {2 h# [! ?# _, k: T需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , {0 O; X) T  m! X0 K: `8 L
  2. #include <malloc.h>- |/ d8 L1 r+ r: W6 R
  3. #include <sys/types.h>4 V- }  Q- e/ I- a. n& G, s0 J
  4. #include <sys/stat.h>
    % Q  A' R0 \" k+ N7 P
  5. #include <sys/ioctl.h>  B3 }* B7 X* n0 J7 I
  6. #include <stdio.h>
    ; X6 N0 v; j9 q
  7. #include <string.h>
    " B' Z5 l% y9 a  k# [8 P, ~3 Z
  8. ( K) G4 H  ^8 h1 t- N5 U6 \; \% k
  9. typedef struct {: t. T" J8 i& [* V. _
  10.         unsigned int        e2prom_cmd_sub_addr;
    $ s* i2 |  J  |; O* u
  11.         unsigned int        sub_addr_count;
    # g$ N' v9 t& c/ I1 Y
  12.         unsigned char*        e2prom_cmd_data;
    3 ]' e0 G' s* c5 G, o% v
  13.         unsigned int        data_count;
    0 B) y  U4 F1 O' |& R4 q2 p  P
  14. } e2prom_s_cmd;
    8 x9 i' l) Q( \+ r

  15. 3 b) s: b; q- M' _% U
  16. #define E2PROM_CMD_READ 11 V+ ^7 \6 U$ {6 t
  17. #define E2PROM_CMD_WRITE 2. z3 o  \2 D% w8 i/ W2 g
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"- \, `! K4 a+ R; ?6 a: v

  19. - w2 P2 D0 F3 G- S# }% A7 _( l4 R
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
      C  f5 Y) M, N& w
  21. {" O1 w6 g3 {4 y' L+ U
  22.         int fd, ret;5 S3 L2 y2 S! X
  23.         e2prom_s_cmd arg;* _/ y# v/ p$ s5 W: k# T
  24.         unsigned char buf[0x18];" n7 x' M' m$ f0 C/ c. J) k
  25. 7 j, a( `, ]; `! C: y# X' z2 e- R
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; @; c4 `$ Z! a1 [7 Y! X) C/ ]0 F
  27.         if (fd  < 0) {
    - p) E, n8 L- e" M" R0 e6 x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 Q$ v/ b( ^" a: Q
  29.                 return -1;
    % o8 ~6 U. Y* _6 y; v: ?$ U
  30.         }
    ) G4 p; Q# J' q6 c, f8 h
  31.         arg.sub_addr_count      = 2;
    0 g2 n) v( J* C& J9 I/ Z+ K
  32.         arg.data_count          = 0x18;: o' M) R' R" {8 U) C
  33.         arg.e2prom_cmd_sub_addr = 0x290;$ l5 c6 n: J! h8 t$ |+ ^" x# `. o
  34.         arg.e2prom_cmd_data     = buf;, t1 w4 x/ V; G8 U: H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' T5 Y5 s% [0 Y3 q/ s
  36.         if (ret != 0) {2 K8 g2 H7 T% z+ L" J0 {/ j
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % e# T1 ^% G$ X2 K; H
  38.                 return -1;
    ( x4 y. M  v: _8 j! J' Y8 B
  39.         }7 m& J' O  P* P( [/ E
  40.         memcpy(mac, buf, 6);6 |( m* l6 z# N" N
  41.         memcpy(stbid, &buf[6], 18);
    9 j" r( A' j5 n; w+ V
  42.         stbid[18] = '\0';
    " L/ o9 K. k1 b; ~5 e! C* M) q

  43. " R3 O% [3 \8 S6 q
  44.         return 0;0 D+ f4 y- s: G) c) s
  45. }
    0 _4 z# R& w1 S! ~! s

  46. , H7 U$ h' F% o. |8 {  f: X9 B
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- _" Q; ~, J0 ^9 C7 O
  48. {
    * y, r! x7 E9 x( \7 s- z. G
  49.         int fd, ret;
    ! d9 [8 D: r! Q- V. j/ C7 _. d
  50.         e2prom_s_cmd arg;
    0 S. o) Z# N# F8 ~
  51.         unsigned char buf[0x18];
    9 @: M- {. ?3 J. K* m9 x

  52. 6 ]& S7 u6 O6 o3 p- t
  53.         memcpy(buf, mac, 6);7 V' X" d$ w& f) ]
  54.         memcpy(&buf[6], stbid, 18);& @5 u* }8 Q; z- {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 M$ Y6 d5 c; S0 d
  56.         if (fd  < 0) {% w7 f3 @0 v9 r' M1 |( ]5 u/ w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 C: R/ H6 P* g1 q' D* P' Q! Y3 h
  58.                 return -1;
    & @7 f! K1 N+ [  c- c& y; T' p
  59.         }: W  I5 D0 w. s8 D
  60.         arg.sub_addr_count      = 2;4 V- W5 \8 R  v" G
  61.         arg.data_count          = 0x18;
    2 }" P; H& {, ?5 x  `
  62.         arg.e2prom_cmd_sub_addr = 0x290;+ Q# c3 K7 x- b7 m4 m
  63.         arg.e2prom_cmd_data     = buf;* l. `- m+ T/ X: Z  _, e
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    % [' ]3 d- r- z% w
  65.         if (ret != 0) {
    9 s0 ~' @& k! C  @8 w6 B
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ h3 }/ q: H% G- T% S/ \& p, s
  67.                 return -1;
    4 I9 |. T0 i" C( n# K
  68.         }
    , W9 n+ D) b( L1 M/ {  Q. W

  69. 3 f) q% e: M3 j% n) ?6 b
  70.         return 0;% ]" a5 F+ d$ B/ g3 O9 J% X
  71. }
    ' W: {8 k9 H3 o8 }

  72. % M2 Y5 y6 V9 u$ O+ P# Y# K
  73. int main()8 z1 R5 R4 A8 l6 Y
  74. {
    ; j1 i) x) G1 V! Z4 p+ U* ]) C+ P
  75.         char c;
    ' y4 ^5 {7 W- s1 I4 l/ ~
  76.         int i, macs[6];3 J7 y, Q% d$ a3 l9 u! I& h. }) H4 y
  77.         unsigned char mac[6];2 E8 \+ n7 K% ]7 F0 r. u
  78.         unsigned char stbid[256];. e4 ^4 v' M. O! E* J9 Z
  79. ) n4 F7 C  o/ n! ^
  80.         if (readparam(mac, stbid) < 0)5 e- w  x. A6 K. c7 j8 ~
  81.                 return 1;+ z" \. ]' \  t! n3 I
  82. 8 ]' v- |' P( _  [4 V
  83.         printf("Current parameters: \n");
    9 s5 p7 d6 C- b
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : f! T' \3 ?' w9 A
  85.         printf("  STBID: %s\n", stbid);
    - K9 ?* Q- H$ {+ f% B
  86.        
    $ M, b  {, Z. P  e8 h
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : C9 g8 d8 D. ]+ B8 X! |
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 L! p0 \6 Y8 r7 j  k/ Y0 l
  89.                 printf("Input MAC error\n");0 [- W9 _9 M' ^) A1 g! \& S& m
  90.                 return 1;
    4 H( U$ H5 _8 q3 y
  91.         }
    ) j6 m4 z( F" g  J3 _% J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ @; J' f- ?5 Q# B
  93.         printf("\nPlease input new STBID: ");
    ( i: p. O& y! e, U5 c/ w7 W, |
  94.         scanf("%s", stbid);
    9 j# f  j7 `( ~3 z$ C$ ~7 T" a
  95.         if (strlen(stbid) != 18) {9 x9 Y% f0 X4 C# j0 q8 @4 Y
  96.                 printf("Invalid stbid\n");! K4 O0 E& j6 K& ]! b1 ?$ i
  97.                 return 1;
    * n2 V1 l. I8 k' m/ l
  98.         }/ O0 S9 B! U% B' C( K' s; @
  99.         printf("\nNew parameters: \n");' _& ]# U9 e( A2 V: f
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " T0 @8 R  W) T
  101.         printf("  STBID: %s\n", stbid);
    ( [  o' J2 z4 f$ b, x0 {
  102. , Z) y1 V3 ^  Q6 f* q  ?
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    6 Q" l* _/ k9 D% q8 c2 @/ ?
  104.         for (;;) {: @# z" _+ O( @7 k' L7 @5 M4 a
  105.                 c = getchar();4 ?& n& }6 h& f, L/ O
  106.                 if (c == 'y' || c == 'Y')
    3 \" y" Z2 X; C" [
  107.                         break;
    - V6 C) m; N2 {% n& y
  108.                 if (c == 'n' || c == 'N') {2 u. z% q( @9 }. |$ K% p
  109.                         printf("\nAborted.\n");
    # i+ R7 P0 b6 }
  110.                         return 1;9 L* o; W! C. S; h$ B- W
  111.                 }
    # z) `8 ?( B1 P
  112.         }
    ( B/ S( m( U9 B4 W; [( `
  113.         if (writeparam(mac, stbid) == 0) : a- H% ?7 v$ _
  114.                 printf("Parameters changed.\n");
    # }! Z8 ^) z8 M, c" D* I

  115. 2 _8 d8 L- V* r4 {( O+ M
  116.         return 0;! m( F8 h" D* Q' i6 |/ |: D
  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 1 G; v7 m9 N/ y3 n
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
0 l. `. \6 Y8 ?+ |. p7 M4 T; ?
你用的编译命令行格式是什么?
! }" x. Z- p1 m) I8 }( ]
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-3 23:42 , Processed in 0.024053 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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