查看: 16901|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 K( Y) I& m- a  A% q! a' ~5 K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - q9 X4 u7 [) D! b
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! g+ Q% E/ H) M9 `. C3 qusage: himr <address> <value>. sample: himr 0x80040000 0x0
" c, a0 `7 V! T- Y% X6 C
9 \( z& @6 S. a! _, b- N
& E& {. a0 ~& x3 E不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 a$ n. Y! R4 y5 _6 M8 w, ?9 s

1 p9 l0 X2 W4 u5 S/ s; t补充内容 (2012-3-8 09:42):
+ o" ~1 i- F4 {+ y/ k  s- C# shttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 k- r4 A- Y. K这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
( ~, Q8 j0 ]4 {( ^2 \
, K( X* z7 S# k  Phimr <address> <value>. sample: himr 0x80040000 0x0
1 I+ d5 G4 T; e: r5 u
7 ]8 w% g, k+ ^: A6 ]例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. w% H" N- K& |6 U8 yhimr 0x80040000 0x00
9 c) A/ S( h' N8 h. G3 s& W) u9 u: ehimr 0x80040001 0x11
2 a1 ~5 Q: ]; o# Uhimr 0x80040002 0x22
5 \3 u4 V# I* q4 h+ [himr 0x80040003 0x33# T" W6 L- Q; s7 u1 ~- A+ q
himr 0x80040004 0x44  K- Y# R& J1 e/ a+ l# y
himr 0x80040005 0x55
4 X2 ^& y  _' W$ R2 \* e/ x5 q; n1 L( x/ F6 [
SN也是类似。
8 Q4 @! n& x! z6 e8 |
+ M! P/ |+ o! R* h3 ^# v. s现在主要是,谁告诉我们MAC和SN的地址?
- C8 v/ d+ Q/ \  u
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 L* W8 o- P' w/ H
一直想找到运程修改MAC和SN的办法,苦于无解啊
7 j# B* C" H( [  [+ T
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 0 k/ |# {' c/ x0 f4 Y! m
; {& M9 f- V& e& @/ m
修改的代码早有了。到今天不会编译。& Q1 g( _4 t4 e3 [, Z
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) i9 Z& q' N1 y# O- N& u
  2. #include <malloc.h>
    % \6 B) ]* @, ]& a
  3. #include <sys/types.h>8 N9 o$ u* t+ A8 }, ~( P( q% ?
  4. #include <sys/stat.h>( y/ C) D8 {/ ~8 ]4 N
  5. #include <sys/ioctl.h>
    * k/ t  g2 l/ x2 o
  6. #include <stdio.h>+ L( ]/ l. V4 R8 s
  7. #include <string.h>  \2 ?  {- j; N: v1 G

  8. ( w! U2 o( g# i- Y, A6 r
  9. typedef struct {2 _9 F' o& s2 ^$ w) F
  10.         unsigned int        e2prom_cmd_sub_addr;" l1 K/ T. U4 ^5 R$ E, O! A5 X
  11.         unsigned int        sub_addr_count;; V- _! `/ d! D' T2 ]
  12.         unsigned char*        e2prom_cmd_data;
    * \4 [- @0 u# _
  13.         unsigned int        data_count;
    ! x+ r5 t4 ], C  t: `, p
  14. } e2prom_s_cmd;; E' Y' I# _5 H  f# Y9 F
  15. * i( R  b$ K0 n6 u
  16. #define E2PROM_CMD_READ 1
    , P8 a. r! K. o' g" d& V. ?5 q1 M
  17. #define E2PROM_CMD_WRITE 2
    , ]8 b/ \2 @6 E3 n) P4 T3 |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 O/ R2 W& z5 y4 z; R. E
  19. 5 G% B- Q6 L* m
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( D4 h  B4 i, N
  21. {% {& Z1 b- b* I8 f% O" e
  22.         int fd, ret;1 I" d' N  a0 l4 _! E( v" K
  23.         e2prom_s_cmd arg;+ T; ]6 k" T% m/ f  n+ l8 O* t+ h
  24.         unsigned char buf[0x18];
    : U% r( h6 D& ?3 ^$ U9 `# R
  25. ' ?7 O2 T8 V+ [6 Z' [/ {# b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' D) d/ S- C% V" p0 T- `
  27.         if (fd  < 0) {2 B1 b% p) b/ s( e! S3 M
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 s+ w2 n+ O! C% W( t
  29.                 return -1;4 z7 l+ T4 t% X- N. t. m  o
  30.         }
    8 O) R3 F! x: G  i' @
  31.         arg.sub_addr_count      = 2;$ z: x- b& ]3 Y2 \. R
  32.         arg.data_count          = 0x18;) `+ k# l% r" M0 d" Q1 ?  N0 R" P
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    $ F. d- f# d/ z8 g- H5 \
  34.         arg.e2prom_cmd_data     = buf;4 u: z1 v, Q6 d+ a
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - X% q$ H; P& g$ }# D( t1 E+ P
  36.         if (ret != 0) {2 K: d8 Z" ~1 ?! ^4 j- Z0 R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 f; F" F2 z% {5 P2 T, [
  38.                 return -1;
    1 x) V) N. w; K
  39.         }
    2 E3 A, A' Z5 e8 d+ o8 F
  40.         memcpy(mac, buf, 6);
    : H8 ]& L1 c- o
  41.         memcpy(stbid, &buf[6], 18);0 t0 w, q) j6 A4 Y
  42.         stbid[18] = '\0';
    ) [* ^" D# H, O1 K/ ^

  43. $ o3 c2 p8 P! g6 d$ d. V
  44.         return 0;! K6 I( W$ y; d2 n3 @2 G' e3 Z
  45. }
    6 a* R) Z6 P# ?% ~
  46. # U4 G8 {* s* J6 E* ~3 `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . |: l, r' J% ?. B4 G9 f
  48. {9 m4 L# d, h+ V. s4 f
  49.         int fd, ret;
    $ U6 j: O3 W3 _8 f
  50.         e2prom_s_cmd arg;
    % G, o" J5 V$ z0 r3 v: O
  51.         unsigned char buf[0x18];, F( z6 Q0 B. |/ U$ K- O. e

  52. % g! U7 L7 N) r. h, \5 Y$ n
  53.         memcpy(buf, mac, 6);2 ]! z% d  Q* Y9 P9 d0 I
  54.         memcpy(&buf[6], stbid, 18);
    ( j/ L) V$ W7 B2 G0 k6 }5 [; R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ m3 w, N& n" x$ r+ r# L/ U
  56.         if (fd  < 0) {
    5 L& \& t! x1 {0 A1 l: O9 a
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( i, Q/ c0 ?9 Y) d7 _6 e
  58.                 return -1;
    ) a( Z' O4 K2 ~) P
  59.         }
    . N: L. ?1 A% G3 X- n- O( o, \
  60.         arg.sub_addr_count      = 2;
    ' j( U0 [; T% o' m+ e6 x
  61.         arg.data_count          = 0x18;
      P3 n! Y9 J# _& }. n9 V
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 v+ z: K4 ^7 h3 z0 T- ]
  63.         arg.e2prom_cmd_data     = buf;# D  Q  f$ K9 v- l
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - i9 s! l/ N( Z7 m" m3 O& z
  65.         if (ret != 0) {' r( P9 \4 t- c2 w! m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);0 D$ X; I8 X: T5 w% {
  67.                 return -1;
    5 g! z9 X- P1 W. B
  68.         }6 z* ]+ L0 S# a! T& _

  69. ; m3 Q. C, K0 y1 b' {
  70.         return 0;4 S- g# l8 t3 r+ V; @# K' N
  71. }& K" P+ `3 w6 j; K( b

  72. 8 N( {/ W/ c: y! S, N
  73. int main()& f% x" y7 h0 I/ A
  74. {
    / m$ h. T& [3 U: H! l+ Y
  75.         char c;2 ]( K2 e3 O' Z6 |; P
  76.         int i, macs[6];5 J" Q! G: B) R" k1 S4 u8 |
  77.         unsigned char mac[6];8 ^" M5 C) x; \& c$ ?1 k* G( X6 I
  78.         unsigned char stbid[256];
    4 c' [: {$ _3 y9 S
  79. ( X. [) R* w. U& \  P7 x3 T* V" {
  80.         if (readparam(mac, stbid) < 0), u/ g& ]# Y1 q7 I& F
  81.                 return 1;
    ; f8 c3 p3 E1 a6 S

  82. 5 a$ a" ]- E$ I
  83.         printf("Current parameters: \n");
    $ m2 U% a. N7 u0 H9 `) U5 W0 b8 s
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) H* J5 A3 i% D! s6 B8 W  `0 r$ L( ]4 u
  85.         printf("  STBID: %s\n", stbid);
    : D0 B- h; q( j! x6 N2 {
  86.        
    5 Q7 Q0 F" S* \+ f8 o  L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 @) ^0 n9 i4 b6 m' M  O7 Q8 \- K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {/ ?# V# Q% z) U8 |1 j6 }
  89.                 printf("Input MAC error\n");
    . V; s6 T8 a2 m" F! c+ f
  90.                 return 1;
    $ g8 E' c  ^) \' i
  91.         }
    6 j6 Q  V# }+ y7 T5 T: Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( e0 y0 N" Q, ]* P* V/ z5 t1 K
  93.         printf("\nPlease input new STBID: ");
    + ^# k" V' Z  [
  94.         scanf("%s", stbid);5 e  }" @) R% v
  95.         if (strlen(stbid) != 18) {
    + w; b- Z9 t0 {" `
  96.                 printf("Invalid stbid\n");9 v& L9 W. c3 z/ ^4 d2 i. C) e
  97.                 return 1;
    ' U. n3 R5 s$ H0 u1 |
  98.         }: m8 K+ b( I, n! z
  99.         printf("\nNew parameters: \n");9 B. M8 U  U! E& \5 f) @  d( \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" ^5 q$ j  e& T0 F2 J
  101.         printf("  STBID: %s\n", stbid);* g8 |+ T- P& r: y
  102. & p6 C6 l9 w& |) g# c
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    , X* p0 s/ f; y6 U' _9 r
  104.         for (;;) {$ `$ A* N1 P0 u( j3 H: W
  105.                 c = getchar();
    $ E2 ^- i0 z& w8 K6 ~  l
  106.                 if (c == 'y' || c == 'Y')
    ! u' N' \5 t/ g9 N, M& q
  107.                         break;, ?8 H4 P1 @# u& \) s# J( v. M
  108.                 if (c == 'n' || c == 'N') {
    + e' ~! }% t  k
  109.                         printf("\nAborted.\n");( h$ F7 A* D/ y9 a4 s
  110.                         return 1;# Q3 O% b+ {' d& N
  111.                 }
    0 e5 t7 b9 M8 s  \7 w
  112.         }0 R; J  A# c% X
  113.         if (writeparam(mac, stbid) == 0) , R; E5 p6 S+ O- i9 A
  114.                 printf("Parameters changed.\n");
    7 g7 A( Y( j9 a! W- W- Q
  115. + P) ?, v% E+ p* f
  116.         return 0;
    ; F1 j, I& ~3 z  I8 }
  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
0 P) A/ K* q- A8 w& q在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

6 W4 @7 }6 e2 t9 e& ]) I; |你用的编译命令行格式是什么?
  p; P1 S& Y7 w1 \0 e2 l4 N. X* V
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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