查看: 16661|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ' b! O8 d" w& ]
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 P1 D5 J! G0 X- y# u
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 T+ b2 J9 r, ?* f8 S* _8 F+ z
usage: himr <address> <value>. sample: himr 0x80040000 0x01 k7 I+ Y; k$ j' K1 U7 _

. T" r& W& R% O' e# Z' t! R
% V8 C; ^  D) Z: q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 F' `/ ^/ Q& L( ?* {- O
( X" [4 @' j' D补充内容 (2012-3-8 09:42):
4 M" t  y  n. A) Qhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. \8 r- n' Z3 Z. I1 H: p, K: |2 n这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。3 a$ e- ?5 G+ x9 T- b

( @4 ^8 D  G& G3 U: Khimr <address> <value>. sample: himr 0x80040000 0x0
# D: V. v( Z0 V" J% k  C) B: W% w, t/ v* |' B/ L1 j
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。/ E6 D3 A, T" {/ }0 P
himr 0x80040000 0x006 X/ X5 i% l2 _0 C
himr 0x80040001 0x11
; |$ ?& i1 r6 G. a. q- _himr 0x80040002 0x22
0 H# M, k9 F) h( J: L4 V. x2 chimr 0x80040003 0x33
3 K* P; |, V' c; F9 m0 r5 f+ v5 Vhimr 0x80040004 0x44* ^$ b& W" I) ?' Y, Y, u' @
himr 0x80040005 0x55
) w* F" s3 v. ?) o: {' D, r/ C# z" U* S* H
SN也是类似。
9 E( o' O/ V1 _* f3 j& I& u
5 |0 d* X2 L# I* }/ O3 F1 k现在主要是,谁告诉我们MAC和SN的地址?* x- B; Z& i4 b8 F" n% c/ J
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 R  Q: @# H" I/ i& P
一直想找到运程修改MAC和SN的办法,苦于无解啊
9 y" N* ?( x) S* l; F5 i
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
) V% M2 [; G  X0 _  G
2 _4 a( O8 w% t7 \4 J& T+ a修改的代码早有了。到今天不会编译。6 W6 E* b: x, D
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: r- |) }. N9 e9 w5 t9 z1 ]
  2. #include <malloc.h>; j; O9 \) m% U/ H! D4 z& o. V
  3. #include <sys/types.h>9 A: p" j* p; p( D3 u# r9 h! {
  4. #include <sys/stat.h>8 O; C$ x: D' q  B
  5. #include <sys/ioctl.h>
    / F8 n$ l( n5 z
  6. #include <stdio.h>
    * U" [+ ^/ G) z$ J$ f* r9 M
  7. #include <string.h>- S* v8 m/ S: t) I# `. W7 [9 l

  8. - R, |2 s9 z. D. r1 M, A# f$ r
  9. typedef struct {# G: p+ S8 o5 g/ ^! w) Z6 A! q: s2 o
  10.         unsigned int        e2prom_cmd_sub_addr;- ~5 z9 Y2 u0 W3 t$ s
  11.         unsigned int        sub_addr_count;
    $ L  C' M2 T9 G0 i' x7 {
  12.         unsigned char*        e2prom_cmd_data;
    $ Q& Q; ]' T3 f! a; y  x
  13.         unsigned int        data_count;
    ' d& b7 ^8 j/ N/ l
  14. } e2prom_s_cmd;
    0 X% f. O) h" J! u8 c/ i
  15. & s  ?5 L" [: |/ W) C
  16. #define E2PROM_CMD_READ 1
    ; `: P2 Q' ^/ ^
  17. #define E2PROM_CMD_WRITE 2
    / Z  Y  B- T& F7 c3 u/ I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# R0 s4 E5 w8 S9 l' d9 u

  19. 9 O1 [1 t0 B  t# d: J; p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ E" C# d2 g" k  p
  21. {/ q2 \2 p1 Q) R7 W# D3 e3 q
  22.         int fd, ret;
    ' g$ }; u$ l  r- k) K9 x" \
  23.         e2prom_s_cmd arg;. o/ b; i% G  t. P# L
  24.         unsigned char buf[0x18];
    / Z7 i2 q* t( A9 U" R- A/ h5 u: N

  25. 6 E, S1 h( j5 ?. D3 K3 s$ i
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: [" F1 ^6 k" g4 u# p0 H, N( n
  27.         if (fd  < 0) {+ p  c5 b8 ~" r5 _8 o+ W  D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # K! {2 O& O. {) p5 x% c
  29.                 return -1;7 t8 I$ K8 K$ g8 v2 O# p# \8 L7 v
  30.         }
    * f3 H! `6 d: o
  31.         arg.sub_addr_count      = 2;
      w: @! J% D: j8 D' @
  32.         arg.data_count          = 0x18;
    # \* i& K; {* Z) Z, P, ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , [( m6 G! [# G7 ?
  34.         arg.e2prom_cmd_data     = buf;
    0 M' M+ ?% L- _) h5 T3 `( H4 \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ! P  D+ F8 O5 n- ?
  36.         if (ret != 0) {
    ; m& V  X' Q. l. B% i1 k8 Q+ G
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - g2 P" P6 B) E  O8 X6 z0 W
  38.                 return -1;
    * j8 p- ~7 W$ m1 T
  39.         }+ L- Y* \" [& r  `5 Z
  40.         memcpy(mac, buf, 6);9 _0 y4 j7 w5 m8 C0 f2 S2 r
  41.         memcpy(stbid, &buf[6], 18);) r5 D2 t" x) [) `+ T- o
  42.         stbid[18] = '\0';; F$ r! H3 K  b& y! r! J9 Y. n2 q! j

  43. 7 Y# x7 t$ L8 y4 d; ^- a
  44.         return 0;( t" `. J! N; h+ `2 Y8 [( q# J
  45. }! f! Z# N/ C  ^+ j- j
  46. . ]. A9 Z: [% H7 O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)( [9 l( O# N! H. v" u8 [, [
  48. {
    ' a" `8 O3 i! b2 A
  49.         int fd, ret;' \" ^5 X9 i( b0 O+ B
  50.         e2prom_s_cmd arg;
    $ i7 ^6 j- S; V) O
  51.         unsigned char buf[0x18];8 w/ _7 I) C2 ^7 k% [! T; c! o

  52. * W: b: s  F6 E
  53.         memcpy(buf, mac, 6);
    ) H8 t' y4 U7 ~* Y
  54.         memcpy(&buf[6], stbid, 18);8 \' a3 Q; `+ T* V; }
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 V: \, R6 A8 ]0 V  _6 C7 j
  56.         if (fd  < 0) {
    2 ], I+ B7 b" j# I) n
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 a4 S  x$ Y# o! T
  58.                 return -1;9 ^/ ^) H/ p2 ~4 w0 ~8 @$ N1 N4 W
  59.         }( @% ~4 X0 ^, `( P8 I2 [4 h
  60.         arg.sub_addr_count      = 2;
      [. y$ ]/ Z5 R, Y1 Y
  61.         arg.data_count          = 0x18;
    & A; u1 _8 f9 n
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; W+ z$ _7 y% v( b0 F" ]+ s% q* \
  63.         arg.e2prom_cmd_data     = buf;2 _/ h$ W( z( y( k# b0 a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ) ~- z4 h! ?  [6 p
  65.         if (ret != 0) {* ]3 t) D- o1 V2 _) l9 Z- V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 M/ k. V: l7 [3 C1 z
  67.                 return -1;
    : c1 q3 S4 v& \+ Z' h( U1 L" A
  68.         }; N0 K! G" ?2 i! f
  69. # x) y# A+ n1 t; ?1 V- n2 C& c& X
  70.         return 0;
    , Z* l, s( w" \+ @. q
  71. }
    ( ^! |% m, ~' N$ j) m

  72. 9 V( ?8 P1 ~3 ]4 H5 G  Z. W+ a
  73. int main()
    1 z9 w8 k, b; s; _6 M  V1 ?2 ?
  74. {
    + c& Z% A1 F: ?/ v. P
  75.         char c;: ^0 B4 D& @5 `
  76.         int i, macs[6];& l4 r2 g2 ~- k7 i* p0 D! a) Y
  77.         unsigned char mac[6];
    / m4 {5 d, U1 D& ~
  78.         unsigned char stbid[256];6 [! L$ r- B5 O5 s

  79. # T; g1 |, H% q9 `
  80.         if (readparam(mac, stbid) < 0)
    . {5 v! a1 g5 h6 O% f! v: ~& s
  81.                 return 1;
    & c& n" Y0 A" D# G
  82. / V5 {* K  ?5 Z; t6 j4 B
  83.         printf("Current parameters: \n");, |/ Y* U" t. p; y$ X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' }, v3 V: K" r* v  L$ X# U
  85.         printf("  STBID: %s\n", stbid);. T# S! ?( {' @* H* v$ C" A0 q
  86.         . ^' ?& U0 U' A( Y- q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");) V) y3 v$ w2 U
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {, P9 R1 z1 ^% g" ^3 q" u
  89.                 printf("Input MAC error\n");: A5 B& ?3 x4 [/ Y% s
  90.                 return 1;
    , x1 ^4 ]$ W$ R8 x- o: Z. Q" x
  91.         }3 r( D  r" x3 @5 c
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    . ]/ X, V: b7 m; q% N
  93.         printf("\nPlease input new STBID: ");
    9 {( G$ }, w, `% h
  94.         scanf("%s", stbid);
    " p9 y& m; C+ m* G! r# y
  95.         if (strlen(stbid) != 18) {2 G) ^4 S6 Y+ m3 L
  96.                 printf("Invalid stbid\n");
    * M& U, e7 ^6 v' t5 O$ B
  97.                 return 1;) U3 J& N: S6 v( u3 s" m7 p
  98.         }
    , ?- K! x6 ?5 ]) [
  99.         printf("\nNew parameters: \n");. D8 e, U7 W' h  e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " K$ v9 l" p! d! a2 C
  101.         printf("  STBID: %s\n", stbid);, e# R  B" N% m' L/ a5 Y, C

  102. ! }/ ?3 q  U8 s2 g5 u$ P: _% b
  103.         printf("\nDo you want to change paramemters? (y/N) ");- \! K- m* w% ^# P; C/ I  ~
  104.         for (;;) {6 C( c+ D+ N& m' L- D
  105.                 c = getchar();9 x6 [# a+ t- E0 O( d8 Z9 {
  106.                 if (c == 'y' || c == 'Y')% K7 R% I  j9 W: N3 H5 F) f
  107.                         break;
    ( C! g- e/ @  f2 P* |( i
  108.                 if (c == 'n' || c == 'N') {
    ) m8 P- E& \& t% M3 p/ j# c0 P9 b: u1 U
  109.                         printf("\nAborted.\n");: Z2 l# }& ?4 ^0 y+ k, j% E
  110.                         return 1;& t; ^+ P% j% X& ]8 {7 R! d; G  s
  111.                 }3 d- u- Z, \& f
  112.         }7 Y$ D' L: e0 p2 g% ?
  113.         if (writeparam(mac, stbid) == 0)
    & y& u% J: w  [' K6 ^3 i
  114.                 printf("Parameters changed.\n");* [4 q& E/ e/ b0 K

  115. 6 V0 K. K& f+ O6 B( q3 a. p
  116.         return 0;
    , y* b. u7 u4 P4 [
  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) J. G6 N! w: S: v. `. x! ~8 e
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 u( l/ L7 n0 L% f! B, ~" [你用的编译命令行格式是什么?* d; S7 r+ W$ R: q' l$ q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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