查看: 17517|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    7 A, i3 @$ F* H. `
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 a- V0 h, l( Z3 `1 z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. l+ @! h- a- @# P( `& f
usage: himr <address> <value>. sample: himr 0x80040000 0x0) p) |  f4 i7 S, E0 g) z# G. T

; R4 {% B1 v6 M+ Z
1 u1 Q3 A! w3 f2 u* x" z4 l/ K不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
4 g; g; D" d2 G. {$ X
5 w! c3 ~  m& h) ?( n: f补充内容 (2012-3-8 09:42):4 y+ k" R. p$ C" ?6 E7 \: h$ `
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ W7 d: G6 L1 f) p9 ^这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
4 T& @* C9 D4 q. R! b
, k7 Z+ F. H0 M% H$ Yhimr <address> <value>. sample: himr 0x80040000 0x0# _3 j* V% ^0 t/ |& I" e* s2 \
+ f0 [4 p; u) a' M9 ^" g
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 a3 m# y+ ^5 v# dhimr 0x80040000 0x00' t. v, m7 b9 @6 N7 |
himr 0x80040001 0x11) z8 ?; f5 P  x6 d
himr 0x80040002 0x228 }  j6 Q+ z( ^1 @6 \
himr 0x80040003 0x334 i" H" R2 `0 i; y
himr 0x80040004 0x44& i8 S* y% Z- {% s; ~5 i
himr 0x80040005 0x55- X3 j/ f6 T  d) K
$ ?2 ]9 l9 E: m- ^. Q
SN也是类似。/ Z; Z9 l5 f$ `5 H

( H2 A; l0 A1 c$ F现在主要是,谁告诉我们MAC和SN的地址?7 S# ^& n7 D* Z; r
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 g; P" m( m( ?! {$ F5 g一直想找到运程修改MAC和SN的办法,苦于无解啊

" H) v2 e& K7 T! p. R8 u源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
9 z/ N9 E* h: R: B7 V' ?2 D) W+ W5 |! A, t% e
修改的代码早有了。到今天不会编译。
% a: m+ Q- R& S* V, O1 J/ _需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; U) _- _( ^. P8 c
  2. #include <malloc.h>) s% y: |6 C  n! E
  3. #include <sys/types.h>/ y4 f5 s7 p5 ^  G% [' S
  4. #include <sys/stat.h>
    6 x7 }: U4 H5 ]+ j" d2 ?! K
  5. #include <sys/ioctl.h>5 y* q* x! O- q% [9 m' ^) ~
  6. #include <stdio.h>3 f7 f2 j* e6 F6 x
  7. #include <string.h>
    % u2 P: d! y3 G# _9 S" ^- Z0 E
  8. 9 T- X- N. t6 `$ `- U- _
  9. typedef struct {
    * V* E( X* a$ Z* I9 {
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 \$ W+ F. @, O
  11.         unsigned int        sub_addr_count;# K4 t$ n! W8 q. H3 Z
  12.         unsigned char*        e2prom_cmd_data;
    - S7 r" @: [" f8 Q! A0 s
  13.         unsigned int        data_count;
    : r6 B9 M: w3 g' ~. l7 u- d% L
  14. } e2prom_s_cmd;& H$ {& {( `3 V: I) A! b% G

  15. & @. T9 g1 r- E" ^7 Q9 R4 w* [
  16. #define E2PROM_CMD_READ 1
    / Q0 P& `* v) f/ l
  17. #define E2PROM_CMD_WRITE 2
    7 r0 g- ?, Z. T3 _) v0 Y) S
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    : @! v- q3 D/ H% }( @$ Z* T

  19. 6 V7 E, p& f+ o" Z, J
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 z" l9 D+ N) R& Q/ w
  21. {
    5 S) ], Q& ?4 V5 t' w
  22.         int fd, ret;
    . ~! v' T. Z' S  Q! f. J3 S4 S# M# C
  23.         e2prom_s_cmd arg;- T  ]- x. u. Z. ~  w) i* t
  24.         unsigned char buf[0x18];6 ~; G/ b2 o' E- P6 m
  25. # Z. L8 \. f+ b, Q9 W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ ^2 Z9 q" J( F8 b0 g' v
  27.         if (fd  < 0) {
    8 j- R0 G7 o( _' Y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 E, @3 w* S9 t, O7 n( j3 T
  29.                 return -1;3 `+ v% H* I/ J) X& B
  30.         }0 ^- Q) x5 A1 i$ ?
  31.         arg.sub_addr_count      = 2;2 v( Y1 |1 y: l- l3 ?. b' R
  32.         arg.data_count          = 0x18;
    7 e" c. p% ]0 W. z- k9 Q( P& q
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 F% G( E- B4 y0 c# D; E2 s
  34.         arg.e2prom_cmd_data     = buf;0 j& E# a# Z# ]6 K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    6 v" v4 L. o- q5 t+ m
  36.         if (ret != 0) {
    + x" f1 {' {3 T& }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    2 m, j& A) k1 E; d1 ^0 ^
  38.                 return -1;3 x  c" K5 y$ ^" X+ l% ]4 E5 U
  39.         }
    . `& W0 p* K) Q
  40.         memcpy(mac, buf, 6);2 Q3 z, g/ I( Y# @7 v
  41.         memcpy(stbid, &buf[6], 18);  f' y3 V  W9 q- e9 D
  42.         stbid[18] = '\0';5 [) K  z  \& T7 }8 l& C

  43. ( c# `; Z! g9 m5 t: U' L" k
  44.         return 0;
    4 n' l5 D, i' E! E1 \
  45. }
    " Z( k2 _' g% W" i* C/ {$ K

  46. * @# Q& W% i0 T$ h( M3 p* W7 M
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 \: |4 K5 m, z1 [6 x$ c4 _) h) |
  48. {4 y" ?; k, s$ x; C8 K
  49.         int fd, ret;
    . x5 @( p$ h  N1 _. A) J; I* W
  50.         e2prom_s_cmd arg;
    & p" h# w- }1 o% L& v. R& y/ i) u
  51.         unsigned char buf[0x18];9 V, T5 z$ ~  b; G$ i3 o& d$ m+ D  x
  52. 9 n2 e: @% z& k; {  n* M: w
  53.         memcpy(buf, mac, 6);
    ; {9 Q$ {8 S- [' E# F
  54.         memcpy(&buf[6], stbid, 18);
    8 s/ y6 _* U* S: Q4 h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 \: A: z+ ]2 A3 n5 W
  56.         if (fd  < 0) {
    + i" t0 S- @. L9 X2 y$ {; t
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " Q$ x- [; b+ P* k) @; _
  58.                 return -1;
    $ u: m' t/ J5 ~# b  I
  59.         }5 [5 X! z7 s% K- O
  60.         arg.sub_addr_count      = 2;
    ' _0 _1 ?; R, g  [. b6 z& k: C
  61.         arg.data_count          = 0x18;
    5 Q# h$ Y7 K5 Y6 a
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    4 `( {( R9 s9 C
  63.         arg.e2prom_cmd_data     = buf;
    ; J0 V$ Z: H0 r! b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    : n8 O: q' `4 x% U
  65.         if (ret != 0) {
    ' g' c( o" o  w: }* l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; n7 P& r. d/ P: v
  67.                 return -1;
    $ F& z& r: O4 Q9 k5 m: W* k* T
  68.         }% M5 u! g' m* H3 ]7 \; h
  69. - R' `& j( V9 h$ v9 Y
  70.         return 0;
    ; E7 F2 V$ V/ Z7 _6 M1 x
  71. }
      A% D% \$ V! \- d

  72. $ Y/ Y9 g0 M- E" u: c% t
  73. int main()" `( q* M* q8 F8 ~
  74. {
    ; G, g, n+ L% _
  75.         char c;
    9 Z5 p! H9 y" M  A, p2 x& M
  76.         int i, macs[6];" b- g* v$ H' Y8 I& v( ?
  77.         unsigned char mac[6];9 Q" j# h. S& ?& K# m8 ]/ N) e+ W
  78.         unsigned char stbid[256];
    6 ~& u8 ~9 O- S/ `6 N! K4 t: `

  79. 7 _! I. d1 c) o! a- r
  80.         if (readparam(mac, stbid) < 0)* X5 q' E" N% t* s2 C/ F
  81.                 return 1;
      t! @* d# z1 k8 x# X6 p6 Q
  82.   O0 V8 ]* L# J0 Y8 l9 E
  83.         printf("Current parameters: \n");- v" a8 l3 I/ y. i
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 C) o7 `  q1 w) }! G/ b
  85.         printf("  STBID: %s\n", stbid);
    & W! w; b) [. b2 d: v/ M
  86.        
    % W5 w% x  e7 w6 s6 y+ g' n- s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . A! S4 V; P4 u  N( K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : L3 S: C9 v( }2 P2 b& O
  89.                 printf("Input MAC error\n");
    . _$ i6 }0 R5 i( x% p& }5 T+ ~
  90.                 return 1;
    ' M. s/ H& b3 _5 U5 |
  91.         }
    6 ^9 q# [7 z3 ~5 u3 H3 Q& O7 b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];, R0 Z, I6 i/ E% e4 e. {
  93.         printf("\nPlease input new STBID: ");
      ]# s" k  w+ x) r$ k- w# z3 `
  94.         scanf("%s", stbid);
      ^. M) ^1 L0 G
  95.         if (strlen(stbid) != 18) {
    . y4 C0 P/ F2 d" H1 ^7 u8 Y
  96.                 printf("Invalid stbid\n");
    2 E, g- D( K4 t3 V5 h
  97.                 return 1;. u+ h8 Y* n2 p" p# Q; X- l" Y2 W/ I& g
  98.         }
    ) z1 m% S7 c* q2 T  A2 B
  99.         printf("\nNew parameters: \n");7 z9 X! D# P( j: [) z. P) d
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! f; {. U' y0 X7 t3 N4 Q  P
  101.         printf("  STBID: %s\n", stbid);8 ]1 {+ U: s/ k, q3 L) x+ g! ?
  102. 1 F$ A/ M4 p0 |+ k' |6 Y: S& t
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      b9 W/ }$ _0 A. n) `, n
  104.         for (;;) {4 |- X6 S2 P8 ^# o# O
  105.                 c = getchar();- s, j" N4 s7 a. I
  106.                 if (c == 'y' || c == 'Y')/ g* F) S( n/ [1 `" V
  107.                         break;% n8 j6 ~  x" {+ X
  108.                 if (c == 'n' || c == 'N') {- n, n7 J' A  Z$ ^' q/ |
  109.                         printf("\nAborted.\n");
    , U( ]- a" j3 U1 g8 P
  110.                         return 1;+ ?( X. q/ w! [
  111.                 }
    0 Q" N0 P6 x" Z& }
  112.         }
    ' I' L: d8 C. u! E3 S6 V
  113.         if (writeparam(mac, stbid) == 0) & |4 j! V# T4 ]- B1 _, n  y& y
  114.                 printf("Parameters changed.\n");
    3 G9 f0 l% E& O; S- n9 a# r
  115. ) o, g7 L# u0 u
  116.         return 0;7 x$ ]; P% _" |
  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 # b: h7 z+ R. S2 g/ _
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 `9 b. c8 y" o你用的编译命令行格式是什么?6 B$ z) G/ R( e( p5 |: D3 g
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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