找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15730|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 k" D, q% q3 D5 j# ~9 L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig  p1 E5 H5 V$ n9 S
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
9 L; Y5 H3 S. y  N6 @5 }5 Tusage: himr <address> <value>. sample: himr 0x80040000 0x0
$ R; X) I, [3 g- R4 T6 s4 S
# `- p, [' g" B9 }6 g! b) o" V6 q$ E; w* U
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
" }9 t/ Y8 J! D: V% O! C+ e- p7 O" Z5 k3 ~( X6 w% L9 s* J% _
补充内容 (2012-3-8 09:42):# t$ I2 ^6 |6 r' Z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数2 k% i! _5 W5 y
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。8 Y: h; N' w, q6 L+ E- Z9 r
) r8 q9 W, X; ~* w8 }
himr <address> <value>. sample: himr 0x80040000 0x0( n' R  [# E5 B
' c$ A3 P) j- A! t5 Z
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
+ B* i5 w  R& G0 J2 jhimr 0x80040000 0x00
0 _/ Z% R+ Y" k# Ehimr 0x80040001 0x117 _( e& G. }% T( O' ^/ l* `3 K
himr 0x80040002 0x220 T, R# B4 ^3 ?+ i( W( `/ n
himr 0x80040003 0x33# Z' u* m: ], _; s4 A( x
himr 0x80040004 0x44
. @2 {) j) V6 n# y" Xhimr 0x80040005 0x55. `8 j& [9 [" \5 D' ?

1 a, Q4 ]. i5 |# H$ y6 @SN也是类似。* W, b; K1 @1 A( p
- _2 ^4 v" I4 t; d9 D
现在主要是,谁告诉我们MAC和SN的地址?( r+ v- z4 y& ?# j
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ' ]/ ^  k4 e- \& _( {8 U
一直想找到运程修改MAC和SN的办法,苦于无解啊
( ~" U7 f6 r9 `. A- g% e
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ' E8 z- M# D  o2 I% T% X

6 H: J4 X% U4 X1 c$ X  {修改的代码早有了。到今天不会编译。
, W: x/ G8 f1 `0 S2 N( F* k需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>. p% q; u# }& R. F: r4 G5 f0 ^- \7 ?
  2. #include <malloc.h>
    0 C: e( k, `" o5 s8 g1 r# e4 i
  3. #include <sys/types.h>
    : Z* l7 w/ G3 r' m' C
  4. #include <sys/stat.h>
    ! d& Y$ s9 R, P/ Y
  5. #include <sys/ioctl.h>& {! [; G5 q- \) j
  6. #include <stdio.h>
    5 u1 ~7 v  @" T' a( D8 y1 h
  7. #include <string.h>6 U6 k: S" o' X0 Z# K1 b

  8. / f& ^. A% V/ A& O; i# n
  9. typedef struct {0 ]& P. a4 L+ d
  10.         unsigned int        e2prom_cmd_sub_addr;
    5 w8 z" ]/ Q3 I0 G
  11.         unsigned int        sub_addr_count;' L! D. T, H9 e" e6 i8 r& a
  12.         unsigned char*        e2prom_cmd_data;
    + t& k8 \9 l  U8 \5 }* S
  13.         unsigned int        data_count;
    ! z) ~( R  U; c+ g" Z  M' r
  14. } e2prom_s_cmd;. W; Q% T( o- c' i1 n3 d! S+ t. ~

  15. 5 S5 C2 N. U! O
  16. #define E2PROM_CMD_READ 1* x! W+ }$ Q2 r) n# V- F
  17. #define E2PROM_CMD_WRITE 2
    9 K7 f7 N" J( e/ p4 a6 h! l
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    # f7 z! _- h" V% ?( \& n/ h

  19. # W( S1 Y, }% N" ]3 ^& N, `( p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)  F! U$ t* A# K. R, e; U, A
  21. {
    ( d, @. j9 c4 F  k1 j+ z5 J
  22.         int fd, ret;
    , o" E$ ~+ t. Q! P: w
  23.         e2prom_s_cmd arg;
    $ G3 M5 q& B  \- L; P# O
  24.         unsigned char buf[0x18];9 K* t! ]1 \! q/ s" d
  25. % x" U7 {* x% ^, K+ T0 J
  26.         fd = open(E2PROM_DEVICE, O_RDWR);) R6 j8 A) a$ g5 @+ f7 a
  27.         if (fd  < 0) {
      y; ]2 A4 A9 }- q* L* h
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. |6 E: V  _4 m: d/ ^& W- ?4 ?8 _
  29.                 return -1;
    ! e5 W. K3 Z# _" T
  30.         }, W; k% [( {$ x
  31.         arg.sub_addr_count      = 2;, M5 X7 P7 Y( [" j. r4 ~6 D: J
  32.         arg.data_count          = 0x18;1 h* s( {. n0 y  Y: l; q7 M( a* n
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % [- z  G" r  h- t, \% p8 b
  34.         arg.e2prom_cmd_data     = buf;. ^, D8 a( D; V  B9 v& q3 L8 k% {
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 _$ j6 I* E3 L% I7 ^+ i
  36.         if (ret != 0) {
    $ v1 z3 |3 ]: Y$ y! W" d( f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " ^: P- [7 h. v8 \% h% @
  38.                 return -1;& |' R6 F  p+ I9 P, z
  39.         }
    4 I2 L/ N, {, L5 {5 H' K
  40.         memcpy(mac, buf, 6);5 @# w: Y- t7 X6 W1 z
  41.         memcpy(stbid, &buf[6], 18);
    $ M+ b" a" |6 [$ T) X* ^/ A8 h
  42.         stbid[18] = '\0';
    * A' C+ i3 D: B: o) X- _* D6 q' H

  43. 0 ]. v; v+ m0 G6 _' _5 L' y
  44.         return 0;
    . S( D( z5 ^) f- \% J
  45. }; s# C9 S5 [7 O8 j

  46. 1 I: a" D1 }. u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ D) Z8 [# j% h2 L. l& ~
  48. {. Y- c7 v$ S5 C2 {% o
  49.         int fd, ret;
    - T$ D5 `9 U2 w2 F8 E
  50.         e2prom_s_cmd arg;
    ( y1 V) O. l/ {4 h
  51.         unsigned char buf[0x18];
    7 D1 F8 g! ]" P4 U1 P* _

  52. ; R) H6 X5 ~3 w2 Y
  53.         memcpy(buf, mac, 6);- B6 [  A* W5 Q1 h! Z
  54.         memcpy(&buf[6], stbid, 18);' v7 R. @% s) U( p. R4 u' j6 q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
      C2 t- B; W2 Q7 I, a7 g
  56.         if (fd  < 0) {
    ( T+ \- i, O- K8 M, c
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, U' {' H8 ?4 B- [0 G( J" S
  58.                 return -1;
    " Z9 w. C0 y2 t# H9 t# k( m0 d7 U
  59.         }7 t, N! }: w% U
  60.         arg.sub_addr_count      = 2;1 D5 \/ ^: q4 }: R0 Q: F7 @8 y
  61.         arg.data_count          = 0x18;  V7 l% ^5 n- Y8 D8 D
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      V% Z. o* ^2 l$ p  i6 @* }
  63.         arg.e2prom_cmd_data     = buf;6 ]$ i- [1 s' ^; n+ u, Z9 r; I
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);% Y0 ?" J9 ?% p) ], V# U& b
  65.         if (ret != 0) {
    1 W" Y2 b$ o/ L$ a( t/ k
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    9 L7 h, z" U! A- _& j" c; e" V
  67.                 return -1;
    ! ^  N0 D. o) Y( Q
  68.         }
    ! w: y8 \% H- P& [

  69. ) @) j" _( Y. u3 k$ T+ |
  70.         return 0;
      j4 j0 a6 W- a; K, b$ o* n
  71. }8 \% t9 \3 q* \4 t& S
  72.   M* L2 ?& `6 Z% g
  73. int main()
    2 V% w+ L3 Y0 ?% I+ Z* g
  74. {
    2 p- \% ~( d" e8 k0 i2 x5 X0 x* U
  75.         char c;
    & Q8 s8 N* j" ~2 C. S% a3 ^
  76.         int i, macs[6];
    5 [) i2 B4 c/ _% I& g
  77.         unsigned char mac[6];& d  V% o8 Q8 z* d' C+ p& A
  78.         unsigned char stbid[256];3 [0 x; Z! l4 |$ z- o

  79. : w9 ~$ ~* S- }% N; ?% D' Z
  80.         if (readparam(mac, stbid) < 0)
    9 O) d4 t$ P1 X+ v; j9 Y. a
  81.                 return 1;6 c5 J8 G$ {7 N) F

  82. ! o* d5 U: |/ X9 o  p0 v5 S
  83.         printf("Current parameters: \n");
    . u0 W( G/ O) Z0 m- V4 H5 b- r7 j
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 ?# z) W! u, T- z; ]: F" r& s
  85.         printf("  STBID: %s\n", stbid);5 h5 ^0 S' n  X% b" C" N
  86.         7 |% n7 A% L# v
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ; O2 P! _: L$ Q2 y% P5 Z5 ]  D0 e' ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ' u. ], x- ?! A; l9 K/ q. o
  89.                 printf("Input MAC error\n");0 [! ~! K6 t6 M) _6 v& w
  90.                 return 1;/ `5 W! W2 }' h/ J5 f* S2 r
  91.         }: S6 K& l/ {8 V) t8 K% L6 F
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    / G4 Y" i# K9 {7 q' z9 U& m
  93.         printf("\nPlease input new STBID: ");
    ) e: \  p: i# ?% w
  94.         scanf("%s", stbid);
    # P; d( o  L) x3 _  _* q
  95.         if (strlen(stbid) != 18) {5 F% ^7 d  o7 \4 X- K& J4 p
  96.                 printf("Invalid stbid\n");$ ^8 K" ^9 D' r2 O2 ?
  97.                 return 1;2 }$ z: ~; b0 h, _  }$ X. C; X
  98.         }6 o: P1 Z5 V+ D
  99.         printf("\nNew parameters: \n");
    6 y$ ^- S2 Z8 R! t% Q' t5 h& j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ O' C% s% s: x4 A8 f! D) k
  101.         printf("  STBID: %s\n", stbid);
    , q" w: N4 U6 W- ^

  102. 5 h& V. Y6 ~4 k+ ]2 g. D* n! [
  103.         printf("\nDo you want to change paramemters? (y/N) ");# `' q3 V+ Z8 Y  d
  104.         for (;;) {
    ( J/ {% X/ ?$ Y* u' Q0 a! b* ^
  105.                 c = getchar();
    3 [+ X% ?% K8 O  L
  106.                 if (c == 'y' || c == 'Y')! S1 B! @1 [: r1 o. G+ j
  107.                         break;
    0 U( |) W& D) u" X% m( L0 H: O
  108.                 if (c == 'n' || c == 'N') {% d  f! n. M# B- m( t! C
  109.                         printf("\nAborted.\n");
    1 N, F+ k; F* m
  110.                         return 1;3 S" {9 `' }1 j, a4 F7 B$ }
  111.                 }. d* g, [2 b: X% v2 y+ i( O
  112.         }6 c/ [, q) g; m9 |+ j$ f3 U0 _( J! a/ b
  113.         if (writeparam(mac, stbid) == 0)
    5 T, U8 c+ i$ X: y1 d
  114.                 printf("Parameters changed.\n");8 x, r+ p& K; _# a
  115. $ {& x) G( C2 R' e
  116.         return 0;
    $ }3 o" C5 J* @7 `( m1 Q% L6 j. B
  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
& ~( j2 g; o8 @/ }在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& c4 p* T: W  C& w$ ~你用的编译命令行格式是什么?* |# l/ |% M* z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-6 08:20 , Processed in 0.026353 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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