找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15786|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# h; e' U# H+ {% o" g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    , e- j) N# h. q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
: U8 l' u% V& @" [- Busage: himr <address> <value>. sample: himr 0x80040000 0x0/ P6 D& g3 W4 X* k! L( M% H* s
6 |& @3 f4 n5 U) o, ^& W
$ q( z# _: S( Z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  |$ Q1 j# E6 d. N& `0 i$ O2 B. A% w2 M. n% r9 o
补充内容 (2012-3-8 09:42):. \3 Q# I& n/ j3 B
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 {3 S# W- h" f& C( t4 E$ O这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。! m1 \1 i6 A# C! h9 o& l& N& b
$ }- \0 \- Z8 |. n
himr <address> <value>. sample: himr 0x80040000 0x0
7 E3 [& t. G, t0 M+ x5 Q- H5 K& f5 F$ q6 u! k7 e+ Z% k  g
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. o  ?3 i: z+ f+ \6 Ghimr 0x80040000 0x008 f. q2 P4 y! h3 H7 U% D
himr 0x80040001 0x11" S6 ^8 j! U  E1 w9 L2 N0 t9 @! F6 I
himr 0x80040002 0x22
0 h: E  ?/ m4 a0 c. ~himr 0x80040003 0x33
- x6 D/ J; a. f4 Vhimr 0x80040004 0x44
, F' Y1 y$ `) T( {: k6 Shimr 0x80040005 0x554 Y# y7 L5 c7 j# _
8 D4 l' h; |% v. c+ l& Y
SN也是类似。  m' N- O# p: k1 r3 H' w  D

  w' n7 M% J2 ~# r现在主要是,谁告诉我们MAC和SN的地址?
: W2 v1 U: N8 n* N: X- r
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
: e, \! N5 b+ A% C: u( j一直想找到运程修改MAC和SN的办法,苦于无解啊
  p: u* M. t% i1 t  R6 U7 k
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 % D, y3 k' f# Y( z
& G# R. h  X$ ?& I! z" y  \! z; d
修改的代码早有了。到今天不会编译。
/ Q3 y9 u) z7 C) ~: |6 \, F需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: r( w  M& G7 b' E
  2. #include <malloc.h>
    9 W( O, u" v# b* R$ `0 ?# E
  3. #include <sys/types.h>4 e: m, D+ X5 {4 z8 W
  4. #include <sys/stat.h>: u/ t; w& m$ C; o% p! Z' K
  5. #include <sys/ioctl.h>) y5 y6 p  Q0 p% L9 s
  6. #include <stdio.h>0 l2 \! X" X$ T4 n# q, D" L
  7. #include <string.h># D( o6 m% E) ~+ e6 u& y

  8. + B/ Y8 P) `' G+ n6 `' |) L
  9. typedef struct {
    : |( T# u3 x0 A8 f! K
  10.         unsigned int        e2prom_cmd_sub_addr;
    4 \$ r& E5 e- V. _1 j% s+ ]5 }
  11.         unsigned int        sub_addr_count;
    ! q' r: b1 N2 u  a0 c$ K
  12.         unsigned char*        e2prom_cmd_data;
    + U/ F, U* ]3 x/ Y; ]) x& m
  13.         unsigned int        data_count;
    , Q) ^* A- o( R- x( ?. b
  14. } e2prom_s_cmd;! g) ?, v5 s& c- w% L% }$ E8 `

  15. 1 h: Z3 k" q3 U9 G
  16. #define E2PROM_CMD_READ 1
    2 c3 v, S+ D/ B$ P# N: L
  17. #define E2PROM_CMD_WRITE 2  j$ A5 }7 w4 D6 |* |8 L
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"7 C& M5 q/ i; }. }* w0 k: N3 I

  19. + o3 i9 j0 e/ H3 Y" \' E. z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 `: t! p* ~& s/ v
  21. {( C# o- z9 P6 j6 Y
  22.         int fd, ret;
    ' k: {+ j; I- ~$ W0 Q8 _
  23.         e2prom_s_cmd arg;
    3 E, K; J% _; z7 Y+ v
  24.         unsigned char buf[0x18];  j! N0 h6 w6 L# }
  25. . G- K& k6 M' {4 C4 w) P1 m1 R- J( B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( O) }3 [* O6 H( @. f% }
  27.         if (fd  < 0) {5 `7 s5 S' b: M( l7 F* K; d( P0 ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- d1 x: u% o# ], Z$ e
  29.                 return -1;
    " W# S" @/ }5 \6 d) y, w- {
  30.         }
    9 j. c- O7 R; D1 I6 B6 B
  31.         arg.sub_addr_count      = 2;
      T& _% o& l$ G- x
  32.         arg.data_count          = 0x18;/ [; d2 g% D+ `% b, D" P0 [6 c
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 s* I0 o4 t  a
  34.         arg.e2prom_cmd_data     = buf;
      V$ C) T; `5 _, F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    6 l9 z) C- p5 `3 [6 A) o' `
  36.         if (ret != 0) {. ?% I( e! z! V! Z2 j4 o! y" ^
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& \8 H: W0 @+ Y; M+ v" U/ B- f5 U
  38.                 return -1;5 `4 O! Z8 Z( {) L, y8 n  q. e
  39.         }. r# l2 X! o9 d9 |8 R
  40.         memcpy(mac, buf, 6);
    6 s; L7 Y2 ?7 B- [4 p4 s+ @
  41.         memcpy(stbid, &buf[6], 18);
    1 v4 a8 L0 s5 O7 @
  42.         stbid[18] = '\0';2 v7 l- s6 |4 {: g! L, O* U- T/ {

  43. # g. `0 `7 {+ j2 Q3 a" e, X& Z
  44.         return 0;2 C: g/ O5 E" H: ]" F. p- h
  45. }
    ! L$ A& T' H8 [  u5 Y! ~
  46. ) d  }( S6 f2 E6 c9 c! x! V
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)# M) O* X0 \5 `7 b, R* w
  48. {: r- ]9 }: K* y7 V7 l' L7 G) l
  49.         int fd, ret;; ^  t. l5 U6 t: _) d
  50.         e2prom_s_cmd arg;0 Y6 N' G9 J4 f7 A; m! m4 b! L1 P; E
  51.         unsigned char buf[0x18];
    & S+ }" [; j5 z% n/ I
  52. 0 x4 J, L; C7 C& t
  53.         memcpy(buf, mac, 6);
    ' Z( u  j& ~5 ], I, `
  54.         memcpy(&buf[6], stbid, 18);4 \1 S, N) }+ F& y* x
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 x& ^0 H; b# L  Z. _+ s' H6 T
  56.         if (fd  < 0) {
    - o* T& }' I$ Y- M$ l7 ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : \! _1 G1 S. f0 u$ l; V
  58.                 return -1;4 Y& c6 I& S3 @+ S
  59.         }
    5 T! T4 B- U7 F
  60.         arg.sub_addr_count      = 2;1 F4 e4 k& Q, Y2 V
  61.         arg.data_count          = 0x18;( {' k4 W1 q3 O8 T4 y% \
  62.         arg.e2prom_cmd_sub_addr = 0x290;' z: V6 C+ b- I. \+ x6 {/ x
  63.         arg.e2prom_cmd_data     = buf;
    & U' H: I7 c* U) g. C9 n; ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 ]( m" U5 i" v7 P0 _$ B) G0 h
  65.         if (ret != 0) {% B( }+ v6 p7 h1 P) y3 w
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 n( e& u: v; [6 k" J+ e
  67.                 return -1;$ z6 }# M8 V, z5 O! R8 ~! K' o/ n
  68.         }" u# Y- f1 r! h7 i. x
  69. ) A. z6 Q9 q% X3 G% }9 g
  70.         return 0;
    " @4 ~5 K. F# P2 O+ B8 y9 `
  71. }
    6 Z8 b' O5 W# s1 ~2 A* y( U1 D

  72. 9 o) i1 _% F: P4 D& l. t/ C
  73. int main()
    2 b, r/ W" r% b( L! Z- {
  74. {3 e0 |! J2 l. J! C
  75.         char c;) B0 D0 ]3 T  O! S% G9 `( D% q
  76.         int i, macs[6];8 ^% s. ?% b( w$ ?: U
  77.         unsigned char mac[6];
    4 T. d' B! n; I6 G9 z1 m& Q
  78.         unsigned char stbid[256];8 m& o) t) C% x  }$ [7 W

  79. : A0 O- }9 f8 P& d& g* Z) h' H
  80.         if (readparam(mac, stbid) < 0)8 r1 x. w5 ?. _$ I# L
  81.                 return 1;9 n7 h3 P0 G% O) Y( S

  82. 6 w, e7 j+ _0 k4 y$ z
  83.         printf("Current parameters: \n");
    , ~: w2 M, |: K8 e+ D6 l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + }" {( H# U# [% X
  85.         printf("  STBID: %s\n", stbid);2 r# m3 H! H8 l# Z& `2 V3 v7 p
  86.         & m  F' u: |4 \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    0 h1 |. d7 y9 N0 x
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    1 F$ d! i0 ]& ~. I( h+ [/ c
  89.                 printf("Input MAC error\n");
    * N2 i, N( u. a% b
  90.                 return 1;- R  u$ y5 \( h7 P7 N
  91.         }
    ) a* M/ h5 Z% c* H
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( }! V! _6 c0 r5 s
  93.         printf("\nPlease input new STBID: ");
    7 ^5 j6 `4 P: c: K% w6 T9 C1 }
  94.         scanf("%s", stbid);
    ' o2 Y6 Y+ i2 e$ m9 h, X
  95.         if (strlen(stbid) != 18) {
      u3 R6 G& f- B0 n4 C( W- `
  96.                 printf("Invalid stbid\n");$ ?- s. X5 A3 U) V" ^+ e
  97.                 return 1;5 G. ]' I; k: K+ W9 u
  98.         }: t+ S$ s  s) y' k; r# A* _
  99.         printf("\nNew parameters: \n");
    & J/ Q- A9 P  S- C% O
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. H& G, |- }. r1 `) m2 ^! Z& g$ f' m
  101.         printf("  STBID: %s\n", stbid);. U3 L4 P% P2 R0 `

  102. + L) N; g+ F2 E0 ~; C2 M" x# c! |
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ) D3 [3 J& L% B; }+ j: q5 Q
  104.         for (;;) {3 e/ _; N1 V! C: Y+ D# l
  105.                 c = getchar();- }- h0 i- _  y& R/ D% g9 c+ S% ?$ X
  106.                 if (c == 'y' || c == 'Y')1 x  @0 {1 G% w- F8 ?& f) h
  107.                         break;) a8 X7 q3 R5 t9 P) x* n
  108.                 if (c == 'n' || c == 'N') {
    ( p6 W1 Q5 ?' ]" W, Z
  109.                         printf("\nAborted.\n");6 K: x0 O! K- Z6 Z
  110.                         return 1;. R2 ]/ r4 M3 c! U" k& R& u
  111.                 }
    6 m- w& F2 R! d; I
  112.         }
    9 s5 i2 F8 C. n
  113.         if (writeparam(mac, stbid) == 0) ; m0 ^/ i* Z4 J! W- j& q
  114.                 printf("Parameters changed.\n");
    0 |- ?( l2 c& m4 G5 t, \
  115. 1 [  {; R) F) v- n3 |2 o0 p
  116.         return 0;
    " {. Q/ i7 {8 B1 N1 D" 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 1 F: a9 P" m+ e) l2 d# @" q
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 }! F) m4 ^! A* I/ S% _: S你用的编译命令行格式是什么?
' T$ z) a8 n7 o$ J: ^* j: K
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

QQ|Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-18 04:22 , Processed in 0.045482 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表