查看: 16852|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) y0 [) H, ?' O. z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig, J1 D- m3 D3 Q7 ]* ?+ @  X0 }: ]
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- i1 {4 q3 D3 j( M, a0 ^: b/ ^usage: himr <address> <value>. sample: himr 0x80040000 0x0. I  ~$ Q1 C4 ?5 B, b: a8 o
! ]; K; B5 X6 w  K' q4 T) T
$ c( J5 h1 T( G! i- A, E
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& N" }0 R  ?7 d8 z( c& z

: p' N2 q) ]2 m5 a$ a8 z8 I& |补充内容 (2012-3-8 09:42):
/ }0 z, u' I6 B$ G# H6 x) ahttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数; i5 p6 }- {6 S6 a  z/ e
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。& W! N' L& ?( {3 m
# x. d! Q6 \5 C
himr <address> <value>. sample: himr 0x80040000 0x0) q) H/ Q1 P* {4 O

: i# y1 e& Q  M- e; w' |* o例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
9 p' h8 o! v7 W) \9 v- \8 M9 Ghimr 0x80040000 0x001 H8 e$ S: Z3 z, h. w; p+ F3 ]4 [
himr 0x80040001 0x11: t' q/ y2 _! N! u! |' [! W* {
himr 0x80040002 0x226 d0 s! H- y% H- p9 `
himr 0x80040003 0x33
9 m5 S' _8 p: D$ i6 P. x* L: \8 Ohimr 0x80040004 0x44( k& _7 ~; j$ J+ s2 f8 N
himr 0x80040005 0x55
' D( V; Q* {. T8 u5 X. D3 z, C: M" X  F( W+ t. \7 U. _
SN也是类似。( ~5 y2 ^0 H) p" Y; k& j
" i; O- K; u; L+ `) G8 y* J
现在主要是,谁告诉我们MAC和SN的地址?
+ |' m5 A( Y  P; q/ n3 k
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 # t- E2 f" Q# ]2 H: }5 V
一直想找到运程修改MAC和SN的办法,苦于无解啊

$ _* ?' B) G& q8 h% X源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 h0 H5 J! ~# i- [
; }2 |7 G4 Q; U$ M. c修改的代码早有了。到今天不会编译。9 P. W8 I) R5 e- z0 T1 M
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + u/ t4 `; j1 [% M# u4 G* Q1 T
  2. #include <malloc.h>
    ( E5 X) l' A5 w) n
  3. #include <sys/types.h>/ v* F/ M! T% [# s. h) x9 X( j
  4. #include <sys/stat.h>
    9 O- _3 n; J# n. \9 g! O/ W3 w
  5. #include <sys/ioctl.h>
    0 m+ M, W! `- [
  6. #include <stdio.h>
    , U3 @% n$ v$ a5 e9 w6 z, P
  7. #include <string.h>
    3 Y) c7 |% T9 d* c4 Q9 E6 v
  8. , G6 J: \# B6 z9 K+ p7 J8 s2 U  n: k2 |
  9. typedef struct {9 m$ E+ l; g. I5 }2 `! k9 c
  10.         unsigned int        e2prom_cmd_sub_addr;
      s/ {3 A' g1 \1 C2 L5 e
  11.         unsigned int        sub_addr_count;
    - W( X, r) [4 p* e/ W& C1 s: v/ {
  12.         unsigned char*        e2prom_cmd_data;0 f5 ^- @( p+ j# G) r! X/ w+ t
  13.         unsigned int        data_count;
    7 ]3 [, N8 E: w4 x# R
  14. } e2prom_s_cmd;0 y8 {' b  n8 {8 G$ F3 P2 x% z# t

  15. / R" p$ F: q) X# g1 c' I
  16. #define E2PROM_CMD_READ 1
    # L" g# s2 _! X0 Y7 m7 K
  17. #define E2PROM_CMD_WRITE 2
    * `6 z9 n( U) p" F" s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", \$ O- o% l: X

  19. 3 d* }9 ]/ [" i& U  l
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    5 o% S( Z+ b5 Q3 i& P* p; }
  21. {' Z8 M$ r. V8 M5 m. t
  22.         int fd, ret;+ a% @" r: Z  f0 a5 d! G
  23.         e2prom_s_cmd arg;- @$ s; k+ {2 \6 U; I( T& W
  24.         unsigned char buf[0x18];. T' e7 D' @4 k* a2 y/ \5 J: x
  25. # E0 ?7 R8 S9 k6 i- m  G
  26.         fd = open(E2PROM_DEVICE, O_RDWR);2 D  L+ a0 Y8 _2 H+ L
  27.         if (fd  < 0) {7 b; u+ C$ z" z$ P7 |+ Y: K2 ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 r0 M  c/ a4 m/ n8 H
  29.                 return -1;
    % X+ f+ A5 Y) \8 o
  30.         }  f. \. v1 n9 ?5 ~6 {% Y/ Q/ u) c9 g
  31.         arg.sub_addr_count      = 2;
    & i4 H# [! S% {3 ]! y& O% K
  32.         arg.data_count          = 0x18;
    : A& W0 I! U2 ^0 X& `% L# E  _2 p. S3 ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;& H4 O7 \2 \+ D/ ~1 h8 E2 [' U2 i
  34.         arg.e2prom_cmd_data     = buf;) y: R0 B0 i- \4 D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);" h: v! ], v9 d5 W, P6 n
  36.         if (ret != 0) {3 w! j0 E$ N9 B3 d' `1 ?) i9 J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  m$ ]8 C1 i  K7 h+ n' `$ w0 x" }, b
  38.                 return -1;+ |% ?/ F. g& s' o+ ]6 J
  39.         }4 f9 t5 F$ S0 N6 q9 ]
  40.         memcpy(mac, buf, 6);
    * Y  O( @9 U9 z
  41.         memcpy(stbid, &buf[6], 18);5 m5 i5 j& g2 s3 ?" y
  42.         stbid[18] = '\0';( X& z0 i$ B1 w% g# L- }1 E0 X7 l

  43. ! N0 w  T$ d3 X! U) d: C: y
  44.         return 0;& a; `8 F8 |& H6 v; K* `" S, k
  45. }
    : V6 d: m. U% L8 P5 b! _

  46. / I; J! v# Y; N; w
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / v) \# Q7 e6 b' J# E
  48. {
    ! B! M6 b' w% n  O
  49.         int fd, ret;
    * q  j: s5 L! c- Z" Z
  50.         e2prom_s_cmd arg;) u/ M& R& \' @' U% C# t
  51.         unsigned char buf[0x18];
    1 x- h+ Q5 m5 \: J
  52. 7 M: B7 r: n3 t6 x* j4 ~- v) ^
  53.         memcpy(buf, mac, 6);' s1 M6 u0 R5 |# p, R
  54.         memcpy(&buf[6], stbid, 18);, M# B5 A  P, F; ^0 C9 o
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! n3 f' s2 `+ B1 b! C' I
  56.         if (fd  < 0) {6 c/ G/ Y  a" ^7 c- F3 G
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 L5 l0 O/ O7 r1 S( R# S% F/ S
  58.                 return -1;
    + E+ X9 m; {6 w; p' C; |5 |
  59.         }* `2 O6 X) @: Y! M% `' ^
  60.         arg.sub_addr_count      = 2;
    % e9 K7 u8 ~/ E8 S1 u; x* ]$ F
  61.         arg.data_count          = 0x18;
    0 ~7 F, R$ r- }$ |# {8 D( E
  62.         arg.e2prom_cmd_sub_addr = 0x290;! Y) u  ~6 Y* S  o2 t
  63.         arg.e2prom_cmd_data     = buf;7 s3 `+ R; w3 w$ H! A% Q/ k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    : O9 y1 b1 M" b( X+ }" ]0 H' M
  65.         if (ret != 0) {. s/ A4 d0 A; Q  [
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. N% ?, \6 Q  `! ]2 @" ^6 K4 q
  67.                 return -1;
    & ~! d' ^7 y$ h9 m( O1 Q4 j! m
  68.         }
    . C, ?6 j" b1 l8 _0 O3 p9 r

  69. 1 l" N5 O. s4 M4 b
  70.         return 0;3 Q, \0 b: |3 A; t: I
  71. }$ @9 V! O+ R( d5 h1 A7 }

  72. 9 z$ ?3 T, Q5 R5 P
  73. int main()/ @* _/ W' }/ a! f  h4 T9 n/ Q( b
  74. {
    " H# N& f- Y4 C4 n# A3 t
  75.         char c;+ @4 |9 J1 q* r, D: @
  76.         int i, macs[6];
    ( m2 |9 V: _1 z+ x: \7 v
  77.         unsigned char mac[6];
    , {4 g% o0 W' O# t
  78.         unsigned char stbid[256];  n- v2 K4 @% ~( ?6 k2 Z. G( J4 o
  79. " G) n; Q2 A0 t5 ?' n5 [" S
  80.         if (readparam(mac, stbid) < 0)
    # T& u$ m. n" x9 a
  81.                 return 1;' A) p, [' N( J6 n/ e# B
  82. - Y2 Q  o( S% K; K8 I
  83.         printf("Current parameters: \n");/ {- J  c7 \" \  H  p' p$ b1 y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , V; d  ^) R* L
  85.         printf("  STBID: %s\n", stbid);* K/ K6 P, ~8 J
  86.        
    , j. H( E2 ?6 K3 W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 E/ V% U" L! B
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" Q2 X5 ~7 |) l' @$ }: d& F
  89.                 printf("Input MAC error\n");
    0 v( Y, `7 A+ z- f
  90.                 return 1;
    ( T9 G. O! a0 F; K! n
  91.         }
    - {( y2 ^, ?! r1 D) |9 G
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 `' z8 f* x& d! i( n" L4 O, {
  93.         printf("\nPlease input new STBID: ");
    # B  z9 T- j2 `# A# L
  94.         scanf("%s", stbid);
    7 V3 R' f/ ^  _/ I! F% N
  95.         if (strlen(stbid) != 18) {
    6 b: G# m: S6 j
  96.                 printf("Invalid stbid\n");% _% t/ v- k( N3 F6 Q. {' X
  97.                 return 1;
    7 V1 w0 x  Y) S' [# D/ O
  98.         }) h% u3 r6 \1 j" G
  99.         printf("\nNew parameters: \n");4 T* p2 U4 S  [2 {) Q) ~& H
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 I  x, a! I; k$ S8 F4 I& L
  101.         printf("  STBID: %s\n", stbid);& T% D- r# M4 R6 S4 y# e

  102. 6 ?: U& A& R0 |- ?4 u
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      A; o; O! S, h6 @3 Q3 k/ S
  104.         for (;;) {2 |( f! W9 d9 Y' e' b
  105.                 c = getchar();  e% v( [2 T! w# X* ^
  106.                 if (c == 'y' || c == 'Y')( K5 x$ k  `  U# l) L
  107.                         break;
    ; n; F! L+ F# {' Z2 X
  108.                 if (c == 'n' || c == 'N') {$ \, B3 w: Q0 o) v
  109.                         printf("\nAborted.\n");
    8 z3 f5 X! j; w& M. i
  110.                         return 1;
    % T, D: P1 {. ~0 i. m
  111.                 }
    $ i6 A! h7 h: i# ?
  112.         }+ W2 q6 p5 [$ t: Q1 }: W7 F
  113.         if (writeparam(mac, stbid) == 0)
    # k& P1 e/ C+ g4 K( I
  114.                 printf("Parameters changed.\n");
    9 u! ?, K) i4 X
  115.   b- ]) d4 s, I$ y* ?3 R) ^6 v% u
  116.         return 0;  `* T4 l5 @# \1 w9 ~; m2 [, 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 7 e! \  `, p+ @( O( f2 s
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

# Z" G1 z3 D+ Z9 a) M! \- ^; B7 H你用的编译命令行格式是什么?
& N8 ~- a4 ?0 r. f0 R/ V1 W0 r% ^
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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