查看: 16903|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr& c9 c* P- l7 d) d) _2 I
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    , z7 k: ?( m& x2 l) d) a
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
7 u! O; p# j4 m# ]+ a( T0 h2 M5 G5 a7 o" musage: himr <address> <value>. sample: himr 0x80040000 0x0' V8 \3 `% O( b
# a# c# v- X2 v" d, G0 T
" C9 k1 @# n% \0 V/ d' p/ E
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, N7 i* {3 g* o! }. Y& M0 q5 z! d0 L5 h: W2 @
补充内容 (2012-3-8 09:42):
4 N" @) N( p; o2 B- V  S6 Shttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
) ?# }3 U: ^0 u2 n. h这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
7 x0 _( E- \4 G+ h6 x
3 l2 q" U3 T2 q- D& ohimr <address> <value>. sample: himr 0x80040000 0x0
' A7 t" M' |- {7 ?  L2 F4 B& A  |" _+ P. N6 v. X1 h
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。. B: w9 f# E3 F$ D
himr 0x80040000 0x00# n* a" `, q, K* s% [
himr 0x80040001 0x117 C# Q* @* c1 R$ ~& a
himr 0x80040002 0x22
1 J; \4 Y- ]: u1 Uhimr 0x80040003 0x33
7 Y' U: t- I% Z; qhimr 0x80040004 0x44& Q/ l0 N; q! [" P
himr 0x80040005 0x55! ~: W4 t: F% A5 C0 ^7 F
+ {" J% g4 V/ {/ u. ~. S
SN也是类似。, Q& |8 [( R$ g$ s# S
7 w. c* n8 x3 f# M: T
现在主要是,谁告诉我们MAC和SN的地址?
' {" u$ k8 `# j
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! z; Z; m  Y( R  w; C$ i- p一直想找到运程修改MAC和SN的办法,苦于无解啊

! p# r3 M) G; M9 r3 ]源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / [' G0 ^1 v$ w# p( j
; q, O9 ^! W( ]- {0 s
修改的代码早有了。到今天不会编译。
1 B2 o- F( _9 R9 {/ |需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  l* O8 z: j1 H/ V$ w
  2. #include <malloc.h>: Q. r, h8 [' M( ]
  3. #include <sys/types.h>
    / Z8 a( I, b# R) B/ C& G
  4. #include <sys/stat.h>
    $ Z' V% Q/ a9 A# F
  5. #include <sys/ioctl.h>! s5 |1 t/ L& z2 _! X& A
  6. #include <stdio.h>/ |5 J2 _% [5 c3 o+ n! _
  7. #include <string.h>5 g- S+ e$ H6 B. H: K

  8. + |! s/ W$ `/ R4 O
  9. typedef struct {
    ( j$ ~( U6 b9 D- X
  10.         unsigned int        e2prom_cmd_sub_addr;
    ' P" H$ o2 M4 O4 F# U+ c
  11.         unsigned int        sub_addr_count;1 w! n4 g" [% s! {
  12.         unsigned char*        e2prom_cmd_data;
    ! o: S. i# a4 x& F8 L
  13.         unsigned int        data_count;
    8 y6 E3 Z& @' k" M6 E- U8 D
  14. } e2prom_s_cmd;  t0 M7 a5 v9 V% W: U
  15. 7 F- Q$ U: X7 D, {: I4 A
  16. #define E2PROM_CMD_READ 1
    ) G5 c* ?. F+ t4 j' W( l
  17. #define E2PROM_CMD_WRITE 2! g/ Z& \9 ]8 x7 ?( ?3 p
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"" U, z* Q# P7 J& G- c) m& [3 q

  19. ) M  p6 ?" d# S# h: d8 k
  20. static int readparam(unsigned char *mac, unsigned char *stbid)0 R! H8 U7 \' G$ r, ]. M3 q$ i
  21. {# q# O* W0 `9 l7 u( K
  22.         int fd, ret;" ]: ]  D5 n  O( l. o' {) ^
  23.         e2prom_s_cmd arg;
    ( {+ `) n5 n, }$ d# @* s) N
  24.         unsigned char buf[0x18];
    / e: x; N4 P# B

  25. ) T( _' o, u8 X& e' @; a
  26.         fd = open(E2PROM_DEVICE, O_RDWR);; n7 A+ k, I5 _, ^$ m* s* M
  27.         if (fd  < 0) {
    2 Y0 t7 J& M2 V' O" w; E
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 t8 J8 h+ Y& o1 `
  29.                 return -1;/ x3 e( X4 Y1 p& Z  C# S3 ^( v
  30.         }! _7 a0 }& b' }. J
  31.         arg.sub_addr_count      = 2;2 j/ g! b: @: Q/ q( ~6 o$ P
  32.         arg.data_count          = 0x18;
    1 @+ t* ?+ S9 U+ _) Y" F+ L6 @) q' ]2 n
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    # N3 d, i) E2 v, ^
  34.         arg.e2prom_cmd_data     = buf;
    * U# R3 M/ {8 {& t+ M. R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 z& V5 f% U  r- L2 q
  36.         if (ret != 0) {
    / v5 d; Q3 ~$ ~2 @, Y) B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 T/ i; r5 ?/ g4 O, O
  38.                 return -1;6 _( B; k* ?7 w  x* k, O9 L7 b
  39.         }
    # Y8 n$ B& a/ Q8 ?
  40.         memcpy(mac, buf, 6);
    $ v6 C8 \! N5 I$ G! z) p
  41.         memcpy(stbid, &buf[6], 18);
      j1 f4 @/ _- P
  42.         stbid[18] = '\0';
    8 r/ v1 J2 n- G3 d" G$ X% H
  43. / B1 ~' U; D$ i, z1 S) ~& k& j
  44.         return 0;$ _1 g4 V3 r' \
  45. }- G0 ~" P* {) u; c6 c/ w

  46.   }0 F4 {' i' F" ?3 j, d+ f
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ' V: c  j/ z! [+ d7 @
  48. {
    ; ]0 q2 l6 o4 i
  49.         int fd, ret;6 x4 a/ A  ?0 J! ]: j7 T
  50.         e2prom_s_cmd arg;
    % }0 @7 h; z9 g
  51.         unsigned char buf[0x18];
    ( w: ^0 o; P9 g" c+ v$ G5 Y9 Z$ Q

  52. ' e) I. ^, c6 i5 D* w4 h
  53.         memcpy(buf, mac, 6);
    8 }& e4 E7 ?: @, f8 F
  54.         memcpy(&buf[6], stbid, 18);7 u- a& ^- Y* O- P0 G) J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);/ W8 E/ x& E0 V& t
  56.         if (fd  < 0) {
    3 q' B1 t0 W6 d, v$ l, s8 y; r3 U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  \3 }$ F" {2 b
  58.                 return -1;$ R  j3 X5 S' s2 ^( ~
  59.         }
    ' u' V7 {" u5 Q  r2 c: \! r/ }
  60.         arg.sub_addr_count      = 2;# }5 x6 {" A! t  j
  61.         arg.data_count          = 0x18;& _! a2 z: W) ~0 \6 D. Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;% ~- p. Y9 u2 R2 Z
  63.         arg.e2prom_cmd_data     = buf;
    5 A- f# e3 p: }1 e% M( b. k0 e0 z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# `. q0 a/ h3 u% S+ s4 L9 X9 s7 g3 \
  65.         if (ret != 0) {
      p% ~* x0 k9 K. W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);! g/ I2 z: ^9 I1 t9 c+ e# ^
  67.                 return -1;9 y5 m/ }# v) r. V5 w3 a( N
  68.         }7 c( [7 E! P( o6 r4 j2 T' l$ c) u+ C. I

  69. ; H( s. M% m# `
  70.         return 0;
    - z1 _; X% p4 K$ |, U2 V6 E
  71. }
    - E6 M' p7 z( }& C
  72. 5 `+ m* K$ P6 O& D
  73. int main()9 T, |( M( V3 u2 s( Z' j
  74. {
    0 X/ m  E' [: A  l' A! }
  75.         char c;
    ; b! r& k( e) F
  76.         int i, macs[6];/ C) o" n8 [( ]" j
  77.         unsigned char mac[6];& F' S; Z5 q; `. t4 U! K; q# X3 k
  78.         unsigned char stbid[256];! r; o; M/ l, v! F% b
  79. $ }; Z- Z' p6 @6 W& ~
  80.         if (readparam(mac, stbid) < 0)
    3 n% Y. p$ \- t( h3 f. }
  81.                 return 1;& }* v. x3 u2 {) {6 j
  82. & N( m, Z  p2 u. r4 F
  83.         printf("Current parameters: \n");
    + q3 b- p+ V4 |# }# F! L
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 ?1 ~* M/ E4 B7 l
  85.         printf("  STBID: %s\n", stbid);
    $ ~) G, R$ [; Y8 h# D( Y) \% h! r
  86.         2 u0 s0 f8 ~3 D2 T
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 r- N& E/ p: c, Y% J$ b
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 l2 q) d7 J0 Y& Q$ C, u
  89.                 printf("Input MAC error\n");
    1 y& y% J% l: j7 K0 j# w
  90.                 return 1;3 [) k* @9 ?4 x1 Z: {: u. S. N% Q
  91.         }
      K9 z+ W  G$ z! C
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 V, I8 U# H' D& h) Y. z7 Y& w" y
  93.         printf("\nPlease input new STBID: ");
    , n$ M/ I4 P5 K! |+ X. j9 d
  94.         scanf("%s", stbid);1 P$ H: h: H8 i( [' l8 ]1 K- g8 c
  95.         if (strlen(stbid) != 18) {& ^: J2 @) b) }$ r% I/ l7 _
  96.                 printf("Invalid stbid\n");8 p9 n# n" t" [
  97.                 return 1;
    , \: D* k! @! L: k
  98.         }
    * Y) e, b8 D: F7 A7 w% S, Z
  99.         printf("\nNew parameters: \n");
    9 T: r( R. H( a! b
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 t! E+ h" y( g" H+ Y4 {( Q
  101.         printf("  STBID: %s\n", stbid);5 J" C* O- Z1 h6 s
  102. . a& p6 U9 Q# r
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ @; ~1 c4 N4 ^& p1 D; s! P
  104.         for (;;) {# ~$ O8 P+ e2 q+ B" f* V4 W7 x/ E5 G
  105.                 c = getchar();) o' G$ m, O. Q. q5 ^1 w
  106.                 if (c == 'y' || c == 'Y')
    * O' k! o4 N9 ~! ?% _- b
  107.                         break;0 v1 i1 A# `7 F  k$ z
  108.                 if (c == 'n' || c == 'N') {) {: h& ]+ `# o" A9 R
  109.                         printf("\nAborted.\n");
    4 l9 X  C1 t- C& [; ]+ |" u
  110.                         return 1;
    6 {$ |& Q& _" c: o. g
  111.                 }; W$ v3 J* V9 u4 P8 U/ Z) y) g& i
  112.         }
    3 I2 d6 a+ H5 n
  113.         if (writeparam(mac, stbid) == 0) ' O% W( c$ Q( E' p3 c
  114.                 printf("Parameters changed.\n");0 _8 s7 n- ]+ |  P6 @' C1 x( c
  115. & I, H% [  H9 k
  116.         return 0;
    1 o1 s+ `# X/ n/ F* [3 X9 }, ~
  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 : m1 C8 |( ^0 e5 c" g5 g
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ k; i7 ~3 X! a
你用的编译命令行格式是什么?7 H4 c) s* k) }3 H* c# k2 w
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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