查看: 16528|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 m1 s; {, ^. O) _( }5 b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig" Y$ C1 o# f9 l5 x/ S
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% @- B, L+ f: j
usage: himr <address> <value>. sample: himr 0x80040000 0x0+ ?+ Q4 B  M8 n" `

1 W4 C  U. o! R0 ]. {6 S
9 h/ n+ r; E4 ^1 s. y不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 ]$ ~9 \- i# ]4 M5 ?

% ]3 t2 Y! K% k/ f补充内容 (2012-3-8 09:42):
, p/ S% `  U, l  A5 a- @" y0 ?% Q# rhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 Y$ l0 ^3 R$ M% m
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- b+ @; l  Z$ Z

# h: u# X8 e6 V1 \himr <address> <value>. sample: himr 0x80040000 0x0
8 |4 U) E3 F0 }$ B0 R3 s% i1 U/ x) Z/ }+ `+ h0 o4 P
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% `1 G% R! \' _2 @
himr 0x80040000 0x00* M, x1 {( [$ f
himr 0x80040001 0x11$ Q# e% C4 \& P. [. g
himr 0x80040002 0x22
2 [0 q: W) h+ z( h3 R4 g* Phimr 0x80040003 0x33/ t5 w* m# x3 H3 o% W# O
himr 0x80040004 0x445 ?/ x, D* f2 }, H/ U& g, l
himr 0x80040005 0x55. t; i  F1 W1 ~! Y) D

' ]9 f" g4 l( ^0 |4 HSN也是类似。5 c7 i0 |; f- P" c9 D
4 m" ~) q: ?6 L- {. k
现在主要是,谁告诉我们MAC和SN的地址?& g7 P. p6 `5 C
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
# }: }% p8 l" V6 x$ L& b一直想找到运程修改MAC和SN的办法,苦于无解啊

/ s. H. t4 C) R0 z3 ?" k' N源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + U; e$ F- a  r# ?/ A

0 y: T8 r, y0 y修改的代码早有了。到今天不会编译。8 R$ U* \3 [- o
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>5 y; n! g  p; F  C1 D
  2. #include <malloc.h>
    7 M/ S/ a8 V; M% R  g; |
  3. #include <sys/types.h>
    + b# x! `9 ?+ h/ `
  4. #include <sys/stat.h>
    ' p4 \$ k" U; r* G9 |
  5. #include <sys/ioctl.h>  Q) N2 N) W7 Z! E( f1 ^* v
  6. #include <stdio.h>
    5 W/ f5 y- O" g% W/ a
  7. #include <string.h>
    % w5 ~. r: j; q( ^

  8. ) g8 k& t3 W+ n1 @$ R
  9. typedef struct {) q$ U) z" ^% g2 o
  10.         unsigned int        e2prom_cmd_sub_addr;
    . s5 i5 p# ?! M( G1 V3 S
  11.         unsigned int        sub_addr_count;. e1 \$ b7 l5 s( U  A" a# P
  12.         unsigned char*        e2prom_cmd_data;6 C4 N- N4 S# ^+ c
  13.         unsigned int        data_count;
    2 c# D: g& l. n# p6 m4 g
  14. } e2prom_s_cmd;
    1 _; B, C) V% M, t) O& x) ^
  15. & O+ b" j  Y# _# C" a
  16. #define E2PROM_CMD_READ 1
    7 q' ~1 R7 C9 B6 U" a: b" e
  17. #define E2PROM_CMD_WRITE 2
    7 s- \4 D  q9 B6 ]* b# V
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % t0 ]4 n% k& z9 A
  19.   \: }" Z4 [' w: T/ ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" e5 z" W; _. K6 s& [' W1 s
  21. {
    . C  }' |' c; H& P
  22.         int fd, ret;! v  u$ q# j/ c4 F, |+ e& b
  23.         e2prom_s_cmd arg;( {2 Z" D& E  @5 q
  24.         unsigned char buf[0x18];' }7 X# w  ]/ K2 K' u! K3 |

  25. ; e& j+ q5 N4 H( P
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    * q9 T) F5 T  k* `6 |1 T# z+ m
  27.         if (fd  < 0) {. n) M/ |' j; ^9 B5 |/ m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  K5 C* l& \, P1 E; d* N. [9 i* s
  29.                 return -1;
    + i* Y. y% c, o4 F, R
  30.         }
    ; n' e/ R, f, A1 z
  31.         arg.sub_addr_count      = 2;
    ; i) {4 P$ \# ^1 [) K5 s7 o' J
  32.         arg.data_count          = 0x18;
    / i+ n: e  k1 Y7 S! G
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 t( P' T1 i5 _7 X& I+ U3 ?3 ?
  34.         arg.e2prom_cmd_data     = buf;& d6 i2 V% w! p/ H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, I1 o' g' \0 ^: Q5 {! {8 T# F
  36.         if (ret != 0) {. Z* u, t3 n% H' e' E$ G' x; h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; o0 s1 V# t: l
  38.                 return -1;
    7 C% [, ^2 U+ S# y5 T
  39.         }0 ]2 v1 @- J+ C" `0 F2 @! p
  40.         memcpy(mac, buf, 6);9 `1 ]$ M& b& [9 n! Y
  41.         memcpy(stbid, &buf[6], 18);. W. g7 q# i8 l) @1 y2 ^
  42.         stbid[18] = '\0';
    / u/ y( o* o0 t" l3 _
  43. 4 q$ h6 T7 A4 x1 O. \
  44.         return 0;
    8 u7 J6 I+ Y' [
  45. }
    ; L# f* r6 \% }' v! U, o( T9 l, l

  46. ' Q" H4 a1 h+ }% G" }. Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 c% H; G* e# P: ~) v
  48. {6 E* a4 b+ N  T# Z2 F5 g/ p5 u
  49.         int fd, ret;6 x/ P  n5 E9 m" v5 B
  50.         e2prom_s_cmd arg;
    ( s  k2 E! l3 G) ~- {% S. ?
  51.         unsigned char buf[0x18];
    + J. w) j+ L4 B8 `

  52. ' ^% p  N+ A$ s- E8 e6 X
  53.         memcpy(buf, mac, 6);8 c9 a( h9 k( @/ `
  54.         memcpy(&buf[6], stbid, 18);- z7 A5 |* W( s  C/ i6 {( F5 ~
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 e( e& a& v1 P6 J8 L
  56.         if (fd  < 0) {
    % Y% q; A% l7 s/ B; r
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ f( x% f" k! s+ F3 g. @# Y$ H+ r
  58.                 return -1;
    9 ]! @4 e# E  k/ m
  59.         }
    , A" I! F# H# U, P! G
  60.         arg.sub_addr_count      = 2;
    # z8 \3 y! n5 j: [
  61.         arg.data_count          = 0x18;
      Y" s9 ^! e9 j8 H! T  _
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 q4 b$ D' c) d+ X) Q
  63.         arg.e2prom_cmd_data     = buf;- h" J; d* \! O0 l5 v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 P& T( m2 q/ |& O* `5 Z8 G" B0 `3 c
  65.         if (ret != 0) {
    0 ^% R8 s( I% ~' s' E: n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 [- X( u9 w: H$ y1 U
  67.                 return -1;  s1 f5 i7 S$ F0 k: L, E0 L6 _
  68.         }* }# i8 k: |; E4 o! w

  69. 9 r9 x- x( O7 \  [5 G9 T. G
  70.         return 0;" H- S' J( [/ z# D: l4 L
  71. }$ t  D' n8 L  h& D+ h5 ~
  72. 5 l% {. o. R  G8 D. Q5 F
  73. int main()
    ) s4 X: S$ q1 O; _( [
  74. {0 T$ u+ b0 Z7 W5 r( h9 g
  75.         char c;
    # L2 X; y. |7 U' r% h
  76.         int i, macs[6];7 z2 ~: V! O3 @: w* ^; J/ B2 Y
  77.         unsigned char mac[6];1 m& _; }5 E4 ]/ {& W
  78.         unsigned char stbid[256];7 y( D3 f* I0 i8 C' R+ X2 ~
  79. 7 S, G" Q$ o9 u; |6 E& `/ L
  80.         if (readparam(mac, stbid) < 0)
    ( e2 y3 m) W% g& _6 y
  81.                 return 1;
    2 g: o5 R( P) c; k

  82. 6 M( M& b7 g$ E" t1 Q
  83.         printf("Current parameters: \n");; J5 c5 K1 X$ q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 p3 N1 I4 q0 a
  85.         printf("  STBID: %s\n", stbid);, S5 |4 q2 R; T
  86.        
    6 R' p6 p  i& Z  N1 s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    1 D7 h) y0 r. z8 q6 s: v+ A
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + ~5 Q' o+ j) N5 p; ?4 n% B1 I
  89.                 printf("Input MAC error\n");
    ; N7 L5 x1 [% W' P; w
  90.                 return 1;1 r2 A& i! M9 X& [
  91.         }# f0 p$ K4 b6 [* w2 D& q+ [. V. W  y. t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! M0 B$ `; X# q
  93.         printf("\nPlease input new STBID: ");
    # l" _9 X( {/ S  R- _
  94.         scanf("%s", stbid);# Q6 j5 s3 t$ t! Y
  95.         if (strlen(stbid) != 18) {
    4 D2 J! L3 Q, R5 B
  96.                 printf("Invalid stbid\n");- ~7 D3 U0 |3 t# P/ U" f8 U: Q
  97.                 return 1;
    8 e  C$ [8 I$ M' Z' w0 x. m' H
  98.         }3 K- ~* `$ i. ?" I0 c
  99.         printf("\nNew parameters: \n");5 L8 W5 d) J, k: Z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( Q' d. U3 y. S
  101.         printf("  STBID: %s\n", stbid);
    + ~7 ^9 o" H5 ^
  102.   _6 \9 S& Y; ~. p) o
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % T$ ~! F! I# g) T4 @  V9 G
  104.         for (;;) {1 Q% |3 c+ \  j  S" Q! ], }
  105.                 c = getchar();
      d4 ?; O" C) m, _3 \$ m' P
  106.                 if (c == 'y' || c == 'Y')
    7 s5 N$ o) o4 g( p) l1 t- h
  107.                         break;$ T0 h# ^9 c. L
  108.                 if (c == 'n' || c == 'N') {+ I- C, Y- v0 {6 C
  109.                         printf("\nAborted.\n");
    * C3 t* L4 Y% o
  110.                         return 1;# h5 A$ T$ V% ^7 S5 D3 a
  111.                 }
    4 v( N# p1 K- G. d4 p3 t
  112.         }  S% m8 C- O+ W; j' Z1 }
  113.         if (writeparam(mac, stbid) == 0)
    # f; o0 _5 }6 Z1 k, w, B& F
  114.                 printf("Parameters changed.\n");
    + \6 y& M3 s; S  T& Y# L/ A0 |

  115. / R  y9 n# j, _7 ]
  116.         return 0;
    ) i& r0 Z1 j, k! G# H; ?" k% 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 ( X4 ?' i8 \; t3 @" P& T
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
. a3 L$ s- K6 e: w
你用的编译命令行格式是什么?
' l: \" d: f& s/ h3 l. 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客服返回顶部