查看: 16884|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 O* Q2 t1 G6 U8 Z; e3 V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 k8 E9 r  ]* h, L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
0 v" e. K8 P: n7 h% tusage: himr <address> <value>. sample: himr 0x80040000 0x0; n1 J8 e* S7 o0 _$ }

* q% H9 o* z% n8 f- N
. P; n2 p8 h/ x3 Z! \' O" T不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* b, z: E' L" s1 w/ N  Z# f3 w) J* S. H( {( H
补充内容 (2012-3-8 09:42):' V+ s* N  N2 P# ]- R7 g, f
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; G% {) s! p, K这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
4 U7 c5 A$ S. c2 ]& |* Q( n9 g8 w' F# F3 N1 X# d
himr <address> <value>. sample: himr 0x80040000 0x0
2 H3 d& E. C( Q+ R/ r- |( a5 S% e$ v1 W3 E- A7 l
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 ^/ l" C( t/ s1 M5 G. k1 z
himr 0x80040000 0x00
; c$ ]) F. {: u+ dhimr 0x80040001 0x11
- G. _$ k1 r& Y! S  R( Ohimr 0x80040002 0x227 T1 l  o2 _0 M# Y0 X8 H
himr 0x80040003 0x336 |3 y3 i+ H4 e- c: I3 t+ K
himr 0x80040004 0x44
( T. e! P2 U3 s( j1 V# Chimr 0x80040005 0x55% |2 ]5 H# g3 m" i
0 ~  t6 o8 n' N: ?3 ?/ O7 q8 z
SN也是类似。
% u; @7 [3 o! \! s% D8 e- _0 v: R; |& p$ _1 c6 W. i/ b3 i
现在主要是,谁告诉我们MAC和SN的地址?
4 g, q7 L% l7 I+ Q* G. o$ T) P
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 v" J( p+ i" i8 @% }一直想找到运程修改MAC和SN的办法,苦于无解啊
7 a# ~2 Y2 {' j
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 8 B0 A9 K& Y' X7 G1 l+ |% D0 p

, J/ J7 @1 P1 P; [修改的代码早有了。到今天不会编译。
2 \! R5 o# v2 u  M% U需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % F8 `% P7 _+ p% ^0 B( D" J
  2. #include <malloc.h>
    6 F8 P' S  p. C0 ^! [) ^$ Q
  3. #include <sys/types.h>, G+ m( G; H# W/ J# S+ K( G
  4. #include <sys/stat.h>) W* i! Z: h3 Z4 m. j9 r. v
  5. #include <sys/ioctl.h>7 z, T( n1 O( m2 O, i9 p
  6. #include <stdio.h>& \" h9 Q* y$ F5 D8 r+ O6 |
  7. #include <string.h>/ E) f* a. r  ~/ o! x  \* k
  8. ; p) R( I, S, k
  9. typedef struct {% |/ l3 M$ T' v% d9 B: U; [
  10.         unsigned int        e2prom_cmd_sub_addr;3 b+ H2 [) q/ Z8 T2 s. V9 R
  11.         unsigned int        sub_addr_count;5 n3 R; [& j$ R9 o# b
  12.         unsigned char*        e2prom_cmd_data;3 s5 N. e+ `$ T
  13.         unsigned int        data_count;
    + u; M# d9 C5 U' U. D  I0 g9 U
  14. } e2prom_s_cmd;
    7 m% w4 s4 G) @, Y
  15. 2 C4 C' \) `5 C6 \. T6 X: w
  16. #define E2PROM_CMD_READ 19 z' z7 V! D9 P) s8 }" V5 S- P
  17. #define E2PROM_CMD_WRITE 2
    + ?  Z3 u9 E& q) w$ z/ ]3 r( Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"1 x" E! m4 `$ H3 U, G
  19. ) i3 r1 X0 R1 L' `$ ?
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ `. _+ q8 f  q$ E' x: v- G) D7 ?
  21. {6 I4 B' t& z0 z3 Q/ K: [0 J+ \* W9 B
  22.         int fd, ret;. j, n' z& w7 V5 N" p/ h: l  O
  23.         e2prom_s_cmd arg;$ D; d, M  W, S7 U! {
  24.         unsigned char buf[0x18];0 ?5 |$ Y5 @1 p5 l
  25. " F5 [0 ]- \& D
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! R2 B  b6 ?; j  c/ l7 p
  27.         if (fd  < 0) {
    " R; e& F% w- G" ^2 s
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * a, n! h" r% h/ y
  29.                 return -1;4 W  k6 [+ I1 U# }* I6 ?3 t
  30.         }
    9 P0 B0 e8 }4 ^, X( s  t) O& Y
  31.         arg.sub_addr_count      = 2;
    + w8 ~# o  m' d
  32.         arg.data_count          = 0x18;/ b! M" W( ?% h  D# P
  33.         arg.e2prom_cmd_sub_addr = 0x290;% |6 |2 `- H% z2 `" Y% E% L
  34.         arg.e2prom_cmd_data     = buf;/ B6 J, G1 c2 w% f! U( ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, F+ |- V  E/ k( M6 l: d
  36.         if (ret != 0) {
    # W9 f# `& g! ^* [8 \1 \
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 ~: R6 G0 [" k  p+ {( F7 Z" U
  38.                 return -1;
    2 ~  N1 D8 D7 f# T/ d' M, M$ A
  39.         }
    ' t1 w# }3 e" D1 r# F
  40.         memcpy(mac, buf, 6);+ b3 g0 D1 d! s2 I5 n7 i
  41.         memcpy(stbid, &buf[6], 18);6 D; F9 I0 n9 @, b
  42.         stbid[18] = '\0';3 p0 Z4 o5 Z8 c

  43. 1 S9 h- T1 ]9 M7 s* Y
  44.         return 0;6 G/ b9 g9 s+ ^2 Z1 Z& Y
  45. }& I8 W/ P2 _, _9 H( P1 j
  46. 6 ^- @" @+ f- L6 L1 O4 r9 o+ n4 E1 |
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 n- O, ?: X" \1 A6 ]# _
  48. {1 L) F( U* W1 `* p7 w3 I' S
  49.         int fd, ret;2 J# O9 P1 `( [
  50.         e2prom_s_cmd arg;+ ^' E( {) T4 x" h; x! S
  51.         unsigned char buf[0x18];
    5 k" Q4 K6 n. m* y2 @

  52. , h" P7 o/ }7 V: p3 f9 Y8 N
  53.         memcpy(buf, mac, 6);$ g! I1 I9 A6 @
  54.         memcpy(&buf[6], stbid, 18);
    ( X7 ?# }) C2 i2 U  ~2 U
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 _2 C  c, c) q! y/ n2 M$ s0 q% T
  56.         if (fd  < 0) {
    0 ^* J# W8 _0 N
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  Z. _! F3 O3 f, c) |# G
  58.                 return -1;) m; c$ b' N  q& Y: L
  59.         }
    7 {7 c" Z7 Y( O' G
  60.         arg.sub_addr_count      = 2;
    : Y- w$ l3 P) B9 f
  61.         arg.data_count          = 0x18;
    1 v! R( x2 x+ ?- z* N
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    , Q1 ]6 x) R2 C3 h6 l9 V
  63.         arg.e2prom_cmd_data     = buf;- A2 y) A* y! N: _/ A
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);; `% V4 c4 J0 Z6 _+ h. w0 k3 d. e6 e
  65.         if (ret != 0) {
    : Z# @$ Q5 F( H: c# p8 m" Q) c
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 Y9 o, T: R6 y3 M
  67.                 return -1;, f* H0 S7 R3 Y: D8 A9 n: Y
  68.         }9 w5 ]* d7 _. q; F& x0 N
  69. : J1 |6 m" m( q3 F
  70.         return 0;( X; b6 g5 p- i: d. C6 Q2 V, {) W
  71. }0 F! S8 t6 z5 O2 U

  72. # H( K7 `' f2 a; ]* k
  73. int main()
    * h. F, s+ J  \' b) S! w1 ?. j
  74. {! |$ V+ a! m( {& e- S
  75.         char c;# ?; V. \1 u, X; B2 v+ V' \
  76.         int i, macs[6];& v+ p' i* A& u- D4 c- N2 \
  77.         unsigned char mac[6];# c. c' T% `- I$ Z3 G
  78.         unsigned char stbid[256];+ K: f6 q9 q( {. {/ @8 u

  79. # [4 T4 D# H; J% d7 f1 p* t! o$ D
  80.         if (readparam(mac, stbid) < 0)
    ' O4 ]8 w; M, h& V# W  E3 q1 U1 R
  81.                 return 1;2 T' @6 u! i; {1 ?2 L" V, B2 _1 I% s7 B
  82. 3 R% @! [- M  M4 C# S8 f1 O
  83.         printf("Current parameters: \n");0 t/ J" x* K' Y! l+ x* ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 ^; }- \# J  [. t4 s' l- X7 }
  85.         printf("  STBID: %s\n", stbid);
    " Z" w0 y2 `2 V1 ]* z
  86.         6 N5 y0 X% q+ {4 ]7 n
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! B( r0 f/ o& Q" U2 D4 H9 [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 `8 L% z& O! C! l, \
  89.                 printf("Input MAC error\n");. ]! z" p. i4 N! ?0 a
  90.                 return 1;6 O8 {# Y: a( K' i+ b5 g% S
  91.         }* ?- H3 r; j5 K8 L/ B$ l. z) @% h
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 I( d4 k+ u, @! m4 l, d
  93.         printf("\nPlease input new STBID: ");; i! K" ]/ m$ O' X
  94.         scanf("%s", stbid);7 ?# u: X) n) m* ?5 e, R
  95.         if (strlen(stbid) != 18) {3 E3 |" n; ]# K* q1 |1 W: y
  96.                 printf("Invalid stbid\n");0 y1 w: ^5 j- D, v! t. B; y+ u. S
  97.                 return 1;9 Q# C3 u' A$ [- r
  98.         }9 I8 i# o3 G& D& i; S8 @7 k
  99.         printf("\nNew parameters: \n");" Y6 _! y' Q1 P# M  Y/ R; D/ p
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 h% L  M: k2 q1 k$ [
  101.         printf("  STBID: %s\n", stbid);
    . X% x% ?# v1 d  b& g9 d

  102. : P$ j" v9 Y8 C, m) ?) @! }& Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 F" h" \  G/ R
  104.         for (;;) {
    " A$ C. J; T  j& x& g: ~
  105.                 c = getchar();. o0 }0 f( I8 E) J0 H
  106.                 if (c == 'y' || c == 'Y')
    & L( a* |8 ~, f/ ]6 y
  107.                         break;
    9 d  K; n3 h7 s' f0 O7 Y6 y/ V
  108.                 if (c == 'n' || c == 'N') {
    5 Z+ C8 ^9 v9 u# k8 X. h. ^  l3 _
  109.                         printf("\nAborted.\n");
    * a( l7 H1 W0 n, |2 d2 G; z- j
  110.                         return 1;
    3 g4 e9 A' y5 Q' i% p' ]: d
  111.                 }" s9 K7 d% O% \; }
  112.         }: `7 J/ F( [4 f
  113.         if (writeparam(mac, stbid) == 0) 0 e0 O- h4 z+ p1 o
  114.                 printf("Parameters changed.\n");- M) o, ]( n  N" _( b& A% f, y2 \- L
  115. 8 ?4 R, X  r  d8 U; K+ T$ d
  116.         return 0;
    1 o  r# I1 e6 K7 H" h, X
  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 + n: z' o/ T0 s+ O! ~5 g5 W4 |
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& a7 v" j3 u" w" v& f. G' C你用的编译命令行格式是什么?5 Q7 s/ X& L' Z7 n
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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