查看: 16481|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 _1 M5 F6 ?; j
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 V/ M! t- ]7 k4 Q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:8 v. M' D8 {# N6 H/ K, ?# Z) Q
usage: himr <address> <value>. sample: himr 0x80040000 0x0
' J7 p% o6 o4 h# i0 q& g: A& Q! x8 H1 D9 @1 X, M
2 v. s7 `" B7 \6 h' }; C
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ _: |; h7 F  J& m  S' U/ A% G& N0 p: P* o6 R
补充内容 (2012-3-8 09:42):
( |$ r( R2 b' `6 _  r: `http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
7 R5 |3 F% ]9 E: }0 Z3 M* g0 D% Z这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。8 J# C- q1 R# x/ l
- c9 q3 X9 M9 o
himr <address> <value>. sample: himr 0x80040000 0x0
+ ?2 k" R1 C  z8 A4 g1 `) v) T2 Y0 P; u
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 Y8 H! l" R1 n6 h, s1 q
himr 0x80040000 0x00
! }5 a( I: u3 j  O% @himr 0x80040001 0x11
* t/ K1 ]* T+ C7 ?! H% N% f" Ahimr 0x80040002 0x22
& i( |7 ~& O3 f. hhimr 0x80040003 0x33
2 h; W$ Z5 Y3 W; _1 }himr 0x80040004 0x44
6 `9 k/ t( k* B- Q- W2 R/ }# Dhimr 0x80040005 0x55  w* p, M' W* o+ Y+ z
2 s  z8 ]: q' [1 X3 b' a' Z- ?
SN也是类似。# y) r; }- y- N9 G7 W7 X
" e6 l; p" ~+ g2 e
现在主要是,谁告诉我们MAC和SN的地址?
4 W! T" f( K! z7 T3 J
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 P( m4 u) ], r( l一直想找到运程修改MAC和SN的办法,苦于无解啊
5 `8 w3 b2 l$ L) N, H& d, I
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; g" |" l7 z$ [& l, w9 P- G
) x( v' C' N# ]: l3 Q修改的代码早有了。到今天不会编译。0 _  o- g2 N7 ]# Y5 t# c
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ( n3 [2 x* J+ K; n2 K- j. ~5 b
  2. #include <malloc.h>
    . T; e. x3 Y+ M$ `4 r
  3. #include <sys/types.h>( b2 h' S3 U; p6 r3 a. W+ P
  4. #include <sys/stat.h>8 p. |0 i" F6 O/ F' X7 K9 z
  5. #include <sys/ioctl.h>  t% F. [9 u2 k# E
  6. #include <stdio.h>
    ) b+ F: q9 v0 j  D, h
  7. #include <string.h>
    $ L+ f* l$ B6 O  C5 x

  8. 7 l7 b1 p' N! A; L
  9. typedef struct {
    ! [: f5 A: w  m& ]" j- x" R6 \
  10.         unsigned int        e2prom_cmd_sub_addr;
    . R% i) S% j) c3 h( R, \6 z
  11.         unsigned int        sub_addr_count;6 r- ^; j! J0 f1 P+ D' U: p* o
  12.         unsigned char*        e2prom_cmd_data;3 a' @4 s1 y3 |6 M4 M, e6 Z
  13.         unsigned int        data_count;4 k9 j3 C& \. T2 _8 H
  14. } e2prom_s_cmd;$ \4 q3 R! k7 _% R) f' i# X* n
  15. ! a0 C5 }: Q" F* e5 L& D
  16. #define E2PROM_CMD_READ 1# k* d+ S2 D" ^' e
  17. #define E2PROM_CMD_WRITE 2
    6 |: X" s9 A1 W5 U% _# \% d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"$ ]- P( ]9 ?( n2 V6 E& d) s3 U
  19. 0 b' }  Z) k% ~2 E
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " s% n9 ], @2 Z" Z; |5 i- b+ f* A
  21. {0 p0 \2 W% |8 w( f
  22.         int fd, ret;
    6 h+ G4 j+ A- N& V
  23.         e2prom_s_cmd arg;9 L8 p; g2 L- M+ H3 l; ~0 ~7 h' w
  24.         unsigned char buf[0x18];) o1 R: G$ R' A0 P/ d. ?

  25. . h) L& V" ?* l" g& g
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ a% @! t1 ^- L  _0 J3 n  C( |3 l
  27.         if (fd  < 0) {
    % U2 x; ]( ~( m/ _) C
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 M( }# R& l) ?( j1 v* e
  29.                 return -1;& X+ V, {' M2 a9 c$ l2 x5 W; f
  30.         }) y3 C5 ?8 j/ T4 `) x
  31.         arg.sub_addr_count      = 2;
    / d* X6 c- F& ~
  32.         arg.data_count          = 0x18;
    ! ]; A) X; t1 j0 y9 X9 L/ q# u9 ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' V+ U+ }1 j/ @; S. g; p$ G4 e" \5 _
  34.         arg.e2prom_cmd_data     = buf;
    4 `% W# K# Y( u4 Z2 k  u
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 M3 L7 r% f6 @3 X4 i. `! M( T
  36.         if (ret != 0) {' ^: h9 d( D  I, l! ]' B. N, @
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);3 R7 H( w+ N7 M% s  T( V* m
  38.                 return -1;
    0 J( [# M! d  S4 [
  39.         }' k# H9 N. S' B. M4 L2 Q
  40.         memcpy(mac, buf, 6);
    ' r6 h$ M7 Y% |) H7 `
  41.         memcpy(stbid, &buf[6], 18);6 t$ S) c3 U5 e! d  Z/ T
  42.         stbid[18] = '\0';' b# n! E6 G8 E; D

  43. 2 R$ H( D" Y, N
  44.         return 0;
    ; ]+ f9 ~" t2 A4 |# ]& Z6 v5 v
  45. }6 ]7 }3 N  p! Z" v( q# T) ^

  46. 0 T" V1 z- O$ \0 T& P' |4 e
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 c9 Y; U  i4 q# Z/ a# P% U
  48. {
    1 y! q; j0 j* A& ?, o
  49.         int fd, ret;
    " X( c* a) B- d/ I6 r3 a
  50.         e2prom_s_cmd arg;
    . y5 \/ e9 n) U7 T/ X1 M! `% A+ U1 H
  51.         unsigned char buf[0x18];" ]' a. w& ^8 ~% Q2 `
  52. " O. J( F# `$ M/ h4 _
  53.         memcpy(buf, mac, 6);
    ! m" k; R8 a4 p# q/ i3 z
  54.         memcpy(&buf[6], stbid, 18);+ e& Y: ~' E2 o0 q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . E  S3 V* J7 `
  56.         if (fd  < 0) {& |' ]+ m  d1 T7 `) \
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , M2 d' B9 Q. x- G1 h3 c" ^
  58.                 return -1;) G; l/ y4 O  W; u5 z. G0 P% ~/ x
  59.         }  Y. y+ |( S! U' w$ q! m6 ^
  60.         arg.sub_addr_count      = 2;& i/ z( i0 K% f
  61.         arg.data_count          = 0x18;0 f" ]4 ]" q+ `3 i0 ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;& b" m" f! I$ X, C% L5 j5 j6 e1 {
  63.         arg.e2prom_cmd_data     = buf;. O$ e: C) A1 M; _
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , S5 A7 t" i/ _; F, g; L! k, {8 W+ M
  65.         if (ret != 0) {- F% V; u) r9 j' A% V& m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 i* X( g0 @6 |3 [
  67.                 return -1;% \, G6 P) x; N, v; H
  68.         }
    ) X% `. F+ Z2 s) ^- M5 Z3 v! i
  69. ; Y0 e' A7 s2 a; l; y
  70.         return 0;- o2 K+ D8 G4 y; z, o: c" w, f+ _
  71. }
    6 i0 E$ O+ [+ y. i8 f% J
  72. + `& ~6 r0 [" y5 @* ~( c
  73. int main()6 W% g0 q1 \  r5 M: D* n8 x
  74. {
    1 G9 h+ H! C7 @2 U7 e2 D% t3 G
  75.         char c;! d) b8 f& W' |/ e
  76.         int i, macs[6];
    2 A3 M% G$ K. F' r
  77.         unsigned char mac[6];
    , [# w) M3 F1 _7 S% H% N/ d; g
  78.         unsigned char stbid[256];+ q! n9 E# W3 g3 C
  79. - U! U) b' G2 f% I8 S8 O1 b
  80.         if (readparam(mac, stbid) < 0)
    # [; P% ~/ p( ]1 Z5 c" Z" |7 o
  81.                 return 1;
    . \6 }# d9 G7 `- t: h7 S
  82. $ K) Y! y4 D+ t6 V
  83.         printf("Current parameters: \n");$ ]( L2 y. ?" _: n' U' n8 s
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 C' ~+ a/ \3 s% d
  85.         printf("  STBID: %s\n", stbid);% }) ]* Z" d$ f: b) L
  86.         8 e! r: r3 P2 n
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 |# [3 w$ K- O1 K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {/ Q; p3 y' V- S. q# U; Q# p- E6 _
  89.                 printf("Input MAC error\n");
    8 B2 {4 Q. e( @2 G* c5 d/ h: U
  90.                 return 1;
    - W" k* Q' q, w6 T& v
  91.         }2 h( x, Y) X9 r; f6 N
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - e! x5 p1 m2 s/ G
  93.         printf("\nPlease input new STBID: ");: {3 K- [0 D+ {5 z1 c
  94.         scanf("%s", stbid);
    3 e, Z4 W3 W# r! Q6 `0 ?& U( |! Z% B
  95.         if (strlen(stbid) != 18) {
    4 d2 v2 w( I( x1 P# e, l
  96.                 printf("Invalid stbid\n");2 x& n& L& {8 E, R
  97.                 return 1;+ k7 _& @5 M( a; x0 Z8 s
  98.         }
    - h* [% l3 u: ~. _- J! K
  99.         printf("\nNew parameters: \n");
    + i# y# K2 h9 l9 w' a8 n
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ N0 L# x) p; J& C! A
  101.         printf("  STBID: %s\n", stbid);
    $ e9 z6 {0 h3 a9 ]
  102. 3 o9 f' I# }9 j1 s) [/ U6 S/ I; x/ ?
  103.         printf("\nDo you want to change paramemters? (y/N) ");, ]) z- o6 \6 n3 I5 ]4 R
  104.         for (;;) {. o+ U- R) u6 g" D+ I2 }
  105.                 c = getchar();6 E2 }* {1 f: _# W1 d
  106.                 if (c == 'y' || c == 'Y')
    1 l' l. W  Y9 \' o- x
  107.                         break;) N& C0 r$ y% S! k, [& \
  108.                 if (c == 'n' || c == 'N') {
    . W7 Z( @) I- T) Y( |' z. m3 w/ T
  109.                         printf("\nAborted.\n");
    & ~8 o$ O% o; J2 S( w
  110.                         return 1;
    9 H+ o8 p; b5 b6 F
  111.                 }1 T8 f' q6 ]" O4 n
  112.         }8 q; w- v5 S" S6 T, ~" i; Q6 c
  113.         if (writeparam(mac, stbid) == 0)   i$ G% j" f) t* ?. M8 o0 x, p
  114.                 printf("Parameters changed.\n");9 p: m4 k/ v* n: v# R

  115. * R! W9 V9 H, ]; V4 O4 F( S6 B# P
  116.         return 0;
    ' W6 @0 x. y" {7 C% f
  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
6 l3 t6 L4 n& P在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 r* Y8 Q3 p9 {' |* {& E3 @你用的编译命令行格式是什么?, C# x* c/ a. Q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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