找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15326|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : G+ K5 k- y! t- k* O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / E5 u! e$ K: ^4 }$ k) J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 S7 h9 R9 {# N4 V( i/ e
usage: himr <address> <value>. sample: himr 0x80040000 0x0
. F8 S& S. c. ?! H0 v
8 q$ z" m2 U% \: H# G! R2 v
! x/ v9 P7 N8 {不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 i4 X( ]# m* k: }! {2 `3 W+ C% z" q+ {& u; g) l
补充内容 (2012-3-8 09:42):, P3 |0 W5 ?: z: X0 M% ~' ]: m, d# B7 n
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数/ v& X7 R& V  u' W$ E! N. e& P- u" R
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 K! ?9 I1 z8 Z" z0 s$ H

. a9 k5 U2 `6 U4 Yhimr <address> <value>. sample: himr 0x80040000 0x0
# q( p" {- i# K
* S! Q7 X9 [% Q& X$ A8 A2 s5 ?! k例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 o4 q* ?" R. }  D9 Q& O7 bhimr 0x80040000 0x00- d9 i; b3 F: J$ k- s% h
himr 0x80040001 0x11
# }4 m5 N6 B2 ]$ y4 whimr 0x80040002 0x22+ m: [3 z* B! b" }
himr 0x80040003 0x33! O4 T: ~6 z- J3 q; M
himr 0x80040004 0x44  @8 v0 r& q' q8 C+ y
himr 0x80040005 0x55
3 ~& R% g6 Y8 O& w/ e6 O( W* q1 U( @! P
SN也是类似。( o8 w* r2 R" j6 I! `  H- U5 u$ B& t" A

/ ?" J+ |* b0 {6 p, U3 e现在主要是,谁告诉我们MAC和SN的地址?
2 V! w( r0 z7 h+ L+ V! O- u& o
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 m" H, d7 j# N2 E5 }% g- n
一直想找到运程修改MAC和SN的办法,苦于无解啊

2 u* m% v9 f4 ~. Y& f源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' `- B; A' t3 L. N7 J6 G" v$ T" G" y0 b: R! p$ }
修改的代码早有了。到今天不会编译。
! P( C  `3 K) V# Z% M4 W( S% n. t需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / y- {: q! \! f
  2. #include <malloc.h>
      W6 k; o* {* Y  ~1 O
  3. #include <sys/types.h>
    2 g+ ^* Z# z# p4 V+ N( ?5 ~
  4. #include <sys/stat.h>
    1 R7 l' x. h: K0 _6 h& [  l
  5. #include <sys/ioctl.h>
    9 y! ]3 g# S2 r! ]; |! n4 M
  6. #include <stdio.h>$ e. q  W8 ?1 O& ^/ ?* o' m: m/ V
  7. #include <string.h>
    1 q0 d4 Q, N" c. b/ M4 x' ?- H" O

  8. 9 I7 ]% t7 O* [9 K
  9. typedef struct {
    * \' T9 [( z( X& o- b
  10.         unsigned int        e2prom_cmd_sub_addr;
    . ^; k/ N0 L' O* i
  11.         unsigned int        sub_addr_count;
    6 H4 d: d$ Q( n( c0 E. ]# A* V" J
  12.         unsigned char*        e2prom_cmd_data;
    1 W& V. s3 l$ P/ g6 i
  13.         unsigned int        data_count;
    ) O, q; k! O; m3 x
  14. } e2prom_s_cmd;: u9 x2 s; Z" _6 P
  15. 4 Z& T- n; ?5 a- F& w
  16. #define E2PROM_CMD_READ 1
    # Z2 o1 [+ e3 K; I* V: F" @
  17. #define E2PROM_CMD_WRITE 2
    ' {9 ^# r; G  V* H
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* h, ]+ m' I/ S6 ?/ F7 K/ L- C
  19. . F  I- A0 A& G9 B* u
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 f7 W% {9 _0 b
  21. {1 Q: ^9 N! {" [2 ?, U! f
  22.         int fd, ret;
    5 y+ C  L7 X7 j! w$ F: V( U" B# C
  23.         e2prom_s_cmd arg;% t, R1 M; ~1 _* r! g, B
  24.         unsigned char buf[0x18];' ?  C: }6 m5 U3 I* ~
  25. 3 [4 g; O* |( a. N
  26.         fd = open(E2PROM_DEVICE, O_RDWR);! G7 D$ X- j' S( o# e
  27.         if (fd  < 0) {
    # G# \8 y: U3 w& X9 D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 X" F8 E% E" ]
  29.                 return -1;
    + V4 |& Y' B. [1 m) t" d
  30.         }
    * c  w  i; |0 W" S9 J' O
  31.         arg.sub_addr_count      = 2;
    , C$ C, x6 d8 _+ r% N$ g
  32.         arg.data_count          = 0x18;5 m6 w5 V; ~5 C) q' M; I
  33.         arg.e2prom_cmd_sub_addr = 0x290;$ O- x( p2 x/ I) Y! c! ]' N# T
  34.         arg.e2prom_cmd_data     = buf;
    5 X. {* p4 b( x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & \8 j( y6 g" o9 g( W$ y" a! I
  36.         if (ret != 0) {
    " Z  j9 M& z. ~
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, K* ^6 c. [  N: n4 v
  38.                 return -1;
    : v* D) J5 s7 S( Y# _7 J& v
  39.         }
    6 j! Z0 V$ Y4 K. }" M
  40.         memcpy(mac, buf, 6);
    % ]; J) m+ s7 O4 G/ m
  41.         memcpy(stbid, &buf[6], 18);) v* t5 u( m6 d  Q
  42.         stbid[18] = '\0';
    & j2 s3 Z4 i* I% }: Y0 W3 p3 z* R

  43. , y2 R. K7 C3 Y6 J- C# v3 P  u
  44.         return 0;
    8 X) k0 L1 E  n* e3 Z  W4 x
  45. }
    % M, n6 s; P3 `1 G

  46. 6 d/ x7 S' g# X; f6 g9 R! v) I
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 f; g4 _/ ^. P# i9 k7 H* _' t4 W
  48. {
    " i# k6 P% H! f0 f
  49.         int fd, ret;
    , x% \" a6 u. Y0 W
  50.         e2prom_s_cmd arg;
    " Q" b' A* f" o# Y7 ~
  51.         unsigned char buf[0x18];* @, _  u% T6 b1 A$ R1 W
  52. 0 Q* w' j$ ?& @1 E/ C1 J' _
  53.         memcpy(buf, mac, 6);0 N, H- u7 H9 A  p$ h
  54.         memcpy(&buf[6], stbid, 18);& u7 I/ U& z9 Z$ h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; U$ Q* K+ h, D! c  G  m
  56.         if (fd  < 0) {  g/ a' B# p8 S; {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + S* Z+ H& }8 k4 ^% a
  58.                 return -1;$ q2 S& J' W2 j- G* K
  59.         }
    ! z( d: L& B+ s1 y; O% y5 N
  60.         arg.sub_addr_count      = 2;
    7 d! X, a, f0 l! V! A
  61.         arg.data_count          = 0x18;
    ( a1 W4 Z& I  C+ ]- I
  62.         arg.e2prom_cmd_sub_addr = 0x290;) t8 S* X$ h; G' m4 W
  63.         arg.e2prom_cmd_data     = buf;7 B/ i: C: W! Q6 M0 t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - X) G8 ~; w& B2 w
  65.         if (ret != 0) {: w$ c! c; p+ a# F- F' U- A9 N( [: n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);8 e, l- k' ^$ Y( z5 x; X  U: a4 n
  67.                 return -1;
    + t% a& K1 g8 ?; n
  68.         }
    7 @$ ~  K3 {' K+ `7 k( q

  69. 8 `4 V- B8 n1 G* ~& O% R
  70.         return 0;; i) b3 C9 Y5 G- Z
  71. }
    & t; e+ b' D8 \) f( e
  72. , Z) K' [( z, y6 u
  73. int main()
    * e% {+ G" w' k( A4 }1 Y; v
  74. {
    9 P- U/ t6 ^* `& E& s
  75.         char c;; \+ J4 M% }! @0 L- S6 |
  76.         int i, macs[6];
    7 l: z. Y/ _/ f: Y( y) I
  77.         unsigned char mac[6];8 R1 e/ }8 k# s, a9 d. O" J) j
  78.         unsigned char stbid[256];  @; m6 J6 P. }& \0 C0 U0 u

  79. & M6 q( ]4 M: Y' L: w
  80.         if (readparam(mac, stbid) < 0)/ Z# C3 ?0 ?+ W9 `2 v! m
  81.                 return 1;! K2 F3 n' u$ x' m$ H7 W
  82. 5 e' S- g+ G9 z" O" O
  83.         printf("Current parameters: \n");
    + Y9 Q0 U0 [8 Q, L! n0 X% o% r2 O
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( s& y2 R# A/ Z/ h( J
  85.         printf("  STBID: %s\n", stbid);
    1 W. D+ K# i) S& ~% T& `2 C
  86.         & X8 m+ S* ]5 |; N: w# A- l  h. W/ H
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ' S3 g; g2 P2 e: L- O! ]
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {' n8 j4 s( @4 x: p) W
  89.                 printf("Input MAC error\n");
    ! O. p  l  i* J9 E+ S# g7 E: B
  90.                 return 1;. U. ]6 M- l; Z. J7 f# t" f3 b- v8 N
  91.         }/ z( n! W6 p- r
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 T" r6 G- s6 n8 X
  93.         printf("\nPlease input new STBID: ");
    6 t: }& b4 J: V+ y; ]6 e
  94.         scanf("%s", stbid);
    1 `- u4 p* T) P* c  u6 K
  95.         if (strlen(stbid) != 18) {
    ' g- c) n* c( I/ j
  96.                 printf("Invalid stbid\n");
    : d0 U! H2 F) F4 F9 D+ R
  97.                 return 1;9 M# r8 P0 k1 \( x1 k
  98.         }2 a) w* L  |  F$ R5 Y3 g) t: U
  99.         printf("\nNew parameters: \n");% Y/ z9 l( }! }) q; J$ ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ J% t5 l; l- I
  101.         printf("  STBID: %s\n", stbid);
    ; r: C# ]2 h+ ~/ n" O' Q

  102. 8 G+ j9 i) p7 F' f! N1 n* L
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 u. C: p. ^" t
  104.         for (;;) {
      c9 U( Z. j  d( ]" H6 o# {* S
  105.                 c = getchar();
    ) `1 d3 q, m( M7 u7 t6 G
  106.                 if (c == 'y' || c == 'Y')( |2 h. U2 I# ?$ f& b% [4 i
  107.                         break;
    . V$ y5 s# m" ]9 Q- Y
  108.                 if (c == 'n' || c == 'N') {
    1 \. H& t* c! Q
  109.                         printf("\nAborted.\n");! a2 X7 [) n7 I& ]* Z
  110.                         return 1;7 a# _2 N7 h% X
  111.                 }
    # p& [4 Q. p( U" U! ^0 @3 P
  112.         }8 q9 ]9 H, v" p
  113.         if (writeparam(mac, stbid) == 0)
    0 H$ U' d$ d$ l1 x  J
  114.                 printf("Parameters changed.\n");. R" h" K6 l, v/ J4 E

  115. . [) B) r5 ]0 Z$ ?
  116.         return 0;# l  h+ p3 Z5 w  B: Z2 _9 @
  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
9 d7 ?2 j1 s( I* X0 ]2 d9 j- G. H在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
- T' n8 w( u! H1 D
你用的编译命令行格式是什么?
. B, P. T. r4 ~4 h1 J7 D1 s; g" q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-22 04:33 , Processed in 0.025738 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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