查看: 17078|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 ^0 M' K! P! A/ s6 `
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 |2 C+ o) W/ E4 @& j
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
7 v+ b3 |" }9 tusage: himr <address> <value>. sample: himr 0x80040000 0x0& K8 d* ~* F3 t* o  \* s/ i1 l

9 u- d! R* h: Z7 O+ c( }9 G3 l3 Y5 O. i! g
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
! ?$ }, S0 ]  J; o
! v, f5 T! t  w$ D5 D/ W6 E% D补充内容 (2012-3-8 09:42):
( T3 U  x; {5 x- j$ M/ b6 {9 O; F) khttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! s# z1 ~) @9 B' W2 `/ h# c这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
5 _1 ^+ K, ]# e- V1 A
( @" X: Z$ S6 r: j% g2 C; U3 bhimr <address> <value>. sample: himr 0x80040000 0x0' W1 I' L8 @. m" x+ z& b! ~+ Q+ o
) U2 i1 Q  R, t
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# n" c5 Y: H4 I; k2 l
himr 0x80040000 0x008 W3 z) I* N" j. H% ]
himr 0x80040001 0x11' @/ h5 K9 \) n% L; V$ ?
himr 0x80040002 0x220 e+ v# P$ \2 e8 A  B6 V$ W
himr 0x80040003 0x33" W9 `0 q4 L7 y: x) W1 R& m: A/ s
himr 0x80040004 0x447 F, V! O, L. M4 S
himr 0x80040005 0x55
" |: m* D+ ]: o  V' n5 u: ^2 M% w1 L% \1 R
SN也是类似。5 z/ w2 M$ `* ], Z* h' }: W
: H7 W: }: K4 j2 g7 }% p
现在主要是,谁告诉我们MAC和SN的地址?. |) A9 f$ {* a$ Q8 A
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 ?6 E7 K: o3 a6 Z9 |. x0 q7 m
一直想找到运程修改MAC和SN的办法,苦于无解啊

8 t3 f' g$ }$ L% I6 g源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
) ?, a5 h- R5 G' i' {( \
' m& F& f2 N5 R& n. \修改的代码早有了。到今天不会编译。
4 o7 C1 |- `% N: @) ?4 v, `) o- ?需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 I. ^5 l5 A9 \; m0 t9 h
  2. #include <malloc.h>
    ) O2 B. P, @1 [' o; s4 V
  3. #include <sys/types.h>9 m/ g8 p' K! {# [1 ^- [
  4. #include <sys/stat.h>
    & J2 A1 F. m6 l" z2 Z9 d" T
  5. #include <sys/ioctl.h>
    # b) Z% R! a3 F6 B* u- [
  6. #include <stdio.h>) c$ h5 W9 @" f  [5 y
  7. #include <string.h>
    # ~# U! H% T+ t8 S" z& j  m

  8. ! v) M& A5 W7 f# U
  9. typedef struct {+ y+ _0 W( m4 y* \: [! @
  10.         unsigned int        e2prom_cmd_sub_addr;& w* p% k6 c' V% q( ~* u
  11.         unsigned int        sub_addr_count;0 ?" h: B9 u$ I! k) B0 g4 P$ W
  12.         unsigned char*        e2prom_cmd_data;
    4 o) t7 }* B7 u" M/ _0 s
  13.         unsigned int        data_count;
    ; Q: S$ w( \5 \0 e3 t3 ~0 v+ k
  14. } e2prom_s_cmd;
    9 l7 `9 T, f$ b, @& O
  15. 3 r% l3 a) B/ N5 n2 T6 R4 W2 W- p7 E
  16. #define E2PROM_CMD_READ 1
    : ]1 Q, I# b) m! V
  17. #define E2PROM_CMD_WRITE 2
    % ~! \3 e7 e# f- F/ @. U
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16": h: S3 ^' z3 P+ T- `2 J; X( n

  19. ' t; }. K5 i6 Q2 Z, ~
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : Y0 K& \: v# X& K5 w  ?) ~" s1 H
  21. {
    8 V7 r7 d7 Z3 N
  22.         int fd, ret;
    / `, X; S0 C9 i9 t: }% j
  23.         e2prom_s_cmd arg;
    8 F2 J( K7 X0 Q; I( F/ m3 ~9 r
  24.         unsigned char buf[0x18];
    7 A2 k' O( j* e, {: A  u2 T
  25. : g0 ^: S8 K" g3 n. W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 I% ~9 s4 [, R) q
  27.         if (fd  < 0) {5 J$ D4 S; v. ~6 O$ r
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # w! W9 n. S7 f; `( n
  29.                 return -1;# G! ^# m- w+ K- L
  30.         }; _; o" C1 F  i9 z* O- K
  31.         arg.sub_addr_count      = 2;
    # F- P) e$ T# g. v9 K
  32.         arg.data_count          = 0x18;8 j) a- z4 [% r2 z( L
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ; V6 \+ y9 F, Y, P, G+ w
  34.         arg.e2prom_cmd_data     = buf;, u% y' V; `% P1 y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);% @! H& H1 C* t% d, \
  36.         if (ret != 0) {- A) n9 ^6 w3 j
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . t$ {& T7 e: `+ p
  38.                 return -1;
    : w. j8 H  t( K, m) I* c9 j
  39.         }
    + ?+ K, u* `; R* N& a* J# g9 v. ~
  40.         memcpy(mac, buf, 6);
    2 @+ I5 A: Z3 d# U8 ]
  41.         memcpy(stbid, &buf[6], 18);
    " y( \" T/ }+ l6 ~, i) ~+ Q7 f
  42.         stbid[18] = '\0';- ^2 {( T6 E# x$ a7 ~
  43. 1 |6 h9 [  z8 {6 f
  44.         return 0;
    : G6 k# Q* ]4 H2 I# t5 d# B1 n/ ]& q; G
  45. }2 d$ B- s! ^; ^+ w- q
  46. 6 y/ t* y9 F& u& y9 s6 V$ g
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 j3 z5 ?* d6 W/ ^! h
  48. {
    ) ?5 B( y& Z0 x0 `/ S2 g" A* J
  49.         int fd, ret;; u$ Y; Q5 E) P
  50.         e2prom_s_cmd arg;" x. X- y- O5 P# `- N
  51.         unsigned char buf[0x18];; M7 b6 ?' s7 q) }) G

  52. 2 R( r1 F% \, K
  53.         memcpy(buf, mac, 6);0 V0 W  g" D6 a6 S0 X
  54.         memcpy(&buf[6], stbid, 18);6 c0 }# N. s- F5 ~& p( v; w8 N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 M% ]" d! z! K; D
  56.         if (fd  < 0) {3 W4 @0 ~, e9 R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* W9 b' r9 m% Z0 s7 s: |
  58.                 return -1;
    / R, J, Z9 w, H, A9 z( |6 P
  59.         }
    + V2 o% o9 M, E4 s+ J/ k
  60.         arg.sub_addr_count      = 2;
    ; I9 c$ `7 a+ y* ~* M1 q
  61.         arg.data_count          = 0x18;
    , ~# W( C  [( [# m& c" H+ K
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 g5 T/ {; p/ H4 T+ P; |
  63.         arg.e2prom_cmd_data     = buf;7 V9 H; f: n* V2 p* D
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 p) h7 r6 w) z8 Z0 \5 K, H
  65.         if (ret != 0) {
    5 J0 z5 W/ `9 v4 g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 n$ j4 Y( e6 V( e
  67.                 return -1;. K! ?* T$ Y# F/ S) }7 K9 W2 j
  68.         }& N  a3 {# V" I
  69. , ]1 l: e* H# M3 D6 Y
  70.         return 0;5 X. }1 E" y* D; P/ w2 |
  71. }
    4 M  V/ q$ R* Y2 f4 u

  72. $ e* a2 E! y% U& t$ [
  73. int main()
    4 `4 X- z; l; u
  74. {
    , X2 I8 i7 ?' V; Q* d
  75.         char c;. @  D" i0 h6 `- }# |
  76.         int i, macs[6];* {: R6 n- a* D6 p* o
  77.         unsigned char mac[6];: Q# [: L- r9 |3 D
  78.         unsigned char stbid[256];
    - Z) b! [4 ]( |. Q" o

  79. - q* b8 g9 H8 W# g
  80.         if (readparam(mac, stbid) < 0)
    * M# \. `. {) ^2 y2 K% m, W) s& t" u
  81.                 return 1;2 _( K% t0 o! @4 h/ r" R
  82. & I1 ]  _- o* l, i; t; P9 Q
  83.         printf("Current parameters: \n");
    # j& Q" ^! e8 ~3 v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 y) ^) K( X7 S' S8 B+ e- n
  85.         printf("  STBID: %s\n", stbid);
    6 k- s4 ^, h' H& G* i3 R+ r; r- f
  86.         9 o  k6 c' y& W/ U8 e! z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 D2 l% Z* ?& g! d
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 }6 N" {/ k, @8 B1 ?9 A: b% R
  89.                 printf("Input MAC error\n");  b% C5 M% R# c' m: F7 [
  90.                 return 1;
    # [5 k& ?7 z; ~7 W
  91.         }
    , q4 Q: f/ [# j. F
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - ]5 V# j+ u9 I( n' y
  93.         printf("\nPlease input new STBID: ");
    $ r# t" J4 g  [( _& Z' J
  94.         scanf("%s", stbid);$ d+ ^3 b: _5 w, S
  95.         if (strlen(stbid) != 18) {
    & S9 r' F3 P/ P2 T
  96.                 printf("Invalid stbid\n");4 C+ ^5 v) D, w
  97.                 return 1;( w, F( M+ x. i5 k  A
  98.         }
    . O" O3 S1 v; w. J5 s. h
  99.         printf("\nNew parameters: \n");
    7 d: y3 G6 ], e9 [& v; x
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . h5 P0 f& q1 W8 A1 p
  101.         printf("  STBID: %s\n", stbid);
    + k. P* D& X, F& E5 v3 k
  102. 8 R- s9 I* ~% p- C% e( i
  103.         printf("\nDo you want to change paramemters? (y/N) ");: {8 I' x$ D! Q% V6 F0 W3 e+ i
  104.         for (;;) {
    * R/ {  l, T6 c# y
  105.                 c = getchar();. f3 K% c$ i- Z! _# {
  106.                 if (c == 'y' || c == 'Y')' r  V! S/ |8 s8 w1 R
  107.                         break;
    $ J; j  P( Q7 l9 w* A8 u: S4 z- C
  108.                 if (c == 'n' || c == 'N') {0 R. p4 K8 Y4 K( S
  109.                         printf("\nAborted.\n");# r/ Q, w: O) v, @7 H& S. b, B5 P
  110.                         return 1;* A7 j7 `' T, v5 O* o
  111.                 }- O) F- @# m0 `$ c; ?0 d7 A$ ]& _
  112.         }
    2 w+ {5 q7 A# ~5 K) E
  113.         if (writeparam(mac, stbid) == 0)   ~) n' }5 F/ B% J9 ]% `+ y  x0 T, N
  114.                 printf("Parameters changed.\n");
    : _# V7 q7 U0 T; {0 S- a9 x
  115. ! \1 v* ~+ a, ]
  116.         return 0;! K$ r$ R6 T, d# v( o
  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
5 p" A: Z8 a+ b  o6 U在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, M  E8 d3 x8 i, g1 M你用的编译命令行格式是什么?" d% l, x8 z6 c" R/ ^4 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客服返回顶部