查看: 17056|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
      G6 V6 s, T. k$ c) @" V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- M7 X* }8 h; E/ A9 `
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' b3 X0 I! y9 T) `0 N9 Q( ~. q
usage: himr <address> <value>. sample: himr 0x80040000 0x0
; F! v0 ~+ T, e, {  u$ z% `7 a( a# Y9 B
4 M5 [0 S  H; J' X1 r% U
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) V+ E) m; J2 V7 w- k4 i+ `+ }
) H* ^; B9 j  `' I补充内容 (2012-3-8 09:42):' V, Q( I0 r; w, p( W; T# U
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" \6 G3 x+ I! C2 k7 ]: N, i2 d这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。5 d! |9 F( u3 E" G: K+ D) X

. `& O0 {2 n( g# }1 Y9 Z# K  Ihimr <address> <value>. sample: himr 0x80040000 0x05 d8 b7 M. |! {, A

3 |  c9 B5 R  \例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。3 F, u- ?+ a% y
himr 0x80040000 0x00
8 B2 A: P' M+ ]: Nhimr 0x80040001 0x11+ P# T: I! c, ?$ p3 H( n
himr 0x80040002 0x224 O3 v( X  i+ o8 E$ G
himr 0x80040003 0x33  H6 t6 a& f7 r2 K' ]! G
himr 0x80040004 0x44; M4 v* q( b9 t" @
himr 0x80040005 0x555 E/ ?7 T2 a4 B, ~6 t, r3 z

# l& b% C  D  |3 R$ S' {SN也是类似。
* e* x. l: g% |8 D- X( q
8 ~; p5 o$ w' K0 R) C) @* K: {& m现在主要是,谁告诉我们MAC和SN的地址?
7 r3 S+ W+ r' ], W$ c  ^
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * _# F9 l, l3 _: t
一直想找到运程修改MAC和SN的办法,苦于无解啊

6 ]/ _/ R7 _9 _源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 F; F5 ]6 [1 B6 c# S- F% C6 u; X# q4 \9 s
修改的代码早有了。到今天不会编译。
' [$ d# L( q/ {+ E2 E需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* \# B1 |& _) V! v
  2. #include <malloc.h>* G  {' [$ B2 {& A8 X
  3. #include <sys/types.h>( V  _* b1 v* @9 i7 f6 `1 c- v2 T
  4. #include <sys/stat.h>6 x7 d5 K2 _' I; m4 @7 q
  5. #include <sys/ioctl.h>
    . l" e. o9 l( Q8 f( k' j% ~- I( `. U
  6. #include <stdio.h>8 s3 W5 g1 |9 m$ ~3 V+ [7 S
  7. #include <string.h>
    7 [) V2 r) ~( p, ]
  8. 2 y0 O+ W9 M/ F
  9. typedef struct {
      B& d. P9 I  u+ P' |. Y3 w+ n
  10.         unsigned int        e2prom_cmd_sub_addr;% n$ m1 z1 I% B$ D) i8 b
  11.         unsigned int        sub_addr_count;4 j) y6 {8 B& g: {. M( t) C
  12.         unsigned char*        e2prom_cmd_data;) k/ i4 M4 O: Y; I( e5 d
  13.         unsigned int        data_count;
      _8 x5 Q. ^- P9 y
  14. } e2prom_s_cmd;7 C9 [3 B' h1 B& W. ^

  15. $ A3 q& e" G2 E0 _$ f6 @0 N2 P; q' e
  16. #define E2PROM_CMD_READ 1
    : y+ K6 _( G- D
  17. #define E2PROM_CMD_WRITE 2
    % e9 Z5 X0 [$ J% Q9 P* K+ C! v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"2 h$ }6 T1 C& z5 K7 s1 P4 e

  19. 4 R, K. ?5 t; R; ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ x* U% S1 E# b" p
  21. {
    9 O5 s+ L* L( k% B
  22.         int fd, ret;# B5 c+ E8 O. V% ~# s+ W% D
  23.         e2prom_s_cmd arg;: N4 ~8 p, ^' B  ~7 W& P5 m
  24.         unsigned char buf[0x18];
    9 G5 K* y! y& b0 O, D

  25. - x' K4 [3 Q9 c- U. i" ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  A, ~: K9 W8 x& C  ]
  27.         if (fd  < 0) {8 r5 t2 H( R( r: C( J, T
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- i% X/ F; y/ V  N
  29.                 return -1;# v. F) o7 l  Z3 p. {
  30.         }, g9 S+ T5 ~& }, E% f0 q8 z+ z
  31.         arg.sub_addr_count      = 2;
    1 B  k, T) t; I5 V; \
  32.         arg.data_count          = 0x18;7 |2 }: _" V% _7 ^7 E; N) U
  33.         arg.e2prom_cmd_sub_addr = 0x290;. G2 y- y+ J- c) n( c# G
  34.         arg.e2prom_cmd_data     = buf;
    ( j0 U; ]! D$ Z, |6 o$ |. [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / m2 M; h! t. ?* a! D) q! H. N6 ]2 Q
  36.         if (ret != 0) {
    & [3 K% \4 p) [& {
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ v' j* X/ `& g- H6 b
  38.                 return -1;
    3 q- A7 X9 O+ F+ k. h# A
  39.         }
    & ?+ s6 }$ L. i4 i' d6 q
  40.         memcpy(mac, buf, 6);
    ) P; [( a! P  b) ?" o! C* I
  41.         memcpy(stbid, &buf[6], 18);& y$ L; n! ~4 r+ M$ V
  42.         stbid[18] = '\0';
    4 b) v( |+ d- n* G" p

  43. # {+ z$ A' I( P# s! V$ M* e
  44.         return 0;( v6 ^6 S. l' e0 m$ m  H0 S
  45. }& H) ~; D; D3 [+ Z$ b# O0 Q1 B
  46. 3 P. z# ?+ T4 l( S! `4 K" V
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! r6 p# }* i6 S) p$ L
  48. {) X$ f$ H0 y; M; k
  49.         int fd, ret;! p# G  s( k, H( [2 U+ R
  50.         e2prom_s_cmd arg;! ]; K: W" G: X' s
  51.         unsigned char buf[0x18];9 }" Z& \4 ?: O, p% A
  52. 1 {$ O7 ?0 q' d) [
  53.         memcpy(buf, mac, 6);
    9 D' K2 I0 R- v" g
  54.         memcpy(&buf[6], stbid, 18);$ u# G" _0 a* g$ b! R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 n7 _  e7 K$ H6 K: @; f8 r
  56.         if (fd  < 0) {0 A( f% R) \: q0 F
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' j1 U5 F% M8 i* B
  58.                 return -1;
    : |. ?# Z9 f+ }" r7 @# n6 a
  59.         }
    ( U- Z7 G+ T) h
  60.         arg.sub_addr_count      = 2;
    * v" z9 e3 V4 Y  z1 ^$ {
  61.         arg.data_count          = 0x18;! y: B; |. Z) ?; H; k$ `6 m; o
  62.         arg.e2prom_cmd_sub_addr = 0x290;/ I* u3 f1 j, L  Q: Y
  63.         arg.e2prom_cmd_data     = buf;
      i0 S% A3 m4 O; o0 e
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);  R& D% ]8 Q( ]* q; g8 A
  65.         if (ret != 0) {
    * ?& d  K7 o* M) _9 W# P
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( [0 Q. d$ l' x. w: S2 A/ j
  67.                 return -1;5 j& `7 c5 a/ ?: o& W( E
  68.         }
    $ I  W; p$ F1 j) v+ j( Z

  69. & T1 G  E3 e& T/ X5 g
  70.         return 0;' r% W9 P* P- W9 u* K: n1 [% R4 p
  71. }7 i) y. }: P) O& o

  72. 8 j2 m/ {* g5 E" v
  73. int main()$ l2 p, K6 ?. u2 X- n0 u! a/ O
  74. {
    ) f' R! D+ l  |, J+ M$ N
  75.         char c;, I7 }; [+ j( h- r5 Z% L& _! S
  76.         int i, macs[6];; m" _4 d3 e* g1 g9 H8 L
  77.         unsigned char mac[6];
      x% J( ~( {& c; z# @5 s
  78.         unsigned char stbid[256];
    0 v) Q5 w0 ~0 y* [% \6 ~# F, g/ Y

  79. + G8 s, p: J) l5 u% Z
  80.         if (readparam(mac, stbid) < 0)
    $ I' V0 p, W! V3 K
  81.                 return 1;
    3 H; D+ E+ i, X: ~& P. a9 D

  82. 9 X2 T% q) ~( y) ^
  83.         printf("Current parameters: \n");
    - F9 G) u# F3 a" F- z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ `6 F; d* G& L( |+ a
  85.         printf("  STBID: %s\n", stbid);
    8 G, }+ ~) k: m$ Q
  86.           l4 J4 ~1 [# M. w" q3 z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% t# Z8 ?; Q7 l9 q6 F4 N
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 H- z% u; w# O
  89.                 printf("Input MAC error\n");
    $ `5 g$ q/ M: X+ z
  90.                 return 1;
    " Q- t" K6 v" |0 ?
  91.         }
    0 C% ^1 u* ?& C8 j# r3 i' j9 A
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 \1 L" W. o. F4 X
  93.         printf("\nPlease input new STBID: ");
    3 l9 Y8 `* H6 Q0 q- e
  94.         scanf("%s", stbid);
    - C' e( P& m. I3 _1 M
  95.         if (strlen(stbid) != 18) {4 U4 ~: s. A2 B- ?% \( F
  96.                 printf("Invalid stbid\n");! L5 m3 y4 P5 k7 |0 [: S
  97.                 return 1;
    # C+ ^* y# e' F/ F  O) N; a* G
  98.         }
    5 Y9 L$ D( ^9 p, f
  99.         printf("\nNew parameters: \n");
    / V0 u) v5 v6 Y- \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' z5 _* ]& `( R7 Y
  101.         printf("  STBID: %s\n", stbid);1 X0 _0 X$ g3 L9 V3 \

  102. ! T+ e4 c7 \2 C1 o; D
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # b! `1 h9 F- U0 b! l3 Y
  104.         for (;;) {
    / \1 @0 Q% t8 M
  105.                 c = getchar();
    7 O8 c: Q  Y( }4 y$ X: B- x
  106.                 if (c == 'y' || c == 'Y')$ `: H6 u2 o# d5 {( ?
  107.                         break;% ~+ Y' A4 e; ]: K) M
  108.                 if (c == 'n' || c == 'N') {9 G/ H: z# z* N. S
  109.                         printf("\nAborted.\n");3 {) l! w7 X& p+ z3 M
  110.                         return 1;
    ) ?3 m' h3 R2 \
  111.                 }
    0 y/ B$ ~3 n6 {, _
  112.         }* S7 g& R9 \, M8 J
  113.         if (writeparam(mac, stbid) == 0)
    - `, Y: ?& s& g/ M/ r, ^1 x$ G
  114.                 printf("Parameters changed.\n");8 Z/ ^8 j( y2 a: q
  115. , w! Y  O# {0 i7 X
  116.         return 0;
    8 i) n" ^& q1 R# h% e
  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 : K/ o0 S9 o4 I0 P
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( e0 v& v* M4 g1 k你用的编译命令行格式是什么?8 s" x1 p# L5 e* A; d% Z
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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