查看: 17362|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% Z5 z& \! ^6 x+ W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig' n  j, y* a- J4 B" T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ u1 f; b6 s9 H7 y- t
usage: himr <address> <value>. sample: himr 0x80040000 0x09 j, h. s' L. D( z# x; G9 L' V5 ~2 q

- C% N: r  j  p# V5 B& n
2 }5 G* Q2 Z: E7 s不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& R2 V6 I: j8 ~5 {, Z
5 @. }6 Y' s6 v$ z) Z
补充内容 (2012-3-8 09:42):
7 S% h% q1 N. E, h( ?- r* s* P; c9 phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% ~. }: ]% f1 G0 W
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。* s$ ~$ W9 v1 J/ e& {
' H" t: v7 E0 \/ L) w
himr <address> <value>. sample: himr 0x80040000 0x02 A0 y" D  n# ?( ]& H; \6 {. O' w
1 _4 o# ~5 S* l* `
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# a( {* q# r6 c# s- |4 a- r7 f% U
himr 0x80040000 0x00
' h% W6 u( o1 H. v0 k# N1 Fhimr 0x80040001 0x11( G4 U1 A  S0 M/ [4 ^; T! ]/ O
himr 0x80040002 0x22
! W3 C: q9 h5 W  V1 i: hhimr 0x80040003 0x33: B8 Y+ n3 s* L4 W' w
himr 0x80040004 0x44" o5 R4 Q. W3 @' @' S0 M3 |% C! P
himr 0x80040005 0x55
" R; d# }- Q2 q( U9 U" ]* D' Q0 b; W- z( N* J6 R/ o) G8 b
SN也是类似。
, C6 S, y* @. ~/ G( |( Y7 G3 c# i6 I, O/ U
现在主要是,谁告诉我们MAC和SN的地址?
1 r; E& b, s) I) t4 E
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 1 h$ o4 `. r# m
一直想找到运程修改MAC和SN的办法,苦于无解啊

% n* h2 ?% m: Z1 W* e" _/ ]7 k+ m源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
- Z4 D. X; i; V  U/ K. k& E! o
  Y- C: a4 V) m: T# J修改的代码早有了。到今天不会编译。8 u6 Z  q) j4 D7 Y  {: G6 Z
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: Q9 c9 V; }# E2 X2 s8 m
  2. #include <malloc.h>
    % r  p- B$ a. o6 i, n1 n8 h* N! Y
  3. #include <sys/types.h>
    ) `( ?- h7 t" Q- Q" z+ B, v$ T
  4. #include <sys/stat.h>* [  \7 B$ P4 ]$ S  m& m, u
  5. #include <sys/ioctl.h>0 Z- D& ~$ H& p4 [, _9 z, p* B
  6. #include <stdio.h>0 x6 U% V% x9 f$ u+ r
  7. #include <string.h>9 I1 o2 o2 {$ D# C# B

  8. . {! t3 g  ~$ G. ^  m8 R
  9. typedef struct {
    - B6 r. S. S/ M- l! {$ h
  10.         unsigned int        e2prom_cmd_sub_addr;3 u$ |" B, H& a- K: x
  11.         unsigned int        sub_addr_count;
    . E, q7 x6 F7 ~/ h: ?
  12.         unsigned char*        e2prom_cmd_data;6 m2 w2 y7 R3 Q/ D# i% ^# [; l
  13.         unsigned int        data_count;
    & V- B: S4 ^4 O5 Y
  14. } e2prom_s_cmd;
    ( o7 P2 |! U, b* u$ R6 k) u/ m! h) t
  15. ( Y! H+ V( p6 e7 P  X
  16. #define E2PROM_CMD_READ 1
    1 J0 a, v1 C$ z; I' V. m
  17. #define E2PROM_CMD_WRITE 2
    " }/ c; Y7 b7 @1 E& G9 x4 J
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"- \: N# W8 w$ ?* ]

  19. - n. C( T) ]0 b
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    . l- E/ E) @$ E6 S  f; ~
  21. {
    3 A& m! V0 S8 |+ C0 B; y8 }
  22.         int fd, ret;
    7 o+ f2 n! F! f5 J! H2 ^4 |
  23.         e2prom_s_cmd arg;, b  a$ N. L) s0 Q
  24.         unsigned char buf[0x18];8 {6 x0 s/ d# y* X0 C. w5 Y7 S! n8 X8 S
  25. 5 @* `1 c" w2 f- \$ b" x' S7 T8 }
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 C- P- C7 b  j: l
  27.         if (fd  < 0) {, t1 m6 x/ e- A! J) {# Q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 X3 ~! c7 a+ D* ]* J
  29.                 return -1;
    3 l+ ~* d; E" _8 K7 A( n' M
  30.         }
    5 r' Z: {+ `4 c& x8 m
  31.         arg.sub_addr_count      = 2;
    , `% `3 V$ N- z7 w
  32.         arg.data_count          = 0x18;- Z0 ?3 f. R, h0 ]
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ! C& j  G  u+ F
  34.         arg.e2prom_cmd_data     = buf;
    1 e) e/ o4 A3 o; f5 q$ E
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. e; _! b  @% B4 J6 T
  36.         if (ret != 0) {/ n# Q8 A7 z3 j
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 o7 b- A- }1 S
  38.                 return -1;. h4 h4 X! J" ^: \& x5 A
  39.         }) c$ E6 x, a& g7 e% S
  40.         memcpy(mac, buf, 6);  U3 `6 c0 d: X* d# s
  41.         memcpy(stbid, &buf[6], 18);
    ! i) B% U0 u3 X( t; U
  42.         stbid[18] = '\0';
    ) x' r, L% A# O! V1 c

  43. - I/ W, c) x3 Y% R. e5 i) I
  44.         return 0;7 J4 w5 M& X7 V9 z  v# ?
  45. }, G8 c1 e! c; t2 |$ t3 j7 c

  46. & J  U/ s7 S( `6 L9 U
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ; Q1 r/ w0 L$ u6 _, k& L
  48. {
    9 q3 L# z& f# l# s4 ]$ r
  49.         int fd, ret;3 }  K9 H, U( `: d1 X1 L
  50.         e2prom_s_cmd arg;8 |$ Q2 t! A8 p& L& p2 p8 H
  51.         unsigned char buf[0x18];4 E; _, K! {; V+ D+ q+ I

  52. ; S7 f% Z$ u( E& L- ?1 n4 z3 N
  53.         memcpy(buf, mac, 6);5 O  k" y  l  \' B# S8 `
  54.         memcpy(&buf[6], stbid, 18);
    5 {( Y, c* b- B
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / X# G2 k+ v$ d1 D& Y3 e
  56.         if (fd  < 0) {: r+ Q6 ^: X" z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 c4 @; v: Z' L0 ^1 |- I8 l
  58.                 return -1;" I, W( E3 ^4 R
  59.         }5 }* J* M) \9 Z1 j1 {
  60.         arg.sub_addr_count      = 2;
    3 d. Q  H* N# a5 }5 ]/ g# a# Q- _% t
  61.         arg.data_count          = 0x18;
    4 W, r7 B# _; d$ a  ], q9 M
  62.         arg.e2prom_cmd_sub_addr = 0x290;3 W4 k& Y, B3 B1 {5 B
  63.         arg.e2prom_cmd_data     = buf;. T1 N+ ]( S( v8 X
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    # M7 O! Y2 D7 {: k/ H. w0 k4 V
  65.         if (ret != 0) {8 r; N# I* q0 n" }
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    $ E1 M* ]' A0 u# R
  67.                 return -1;$ e/ H3 k' z( @3 s" i# s
  68.         }% e; R6 }& i+ E' S& y4 F" X

  69. 9 I1 G0 w  q! h' E5 O+ B$ O3 B* ^
  70.         return 0;. U0 y- `+ @& R
  71. }
    9 X/ [) V9 u+ }1 Y) F
  72. 4 F) W& H  r* H9 G% l# O
  73. int main()
    , {, \8 t* Z% y) R3 s% L+ B5 V7 h
  74. {
    7 u1 U' d/ s8 L. G9 b6 u# q0 X3 q0 _
  75.         char c;
    : f8 L5 G# y$ [+ m  q
  76.         int i, macs[6];. x& q6 `  }4 _% I4 N
  77.         unsigned char mac[6];
    + J7 i  G7 m/ g& f5 K
  78.         unsigned char stbid[256];1 G5 w6 f+ S  C

  79. ) _7 [* d8 w2 V. O' V
  80.         if (readparam(mac, stbid) < 0)
    8 ]4 F# s5 z9 a- y/ D
  81.                 return 1;' E6 s; d; l, b% y, p! u

  82. 2 S3 @* C0 o3 v+ S& C) \7 m& o1 W
  83.         printf("Current parameters: \n");; I* @3 ]# r6 r- G7 @8 d' k
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; h% Y8 z& Y& n+ s
  85.         printf("  STBID: %s\n", stbid);; w5 o4 s' W( w9 m: F" ]2 M1 N
  86.         : ^6 a' p* t3 J( b! i1 ]- X! D; o
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");2 ~& z/ `; F- w6 V: M/ q3 l5 ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( @1 Q$ d! q! V/ r; y2 H* G" n8 g
  89.                 printf("Input MAC error\n");
    2 p$ |6 p$ \: S( r" M
  90.                 return 1;
    3 u- b% M5 b; z1 x2 a; j
  91.         }
    ; q! ?. j7 K7 `% Z9 f
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% N; W1 m7 t* u
  93.         printf("\nPlease input new STBID: ");) @( T  P% i  s  n+ p2 {
  94.         scanf("%s", stbid);
    ' [, R1 k1 N/ u+ x1 }4 p. C0 w
  95.         if (strlen(stbid) != 18) {
    6 B$ r) |& F; L& ?9 p* ?
  96.                 printf("Invalid stbid\n");
    2 h: ?# C4 o7 B( P
  97.                 return 1;0 r2 A: B3 L2 U! p6 G
  98.         }/ g+ J+ n  R" v: f5 z! E5 O  @
  99.         printf("\nNew parameters: \n");) O3 D3 C. m- d; S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 k8 k$ y5 @1 }+ w/ r: L9 F
  101.         printf("  STBID: %s\n", stbid);
    , b5 C) V. G6 O, X2 Z6 ~/ f2 e

  102. ) Y2 }" P& W  d1 u- [! h6 N
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ! o3 t% E* B7 k3 a3 |
  104.         for (;;) {- L% P! G1 I7 |3 C
  105.                 c = getchar();
    6 p" y. ^! H; [
  106.                 if (c == 'y' || c == 'Y')+ g: E5 m3 U4 X4 P4 e
  107.                         break;
    - R& O$ s$ Z" K2 u
  108.                 if (c == 'n' || c == 'N') {1 Q5 t: b+ c$ A& {) a2 {
  109.                         printf("\nAborted.\n");8 f0 k9 V3 N" U! {- W) |6 {' V
  110.                         return 1;
    . |4 H# f* R, k
  111.                 }
    . e' z5 U9 y- J$ S# w' I  u' q: B- q  c
  112.         }2 j. C: ^% V, W7 l9 Q( f8 l
  113.         if (writeparam(mac, stbid) == 0) 7 Y, B, ]# ~; g! r) s7 N
  114.                 printf("Parameters changed.\n");, M. |; ~6 l& \- Q, H

  115. ( P; o9 Z' A: q! N' Y
  116.         return 0;
    5 D% q/ _) ?9 `  ]! k. a
  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 0 ~( c8 D1 p0 v$ m
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

# [( _2 E+ o( f# b5 B8 U你用的编译命令行格式是什么?
7 f/ Z/ r, l% \7 u. S
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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