查看: 16888|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    / R) Y0 U& i- @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . V' R5 l) ^1 ?0 e/ n% _' I9 `2 h/ o- X" ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( Q4 @( z0 n: f, K; w) M0 B
usage: himr <address> <value>. sample: himr 0x80040000 0x0
, d: ]+ N$ x6 @/ b
: z- `+ l& E+ W! A9 v* [4 A. ?! j
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 p. T) K8 A, P) a) e5 B, v6 J. y: S7 `9 d( r
补充内容 (2012-3-8 09:42):
% A5 Y* s5 X' N( T9 \! vhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数/ ~0 i* [9 o  b0 R& v" a" T  ^4 t% ~4 G
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
: _% ^0 y4 z+ X, Y4 ^
0 z3 y8 E# \- R0 y9 D# t8 a$ shimr <address> <value>. sample: himr 0x80040000 0x08 \2 ]# x# ]7 \/ z4 U
. c( p! \. I( f+ [$ t* _4 f/ u% p( @
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& p- o( B) W) b4 a  ?himr 0x80040000 0x00
6 C& f4 A; J6 a2 Dhimr 0x80040001 0x11# J; A; a2 Q6 g3 F. o+ ]" k
himr 0x80040002 0x22' x- J1 D; w" h) X( k% m0 a
himr 0x80040003 0x33
; G$ b( M( [0 Z* p6 t! k, nhimr 0x80040004 0x44$ E6 l; J* k7 M1 m, s6 \# e
himr 0x80040005 0x55
3 {7 {8 M; V  e5 G  W$ r" J6 \; B" D1 @. r
SN也是类似。
& a! Y; c. e; H- P+ B1 h, c( P" \  r7 T; u' y' h
现在主要是,谁告诉我们MAC和SN的地址?# S( Q. d' |2 H+ n6 c2 z- _
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 |3 O% j0 U* e" w6 i0 Y: v一直想找到运程修改MAC和SN的办法,苦于无解啊
) A! q. r% a0 e- j
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + h+ V% g, D& {/ k
5 y5 A6 h- m0 n, j% _+ \
修改的代码早有了。到今天不会编译。
' _. F6 l7 |: f$ m* l需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    $ o; z  d6 H8 \' F; _
  2. #include <malloc.h>
    ; U( {  |: J7 i" x
  3. #include <sys/types.h>
    0 K2 Q1 r) a) \/ J( C1 M
  4. #include <sys/stat.h>6 @) _9 e4 K" \% z( A3 D
  5. #include <sys/ioctl.h>5 W9 s- Z3 P+ w4 p- \" G0 E
  6. #include <stdio.h>
      K" m' O0 \* e9 B
  7. #include <string.h>0 p5 r. t: _* F0 v7 m
  8. " h( r- X) j6 e! `: e) N
  9. typedef struct {* L& w& C2 E4 l4 {+ i
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 S4 P1 s2 W8 r5 P  M
  11.         unsigned int        sub_addr_count;
    : a* j0 Y. r- g7 j' g
  12.         unsigned char*        e2prom_cmd_data;
    ! u/ k9 y1 H5 s# A# z% A
  13.         unsigned int        data_count;. `& b" m( O" r1 ^" ], ]" h
  14. } e2prom_s_cmd;6 v* Z( K9 R  s- w9 A# M, i- o8 \" d0 x

  15. . Z1 t/ R* K! q! D7 m9 B
  16. #define E2PROM_CMD_READ 1
    1 y$ O/ }, o' @) N
  17. #define E2PROM_CMD_WRITE 28 q7 q. r% n" _, P/ \  T% U
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 \) e# ?1 ^$ Z  B4 Q* C$ }% i/ Y& J( k

  19. / U* y2 y2 z# i1 h7 f% L$ A5 z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ E' c  ^$ [: C
  21. {
    " _- _; L6 m( ~3 f/ J8 |; ~) @. j& j
  22.         int fd, ret;9 r+ V3 H. b/ U$ [! G
  23.         e2prom_s_cmd arg;. t; M8 j  t0 ^8 i. r& Y, x" K
  24.         unsigned char buf[0x18];1 Z3 e& f: d  N5 U
  25. 8 g) Q* O  h5 u' W! K% |7 b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);) G( M& w4 I3 F- Q" n
  27.         if (fd  < 0) {
    4 D9 O# ~8 e. F9 `* r
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 [( G& u0 M# m- O( M$ d
  29.                 return -1;
    7 F0 O' L* u/ f% t$ K  q; y" M
  30.         }
    $ ~; X( T  T; o; v2 Q( q
  31.         arg.sub_addr_count      = 2;: R$ L5 i$ y' ~) B$ c
  32.         arg.data_count          = 0x18;
    . ^, Q! K/ T0 q4 {
  33.         arg.e2prom_cmd_sub_addr = 0x290;' U. r% S, O8 T0 P/ [2 H( o
  34.         arg.e2prom_cmd_data     = buf;8 e& U% ?. [& U+ I: t
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! _0 Y  ?8 p6 N4 u
  36.         if (ret != 0) {
      }' |6 `5 K% ^1 `- H
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ) }+ t+ @+ y6 U. @; P+ X
  38.                 return -1;" A& E/ C4 p9 e) M8 F
  39.         }
    % i: P0 v% j2 ]* ]
  40.         memcpy(mac, buf, 6);9 k+ j7 t, ^! |+ [/ i
  41.         memcpy(stbid, &buf[6], 18);
    $ e: q/ {' x' b$ t2 z: S. I5 b6 N
  42.         stbid[18] = '\0';  f, J) `8 R7 T5 Y% `# f# G

  43. ) p6 m$ {+ g/ T$ I3 n4 m& B
  44.         return 0;
    % i- c7 o% m$ t# T) i( h
  45. }
    ( Y; V8 }6 R! |( w3 G7 i
  46. 2 ~3 D* G8 G2 p! e
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 a" E( A: t8 P7 T* T: c
  48. {
    8 f) ]) a# Q4 B; P6 `
  49.         int fd, ret;6 j/ r3 A2 t% |' u' O
  50.         e2prom_s_cmd arg;, e+ p# S0 s  D, I0 Q2 t
  51.         unsigned char buf[0x18];
    ( \) q- Q/ b5 o) P( J, N( ?

  52. ! R% A5 P# y+ @9 F$ Z& z
  53.         memcpy(buf, mac, 6);
    7 \: T% Z1 t8 t* s# R: j: _4 d8 X
  54.         memcpy(&buf[6], stbid, 18);
    6 u' {2 A' @! x( G3 s
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 V( f! _2 E2 T3 }
  56.         if (fd  < 0) {
    7 S4 X4 X; F9 }- P
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 R( H% z1 j" T/ q1 w
  58.                 return -1;
    2 e0 j! D. B$ w" d
  59.         }6 g, Z; @, y( \+ }- ]
  60.         arg.sub_addr_count      = 2;
    0 @1 a$ T1 \3 t1 z! |$ X
  61.         arg.data_count          = 0x18;/ H# \1 l4 `  E2 l6 ?: K8 `' @
  62.         arg.e2prom_cmd_sub_addr = 0x290;7 m0 }2 E  K- w' d! P7 Q8 v
  63.         arg.e2prom_cmd_data     = buf;
    & ?6 H4 _" @  i0 {0 P7 {& z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);8 q1 I' ~4 L5 Y; u
  65.         if (ret != 0) {1 @1 u+ T" O9 r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    4 U4 |  n- k. }- Y9 g6 s0 w
  67.                 return -1;9 P' ^' ~- R4 X
  68.         }# s7 i2 ?+ N' [

  69. 3 c8 W) O% U  F1 u* z
  70.         return 0;6 i0 T) ~0 U5 @- \, u+ |" v. G
  71. }
    5 X4 h7 P5 |& ?( B6 ~0 A

  72.   Y6 Y; h/ F' s. Y9 z
  73. int main()8 @4 M; y" M9 r8 k  c
  74. {
    7 r4 I# E  y* f! i1 g- t: h2 y
  75.         char c;: Y' u5 v# D; @
  76.         int i, macs[6];
    8 B6 l4 A3 Q) Y" o, K! z
  77.         unsigned char mac[6];) e& c$ P9 }) j( j$ R! N
  78.         unsigned char stbid[256];
    ; j" U, T6 k3 `) c4 ]& O: H* a& r* Z

  79. # K. O/ ~) t$ h* y2 x5 t
  80.         if (readparam(mac, stbid) < 0)
      n7 R9 @. K7 R0 F7 ~0 R3 ~2 r: c: L
  81.                 return 1;" D) n; j, J/ g4 W% J

  82. + s4 W1 f8 B: B
  83.         printf("Current parameters: \n");
    " |/ G1 B* U  Q7 j) n: t; E
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- O/ q6 {& ?, c/ C! E
  85.         printf("  STBID: %s\n", stbid);
    % h6 ^) C4 w8 _4 P# I
  86.         ' ]5 {$ ?! ]" V/ |3 I2 S2 d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , S. e* x) P! J5 ^' H, d& F$ z# s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. n6 o" P: l( D+ Y4 J
  89.                 printf("Input MAC error\n");* y1 o8 k! O1 ~" l
  90.                 return 1;) ^, H' h% @- l5 Z2 H
  91.         }
    , v& X2 ~9 P& X9 ]+ |( m# R7 n# e
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
      A9 m$ C7 G% x- g
  93.         printf("\nPlease input new STBID: ");& q% ^' }: V! L9 s- Q: h
  94.         scanf("%s", stbid);7 U6 n" L0 g( L! @# d" w( e$ m- j
  95.         if (strlen(stbid) != 18) {/ Y, l9 w, y7 x& {0 H8 ?( o4 r6 X" {
  96.                 printf("Invalid stbid\n");
    0 A/ w3 u8 O0 T& H* q
  97.                 return 1;
    " _, v5 H7 \& `0 ]- k$ o7 A" l
  98.         }6 C6 x5 W4 e7 ^! [
  99.         printf("\nNew parameters: \n");
    ; _, J5 h( u8 a1 H- y5 s; b
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, E. i( Q# V( N* r4 _) |
  101.         printf("  STBID: %s\n", stbid);
    % _8 M4 E' l6 R" d

  102. 6 o6 N- j4 a3 ?/ V( R
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 E- n5 f+ X5 Y8 P9 l
  104.         for (;;) {
    9 ]' h7 D# Y# \. V2 f( a) x8 t$ o
  105.                 c = getchar();* q+ Q7 C7 y1 i' D
  106.                 if (c == 'y' || c == 'Y')( t3 i; k- X  Q. a1 z$ d
  107.                         break;
    ' o# X6 y. J( S3 K
  108.                 if (c == 'n' || c == 'N') {+ K3 Z& q8 C0 ?8 q1 i) L% \# y9 m% L
  109.                         printf("\nAborted.\n");
    ! w1 e5 r& o/ [! M
  110.                         return 1;
    0 ]/ J- p( C3 a' D8 {( |6 d- I
  111.                 }
    6 b8 z' x" J. q5 B: N% l, v1 h4 ~4 P
  112.         }# A; G( X5 G/ o% s# w" b
  113.         if (writeparam(mac, stbid) == 0) ! r8 Q( _4 J& O2 l+ }
  114.                 printf("Parameters changed.\n");% c7 Y# |8 a1 y6 t" V( Z
  115. 7 x* A: a6 a  P1 i) ?6 Y
  116.         return 0;! c1 |9 K6 ~& v* h7 k$ N" ?9 I6 N
  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 3 R: T9 b7 ]; `3 a) m" m
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) V+ a3 p6 ?8 X" r4 K, M. @) s9 M你用的编译命令行格式是什么?+ y& \5 m$ L2 S$ J9 G: D4 o( L
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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