查看: 16559|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* v* J& k4 E, D* P# ]+ i
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig  Z1 O+ j$ S$ R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:) a& A* d" G& D% p! T' o
usage: himr <address> <value>. sample: himr 0x80040000 0x0
* S& [. g: d" D' ?; R
1 T7 d& s) @4 \* `7 e
* v+ U# T' C* ~# W# O不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) O3 }7 d' R5 S9 J4 ~
+ j6 a; ]9 Z2 m) A/ b( F补充内容 (2012-3-8 09:42):
: _/ ^! d! w( j1 b" e; Y' Lhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. t4 P7 z3 V' ^这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
0 M" M( H" ]' y' z; o9 v! u; Y
7 u( E0 P8 P8 Z9 Q/ B3 X) s6 Uhimr <address> <value>. sample: himr 0x80040000 0x0% s2 F9 Y. o  ^3 {
; K3 u/ D. ]: y2 s# _! {! x% ~, t3 A
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& p1 d9 j) j- k: v" f* ^himr 0x80040000 0x004 R# M5 X" |  W2 g* a% P3 h- M8 X
himr 0x80040001 0x11
+ o; M, {! H: z- |/ ?/ ]/ s  b7 q# T  thimr 0x80040002 0x22, k9 N% B! D+ T, I3 L* O! v# O0 v
himr 0x80040003 0x33( x& D& o! E- L) s: U
himr 0x80040004 0x44
) t5 j# i  X' K9 m" a# K1 Uhimr 0x80040005 0x55
; y. F7 S' j9 t1 m( ~  h
9 R. V7 V. t  w2 D- W# [SN也是类似。
: d0 r( E! M6 Q  \0 o8 s3 [% |! v! F# q7 p% f
现在主要是,谁告诉我们MAC和SN的地址?& N  e( M6 x. E, Q9 o1 A, M# j
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
# U0 |0 r' ~& J1 H' ~  A  Y一直想找到运程修改MAC和SN的办法,苦于无解啊
4 [3 M. _/ }; B2 s1 A# l
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 6 i9 W3 M! A' e- a- O. E6 k5 O* T
; Y: l* ?) Y% K0 q1 H8 `
修改的代码早有了。到今天不会编译。
  Z7 z/ M- F% Q' I! D3 a1 |  F- }. c需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    & c. `& T" q) k" q9 G' W9 @$ ~1 j
  2. #include <malloc.h>9 n" ^/ q9 Q7 m
  3. #include <sys/types.h>
    , i6 G" A- {. Z0 ?
  4. #include <sys/stat.h>) R1 M) K3 Z% k& k
  5. #include <sys/ioctl.h>
    9 W& u. n4 C6 G9 R
  6. #include <stdio.h>" ~( j5 k8 `" `6 Z4 r$ ?
  7. #include <string.h>
    6 L+ h4 _/ b3 H9 k! z) A

  8. 4 O- e0 z$ ?( ?3 K4 @& r: w* i& E/ Y
  9. typedef struct {
    * H( H: l( [. v
  10.         unsigned int        e2prom_cmd_sub_addr;& u9 k( U% X% s/ }
  11.         unsigned int        sub_addr_count;, v1 C0 V$ a' f( n! u
  12.         unsigned char*        e2prom_cmd_data;6 k, Y* R$ Y9 I7 J, ]. }
  13.         unsigned int        data_count;! y* m3 G7 r' T0 W4 x3 [
  14. } e2prom_s_cmd;2 z. y+ ^! [4 s$ R, L
  15. + @. d- f  U: w
  16. #define E2PROM_CMD_READ 1% {  C3 F+ ]( `+ ~$ E1 ]. o
  17. #define E2PROM_CMD_WRITE 26 H* y: d/ h* v' ^
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    # |; Y) e7 Y" j  e( N& A

  19. 5 H4 y' `3 @2 k6 x* o# m0 w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( ]/ Y& p! a# y9 V( t
  21. {
    $ k# m& A1 S8 E& R8 b
  22.         int fd, ret;3 `  \* A" O$ c
  23.         e2prom_s_cmd arg;
    + \/ z3 G! J: `
  24.         unsigned char buf[0x18];
    5 `- C  L7 v! H
  25. ; s' j0 W, f' i5 ^8 t+ ~, ?' X+ W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    * ]6 ?* M1 G3 ^6 j6 o# h+ e
  27.         if (fd  < 0) {
    , c( K4 c( |7 v5 z8 ?3 b
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 i$ J: |9 B6 _+ [7 |
  29.                 return -1;
    : t9 G. I1 l$ f3 U4 l
  30.         }# Y( m# w8 O. U$ p1 y# N- E: j
  31.         arg.sub_addr_count      = 2;
    8 u- P" v9 R* y
  32.         arg.data_count          = 0x18;
    , d5 P" R: c% b& X( S; i% ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    # W, H3 Y8 w# m- \
  34.         arg.e2prom_cmd_data     = buf;/ O, U9 X5 W7 P& n# C
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 b$ l  n' X. e" p9 p; d& {; ~
  36.         if (ret != 0) {, Q* K2 M+ [2 O
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ) H6 _5 k5 }/ ~0 H/ G
  38.                 return -1;4 z$ H' U& J" w! @; i4 |; E1 O
  39.         }
    * N9 w$ B1 G6 [. P5 {5 }
  40.         memcpy(mac, buf, 6);
    ( s, N% o  N1 H, K* m
  41.         memcpy(stbid, &buf[6], 18);1 \; i7 C' ^1 i* o3 p) h0 L7 v
  42.         stbid[18] = '\0';0 ~6 B( S; `" S) L4 L

  43. 0 W# I# F3 v; g) B8 T$ u' D* ]
  44.         return 0;* h9 k: [1 `: t2 W
  45. }3 x) {6 Z' f6 U! @9 V

  46. : K+ i5 E: A1 l# A# z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . V- ^: Q0 G, @2 r$ e( q
  48. {! F2 l6 r8 @7 D, A$ q* G+ H; x; Y
  49.         int fd, ret;7 P2 L# m6 `4 H
  50.         e2prom_s_cmd arg;- ~3 N) E( H' K' B
  51.         unsigned char buf[0x18];( e8 W) i0 i& n$ H8 x( i0 j' |
  52. 8 V9 V! w) M2 c6 r
  53.         memcpy(buf, mac, 6);
    # c) B4 W$ T9 l: o
  54.         memcpy(&buf[6], stbid, 18);# r4 [+ q2 M- C& ^# z5 A; `
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 l( `2 z; |% P1 H! J
  56.         if (fd  < 0) {
    ! h& e- {* V. ~
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 `" Q+ M3 X3 g, x8 u. [+ s
  58.                 return -1;5 V: a; w* [7 A7 X; e/ `7 _
  59.         }% J0 H; l5 C% `
  60.         arg.sub_addr_count      = 2;
    ' u" w; ]8 I  S+ h( B8 c% d1 J' j3 X
  61.         arg.data_count          = 0x18;9 p- b0 a( k6 Y0 `
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    * W* |/ k3 M0 I* j7 {& k6 Y
  63.         arg.e2prom_cmd_data     = buf;
    " W# V; n* C# U
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! ~! x+ M; {( G" h& h, P! W2 W
  65.         if (ret != 0) {
    0 X- o0 P3 h1 @( u6 o8 B3 T/ S1 K
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);6 u8 I4 K" X% F9 F; u: S- i
  67.                 return -1;
    * U& w5 ?0 H1 q8 [8 A  m* ?$ X
  68.         }
    6 {# \9 q7 h' h

  69. 4 I' [0 |0 G) K5 n+ @& m: g
  70.         return 0;5 G. S. Y6 ^1 u/ d5 _
  71. }
    6 F$ C  y+ c$ y, g' J5 k1 ]

  72. & r- N: _8 a* x6 }! m7 P
  73. int main()' @) R, y1 y6 t$ N8 a3 N6 ^( E
  74. {( z3 s0 q3 |+ x. t) V
  75.         char c;8 g5 `* p1 J0 i" w
  76.         int i, macs[6];
    8 W0 n3 ~  [- f  q0 {0 T4 a
  77.         unsigned char mac[6];
    $ g0 B* X. t$ K5 \$ Z
  78.         unsigned char stbid[256];
    1 a7 K0 n5 K% w1 {- j; m

  79. " M& s' C  a8 v5 l5 u; ]9 I: W; N
  80.         if (readparam(mac, stbid) < 0)3 D" Z  n, M( n+ K- u/ g! I2 k7 n4 y
  81.                 return 1;
    / \( [5 a$ c$ v! P% J) v. @

  82. # v+ j7 P" B! `; @- c+ v! C* L" S! R
  83.         printf("Current parameters: \n");6 n1 ^; u4 ]/ {) |& h( t+ W. p: K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 T: {1 p# h; y! M, B* x
  85.         printf("  STBID: %s\n", stbid);
    $ T& n2 y! h; p& p  e1 P5 w% s% @$ Y
  86.        
    & N) g1 i! W$ z. p7 s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / m6 m0 m& Q+ v8 E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 ~! S+ e! k) x
  89.                 printf("Input MAC error\n");+ z- e' G7 L3 }/ E9 G2 Z
  90.                 return 1;
    * G% a0 V. a! ^; l# ^, J5 b, r
  91.         }) b& V% J) H4 F) Y( ~. m+ a" u
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    7 d% l- r) {7 F: y4 z% v
  93.         printf("\nPlease input new STBID: ");. T0 u/ h! X1 J- Y8 z
  94.         scanf("%s", stbid);
    & W! i& e2 z: [3 k+ i  ~8 l8 \: n
  95.         if (strlen(stbid) != 18) {
    5 \6 m8 f4 Y2 k7 x5 J+ m/ a* |
  96.                 printf("Invalid stbid\n");% T  [! V) o/ Y8 F# V0 F
  97.                 return 1;" f$ S4 G! l" S8 Q2 ]
  98.         }7 Z: Q- G4 ?( s& n
  99.         printf("\nNew parameters: \n");2 @1 e- |/ q/ p* {: z* Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, F7 ]$ F) B/ X
  101.         printf("  STBID: %s\n", stbid);
    ( d0 P1 l4 b, T6 K/ s- B

  102. / ^3 k1 o0 p; ^. \1 x) y6 z. s4 g
  103.         printf("\nDo you want to change paramemters? (y/N) ");& P6 X* @# g, @& q
  104.         for (;;) {; S$ f  ?: A/ _/ \" Q0 ~- |$ X: L
  105.                 c = getchar();
    " d  m9 I7 u) a& s3 ?; R
  106.                 if (c == 'y' || c == 'Y'). M% i1 }9 B% a9 {. D0 _
  107.                         break;
    ! Z% z( [7 l  P- f
  108.                 if (c == 'n' || c == 'N') {
    + K8 N! f% w% A) g7 U; k4 s
  109.                         printf("\nAborted.\n");
    - N' c! |* o1 d2 O2 H9 R5 K3 c% B
  110.                         return 1;( s$ l  t7 S/ }; q3 ^; N
  111.                 }' n4 ^1 B0 K* d
  112.         }- N& S+ S- j2 A" v5 u( m
  113.         if (writeparam(mac, stbid) == 0)
    # H' L, Y  R7 [8 e3 y" c
  114.                 printf("Parameters changed.\n");
    " d1 O! Q5 L8 ^; ?( U' b

  115. 9 P1 R% E- z$ K' y7 i& g& r3 V
  116.         return 0;1 O6 s6 K, ?+ b# m) V5 X; I& j8 r
  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 * y# a% `+ E3 t; m* b# m
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
. T5 O& H7 \7 m4 C& w. s
你用的编译命令行格式是什么?
7 S. Q2 {8 `5 H* i
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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