查看: 17638|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; S- ^/ g# f+ ^' n4 W9 i0 y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 d' h; r7 V" c+ a/ t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% Y8 E0 u% f, u& R# J8 pusage: himr <address> <value>. sample: himr 0x80040000 0x0) J, v' }  y) |  u- |& \& m
) |3 X0 S% @* U! Q5 X! O! F
+ K; l" r$ O* m
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) z+ C7 r+ I+ E& o6 ~. F; E. ?7 f8 ], K% S+ z) Q
补充内容 (2012-3-8 09:42):
0 D0 Y) E% `/ ]8 Y9 {- O9 _http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; w3 W: n$ d0 g0 B! u这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
2 a9 p$ o" M5 E6 r- V4 A9 ]# {  |
& Y+ D& L; C2 ]himr <address> <value>. sample: himr 0x80040000 0x07 {7 p7 p* h$ y' _2 N0 w7 e3 E4 A$ a

3 f$ }. y/ d) R( p例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。2 m) V" {0 `( h/ p
himr 0x80040000 0x00# J) \# a" H7 h8 l# A! O
himr 0x80040001 0x11# f  r* A% q  \4 i( e* |
himr 0x80040002 0x22* X6 U: w2 F! F# U1 k( B: p
himr 0x80040003 0x33/ ?: d& E: U: n( U& S. U
himr 0x80040004 0x44
/ d% \; O" s) n' h- hhimr 0x80040005 0x55; b# `! \% A" [' h8 F

4 w( B) {3 k4 p9 }# t: ZSN也是类似。
! @) \6 A4 X# t: I* @; U& b+ {, ~3 h
现在主要是,谁告诉我们MAC和SN的地址?
! \/ F5 @) V+ z/ X. C
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 }2 R# d% K" H- {, A( e2 J
一直想找到运程修改MAC和SN的办法,苦于无解啊

4 f( f1 I  G$ G源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& u3 i. z! @7 `2 f2 `2 y1 F
& G& P: i- d: J  i: w( |, C修改的代码早有了。到今天不会编译。6 N, K+ l- m4 N" {* |3 @
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) F: b9 J4 d" q) k7 P
  2. #include <malloc.h>
    & E4 M* L9 x9 _( t  w4 p
  3. #include <sys/types.h>
    6 }3 F* `6 ?, h
  4. #include <sys/stat.h>
    , x2 Z. E9 ~: a) X7 Z
  5. #include <sys/ioctl.h>0 P  }( T3 \! H, L8 h) J; ^5 B3 x
  6. #include <stdio.h>& W. e, _- S2 U- ?) L
  7. #include <string.h>$ u! m1 O1 ^3 I$ {5 b# U& n; M. t, A
  8. 3 i/ ]6 y( W5 r8 ~4 J
  9. typedef struct {
    " _; w/ _4 j1 {2 C0 C9 j
  10.         unsigned int        e2prom_cmd_sub_addr;1 O% D# J1 U2 Z5 A, L$ D% P8 g
  11.         unsigned int        sub_addr_count;( h2 P6 [& E1 [" B/ q
  12.         unsigned char*        e2prom_cmd_data;9 s; X+ v, c2 [7 x
  13.         unsigned int        data_count;
    / q9 h! y- Y0 e
  14. } e2prom_s_cmd;
    % y) b" u( u5 A, o% \# k

  15. 6 P* H# O! m9 d& \
  16. #define E2PROM_CMD_READ 1
    ) k0 J/ p- P6 r% u& a$ u
  17. #define E2PROM_CMD_WRITE 25 Z* o  A7 x, K3 ?
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / s% I' P7 r$ |; b9 A( X5 r
  19. & r0 o# Y0 I" u+ `( p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" z5 E, _& t/ v( O2 k' k0 A/ s
  21. {
    ' @, t' }% l: V
  22.         int fd, ret;  c2 ^8 y1 s, m
  23.         e2prom_s_cmd arg;' T- |) ]$ \+ W5 O- G7 E
  24.         unsigned char buf[0x18];; @  W+ x5 p: \4 b

  25. , D7 Y/ q  Q; D4 t5 q9 g: j
  26.         fd = open(E2PROM_DEVICE, O_RDWR);& F! i$ Z& t5 C8 V
  27.         if (fd  < 0) {! x' b4 U5 Y* D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& ^8 S' z$ t. q0 @  o+ u3 G
  29.                 return -1;2 l6 w5 X. a4 k* w' V# K+ h% l2 D
  30.         }) t8 ?% q! z1 u" F/ L1 m9 B
  31.         arg.sub_addr_count      = 2;
    * g* y* S* A" X
  32.         arg.data_count          = 0x18;
    / P  P. r; {, G9 G( R4 W
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 V" U( m- N: y8 p  _
  34.         arg.e2prom_cmd_data     = buf;
    ; W+ e1 k) J+ H+ U) i" j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' E; ^6 W$ M: m9 K
  36.         if (ret != 0) {
    . ]! _. Q9 X# q; I9 [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# L* U4 [7 p6 j( ~  c9 J
  38.                 return -1;! W) Z+ `& a) I0 Z3 r. m" b- ?- v1 Q
  39.         }
    4 ?9 J7 v2 E$ l8 J( G
  40.         memcpy(mac, buf, 6);
    4 C% j3 g# h7 n' B6 `; q1 f# o
  41.         memcpy(stbid, &buf[6], 18);  c" s# Y8 s, `1 I
  42.         stbid[18] = '\0';& z" B8 K9 F* P
  43.   b) T6 I. K# f, Y. A( x
  44.         return 0;
    9 m6 V0 E7 I" c1 ^  ?1 i2 Z
  45. }
    3 ], s1 L5 M# ^! P& ^5 j* b

  46. 3 I: j: w/ r5 F5 e; L+ T4 U- i
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 q, O, ^0 b+ y: N* s" q
  48. {
    4 Z& e) C, k' _* Y& ?; ]- d
  49.         int fd, ret;
    ; ^* U8 x8 m) T/ S4 d, X$ i
  50.         e2prom_s_cmd arg;' z1 e4 |- Z, h; S! W1 X$ C
  51.         unsigned char buf[0x18];
    ) Y9 Q7 G( u9 C

  52. 8 a- x) {) I8 q# \
  53.         memcpy(buf, mac, 6);
    % k9 \" J! n* q* S+ y
  54.         memcpy(&buf[6], stbid, 18);: ?, n9 ?$ V0 p1 ]
  55.         fd = open(E2PROM_DEVICE, O_RDWR);9 M4 K, i2 q9 R
  56.         if (fd  < 0) {
    5 r' D- L8 y9 u0 Z2 q. }
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, B4 x, p4 G8 c5 x( C, L* q" l
  58.                 return -1;3 X! a0 V2 S9 y% ~  ?/ G
  59.         }5 r& O9 D% [' o2 O2 ^# E! ?
  60.         arg.sub_addr_count      = 2;* v1 c+ b% V. F6 }
  61.         arg.data_count          = 0x18;
    # F) t) g! o5 Y% @# E8 j  B4 }
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 H! d0 U7 Y, C  ^; m2 k  p
  63.         arg.e2prom_cmd_data     = buf;' J" |5 G8 ], x# K$ f! W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" d) [7 P" G* T# @, A
  65.         if (ret != 0) {
    ; f6 ?" \6 l! D1 J, {1 E
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, ?4 `% l" H. T8 U8 h4 f  L" L$ S
  67.                 return -1;& X6 S1 v. B3 L0 @4 C
  68.         }8 s( T& u4 a  i7 W

  69. . J- ^2 j  p' W& N3 c% }' e: Z
  70.         return 0;
    % z- a0 e$ O- a; q2 r/ z% R
  71. }" }- g9 C9 ]' d" n* c  e

  72. . t( Y! w2 G& b, _" H$ z- y! K* V3 ~
  73. int main()
    % J' l. @, a" C2 u/ c% @1 Q
  74. {0 |$ F8 ]1 |& d, [
  75.         char c;+ `7 ~6 o5 N0 x1 I% B
  76.         int i, macs[6];
    + \, Z( b2 D8 s# A" b
  77.         unsigned char mac[6];3 @  E- j4 N+ @/ x
  78.         unsigned char stbid[256];6 R! `1 J) M2 q8 C+ W4 U5 F; r

  79. 9 T& q/ L- o' x) t. S, _
  80.         if (readparam(mac, stbid) < 0)& }/ e! J# p/ h9 p
  81.                 return 1;; c8 w5 ^4 h. o) r+ c9 k% |

  82. - o! |9 r- K- E1 }0 H
  83.         printf("Current parameters: \n");. r" W  \2 N1 @1 h: P: w% S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 Y6 F# f6 s! Y3 l! E  a0 a9 @) m
  85.         printf("  STBID: %s\n", stbid);- d  |3 B* @! a( |9 r
  86.        
    3 l* a3 [) T$ d' F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 z* q5 c& o2 f4 a9 m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - u$ j/ ?& `8 Y5 h0 |- m2 \6 ]* b
  89.                 printf("Input MAC error\n");
    " E. A0 a+ W0 h* ?; g  O4 Z
  90.                 return 1;8 c0 V  Q( G4 d. g, A+ |6 e
  91.         }, S9 W& z* J- E, V2 ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    $ Q. [. I! `, |  _4 J9 e# I5 D
  93.         printf("\nPlease input new STBID: ");. L; A: h. `; S5 x/ d( B1 r
  94.         scanf("%s", stbid);
    $ [/ M0 x* A3 h8 ~
  95.         if (strlen(stbid) != 18) {
    4 Z* g* E& Q/ z. p
  96.                 printf("Invalid stbid\n");
    3 a3 ~" W, T  U, C3 A
  97.                 return 1;- k: K$ K6 T0 h' X- ~
  98.         }
    2 y# y% P2 J9 G2 X* Q$ f1 z
  99.         printf("\nNew parameters: \n");
    ' g( p) w2 _7 D( H
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! M, F! `1 l; \2 ?. A# g7 Y
  101.         printf("  STBID: %s\n", stbid);
    ! E- H& X! ]: l/ c% W' j( g. ^# c
  102. 5 @" }- m1 w; ^3 I, u% E! R* o
  103.         printf("\nDo you want to change paramemters? (y/N) ");- k, i! ?+ j) E# w1 |
  104.         for (;;) {
    2 R2 s' S0 q7 c5 E) p3 U
  105.                 c = getchar();
    : t5 K5 m3 V. j& e3 E; M  h
  106.                 if (c == 'y' || c == 'Y')
    ! d8 x+ }/ N5 F4 c" n0 ?3 h/ u" {& C& t
  107.                         break;
    / d2 \/ s4 j+ m  U) o4 f2 o* ^0 W
  108.                 if (c == 'n' || c == 'N') {$ k, B8 s) l' _: e3 t3 S" z' G
  109.                         printf("\nAborted.\n");
    0 h/ V& C0 g! s- H! t! j9 o
  110.                         return 1;; r& @# M4 e" e! M# r' ~. I8 U
  111.                 }
    ( \9 V1 R# f  G9 _: O8 ~8 f
  112.         }, h3 O; U3 G& k' |, m. X
  113.         if (writeparam(mac, stbid) == 0)
    & C* d9 T0 \1 Q4 h
  114.                 printf("Parameters changed.\n");6 x" j" ?- ~" v8 h
  115. ! r/ O3 V5 a& u5 `
  116.         return 0;
    4 X$ E; v* i) H. M( \- W
  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 ; ?/ c* S; a! f
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: R7 o& P: D5 T4 I& f, ?0 H你用的编译命令行格式是什么?
* W( \, v2 S0 ^/ L/ O
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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