查看: 16415|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; Y9 J& ]* o  u' ^8 Q, d; `
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig: T2 m, \! {- K2 v* \8 T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
0 a6 e% h* r# qusage: himr <address> <value>. sample: himr 0x80040000 0x03 d9 \" ]6 }3 |/ b/ i% D
8 J  e6 o, I7 Q! M4 Y% k' H8 E7 C+ Y
3 Z; h; p% e, @: P7 a4 G+ }( G& m
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- u* E1 b' K; y2 C: f
, c4 O8 Y4 w7 T& K/ |5 T! g& c
补充内容 (2012-3-8 09:42):
" ~: K0 _, m0 b2 j  d# N0 Bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- c# m8 G6 Z9 O5 m1 @. P6 k
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
: N; |( v1 {- n  e( F" A+ h2 {& |& M+ S/ s1 n8 |# |+ r
himr <address> <value>. sample: himr 0x80040000 0x05 F/ b" d2 A/ N5 y0 J: b
0 X2 U2 |4 w: s# z# `7 s
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# @: L# q7 S7 ]# k' o% F* P, g
himr 0x80040000 0x00. p5 k9 }2 g/ o; r+ s( p) J
himr 0x80040001 0x116 o. p5 `/ |% f5 Q, p; H2 E
himr 0x80040002 0x22! J4 c+ I3 d: F: l/ q6 I; z7 d
himr 0x80040003 0x33
/ ^% z& a7 i0 V- U2 u6 Ihimr 0x80040004 0x447 Y. V* ~5 @6 C9 c7 {
himr 0x80040005 0x559 C$ D7 o1 b1 i# Z
6 \, a9 V( Z" H' ?  V8 p
SN也是类似。$ t3 X# h2 D. d3 Q, b6 O8 [

7 ?/ g# B& E6 I: s2 C& A% d- L现在主要是,谁告诉我们MAC和SN的地址?
" Z  ]% a! x5 I! X
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 j; B0 x/ y/ _+ s8 b, T1 Q一直想找到运程修改MAC和SN的办法,苦于无解啊
! ~& P6 v8 b' F; d( P
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 0 Z  v9 U, d: L' Q1 C

) K3 w  _9 ?4 M  m' U修改的代码早有了。到今天不会编译。: U( S8 Z2 @' R% i% q/ ~+ }/ j: V( @
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ; \. {) Z: }: q0 j
  2. #include <malloc.h>" _5 `, a: R  {9 e
  3. #include <sys/types.h>4 j2 ^8 G5 ]8 i# v* p9 B
  4. #include <sys/stat.h>
    4 ~3 {4 k8 J; m
  5. #include <sys/ioctl.h>6 _5 a$ V2 b7 d$ O- ^: O8 w# o
  6. #include <stdio.h>7 D% Q( Y, `" M6 C0 E  g
  7. #include <string.h>
    ! V' \5 L) {4 Z1 n
  8. - B: N' G& U: L1 `7 z( T
  9. typedef struct {
    " R5 [2 @! l5 P" `+ s2 o
  10.         unsigned int        e2prom_cmd_sub_addr;* c- y" m4 ~& e! `# |
  11.         unsigned int        sub_addr_count;5 g! |# w+ o+ x# }+ K  d+ O) F9 ?
  12.         unsigned char*        e2prom_cmd_data;
    8 i" p  I: ?+ j2 C. H+ S
  13.         unsigned int        data_count;+ E. s! B& {( w2 R. w2 s1 J
  14. } e2prom_s_cmd;
    ! b% F. c1 f$ X" M( t
  15. ; L$ ?' M# ~- C5 i& _# _
  16. #define E2PROM_CMD_READ 1
    . D3 J0 n& I. z
  17. #define E2PROM_CMD_WRITE 23 e/ v, i. f4 \4 [5 k: a
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ `% O9 N( ^; g0 ~1 j9 W6 L

  19. " ~& t7 `6 [0 s$ q: D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)3 W0 n1 b% c1 J7 n2 ^
  21. {2 O/ l* P8 t8 p: a
  22.         int fd, ret;
    ( U$ F  z4 d7 F- s( N% Q/ }% X
  23.         e2prom_s_cmd arg;
    ; E' }1 k; y) M, d
  24.         unsigned char buf[0x18];7 C0 x% R$ v1 X1 u: e  O
  25. 0 {! _7 z+ O# J/ x7 o
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 F2 O% ?! N( i9 j! L& X& V* B
  27.         if (fd  < 0) {. Y2 H: Q% [; h$ X! y6 x0 E. W0 d; y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( P3 ]4 O0 `! V# p* H; h: V
  29.                 return -1;
    9 @+ b: @. ~+ @) ^$ e
  30.         }! d! H$ C- j; c! K: d/ N
  31.         arg.sub_addr_count      = 2;
    0 c$ a! t1 @* w0 S( M5 j! @- ^( f
  32.         arg.data_count          = 0x18;+ @8 w+ ?0 N6 f2 C; P
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 W' a9 r& @, I# i
  34.         arg.e2prom_cmd_data     = buf;
    ; L8 A5 s* H5 m) t  h( b
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - X9 X- ~$ x1 Y: l9 N1 a3 s
  36.         if (ret != 0) {
    ; i8 y/ y! E1 d
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * Z' U2 G+ F7 p! n+ J
  38.                 return -1;
    # R3 u3 s" s. A& ^6 n& Y* l7 t
  39.         }
    ( X; R2 j2 B8 t3 a3 L
  40.         memcpy(mac, buf, 6);' y( C( z( V! ~" K4 G# Z
  41.         memcpy(stbid, &buf[6], 18);4 m1 H8 w1 ~1 K$ O' H8 w0 e
  42.         stbid[18] = '\0';- L' g* f5 K3 H* C9 ]9 e" a
  43. / `. w! a: Q# G- c
  44.         return 0;! }! N! w; L' o2 B
  45. }
    ( |2 f) L0 t; I2 W' d
  46. % ?6 V. x6 H) j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 F  n9 a( j  \3 y
  48. {* q. n9 W, P0 Q
  49.         int fd, ret;% W; \0 I' u/ g1 \
  50.         e2prom_s_cmd arg;
    / _% R. W- J, Z+ t2 M1 a2 Y2 t
  51.         unsigned char buf[0x18];8 o6 ]7 r( N8 L! @1 E" \
  52. & j) [1 r; E1 {! g2 q$ u
  53.         memcpy(buf, mac, 6);
    2 a+ x; T( a, S
  54.         memcpy(&buf[6], stbid, 18);. H! [$ k) X% m+ X4 o9 Y9 F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);+ v; B- W, q7 \6 L6 s
  56.         if (fd  < 0) {- W* v! _. I5 q3 U  {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);. y0 A. u1 Y% L7 t  s7 I1 @6 F
  58.                 return -1;
    # Y* M$ B$ a+ r6 f5 r
  59.         }
    0 B4 Y2 }5 f7 V  Q
  60.         arg.sub_addr_count      = 2;& M$ q! q% n, }1 s& G. J* C
  61.         arg.data_count          = 0x18;! ~. U$ h9 v+ ?( x% Q& G
  62.         arg.e2prom_cmd_sub_addr = 0x290;& y: K) s: R6 o
  63.         arg.e2prom_cmd_data     = buf;- l( Q5 C  H; g8 Q5 {3 Y9 R
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ' t$ t; C: P5 l/ S9 J9 c9 T
  65.         if (ret != 0) {2 y: i! {& i8 n3 |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 V  ]' J/ l. \7 }
  67.                 return -1;* a0 K' X" H9 U5 @4 A3 b
  68.         }
    * H( U- `: l" M0 V0 a9 `& k

  69. 7 x) x. Z4 m' _7 y0 f- n5 D
  70.         return 0;
    8 Z0 u: M. X) _/ c3 h8 F, d7 g
  71. }: F. c  a) T0 q" v$ |: t

  72. 6 X* n8 K/ S; j5 L! o2 D
  73. int main()2 e7 b+ K- D- u9 o# U3 C
  74. {
    6 ]8 N: n0 n) E4 o* F7 }" j
  75.         char c;" n. Q+ `4 D& j* }
  76.         int i, macs[6];
    - A( t8 d' s8 H8 Y# C  F
  77.         unsigned char mac[6];0 |" U- }* `$ \8 S1 n) S7 g+ f4 ]
  78.         unsigned char stbid[256];
      m4 @1 H% F8 A3 v

  79. 4 s. b4 \9 i, C% F
  80.         if (readparam(mac, stbid) < 0)* P7 k9 i' ?& B
  81.                 return 1;) P% `+ M# V: v5 |6 r7 w. U
  82. 6 ]; i; l0 K5 W) i
  83.         printf("Current parameters: \n");0 ]4 I; p2 p5 c: `! o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* W7 m& E' N- m
  85.         printf("  STBID: %s\n", stbid);9 G1 d% @( I: k% k4 B
  86.         " W& b# Z: t  i2 `- X" P! Z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");: U% ~* `$ S9 Z/ w
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. x/ `7 o, V4 [4 T- p/ S/ Q+ x0 N
  89.                 printf("Input MAC error\n");
      T' d+ W$ s0 l
  90.                 return 1;
    $ A: r# S9 m7 B& z+ f7 L
  91.         }3 V3 M# t+ l! S+ i/ j0 E
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% }" Z/ N( ]( u" }
  93.         printf("\nPlease input new STBID: ");1 G% X) Y2 ~9 S$ x2 q
  94.         scanf("%s", stbid);
    , P+ I9 a2 X; c
  95.         if (strlen(stbid) != 18) {* K, m. S: t7 Z0 H' i2 s: L
  96.                 printf("Invalid stbid\n");  o" t9 E7 @9 w) D- [$ R
  97.                 return 1;
    6 r+ m* }8 ?; h; u" {' M
  98.         }+ U$ e1 M. `( F' B3 q
  99.         printf("\nNew parameters: \n");; H) e2 j0 Q9 W
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* u; V  v$ J9 I2 t. n; M
  101.         printf("  STBID: %s\n", stbid);/ F1 d5 s. c4 b- ?

  102.   c0 A5 ]  u* g  y; X$ h9 \2 L
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    * p0 E* j6 ]5 j- P9 i7 j
  104.         for (;;) {
    % `- d$ ~  O  _) Z0 t. L3 o
  105.                 c = getchar();& @& i  ?* S- l$ S& Q
  106.                 if (c == 'y' || c == 'Y'): B' e1 O/ }) e" t. y6 Z
  107.                         break;; \4 H- l  J. D  A
  108.                 if (c == 'n' || c == 'N') {
    " s+ X7 j& j5 J6 e; V" B9 {( k0 H7 |. C. B
  109.                         printf("\nAborted.\n");  I% v/ R3 }+ i. f) T* ^& V5 s
  110.                         return 1;
      G' a4 y0 x0 U  a
  111.                 }
    1 u$ M4 U8 V( ]; m
  112.         }
    + z' ]$ F% {2 R9 c
  113.         if (writeparam(mac, stbid) == 0)
    & g8 s6 K, t% `2 ]( r+ x$ Z
  114.                 printf("Parameters changed.\n");
    , A' N8 ]& S3 y+ j; h

  115. 5 N  h0 e0 K( H( i/ I  w" Q
  116.         return 0;
    7 a/ @3 T/ J& v4 D; k1 r" x
  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   [- N8 ]7 b& Z! S7 m8 B; M+ h& X
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' @( R9 S, L, T/ E
你用的编译命令行格式是什么?
3 M( B9 u. v% P, P' p5 K$ m
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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