找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15023|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 O% n9 o6 y4 o' z6 f9 `
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig( Z0 t; m2 K* w4 ~
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- q1 w; {  o1 e$ F: husage: himr <address> <value>. sample: himr 0x80040000 0x0
2 N* Z9 z7 ?9 c5 v% l
3 m( M5 i2 B1 _# m+ a% f& s5 {
' Y4 f% a# T8 w. d# x. y' T. q* b不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& X, }5 k( ~  y) _' f
( @8 n: C) ]8 b4 j( d) N9 h
补充内容 (2012-3-8 09:42):
+ ~& \* E& p2 A. ~9 Phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! @6 i/ p0 S" I+ O+ k$ D. M: X, v这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
! t; N; g* ~& o0 T1 z7 a% n$ R/ s' F, j' a
himr <address> <value>. sample: himr 0x80040000 0x0
3 @; u4 `+ _7 @- n* q7 X
& k" e. R1 k, R1 M0 D. H例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ V; u9 g" n! d6 q7 d
himr 0x80040000 0x00
! s' U# J5 S0 m: v  Rhimr 0x80040001 0x11
' V; ^! M/ y2 S% v! {% u, bhimr 0x80040002 0x22  f. L, w* Z8 |: v# V  F1 b" U
himr 0x80040003 0x33
4 k6 [. C: ]" T8 Mhimr 0x80040004 0x44  p1 K$ ?9 {) T$ h
himr 0x80040005 0x55
' c# }+ H7 T# ?  ^' b
) v! k7 h# {# S% BSN也是类似。
1 `& j. F* Y/ _1 V5 C# D; _
& ~' }& i2 I) \7 F3 I  s& {现在主要是,谁告诉我们MAC和SN的地址?) P7 p+ i1 v) m' K, g# _
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 i7 H$ J/ I) P  q一直想找到运程修改MAC和SN的办法,苦于无解啊

8 {7 F: X( k9 j/ p' n源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ' y- R9 w1 W& r, N, M' U# I( z

+ B; X6 j) t: k1 g: W: a修改的代码早有了。到今天不会编译。
+ q* `8 t; V, R! s& h0 N" X& f7 U需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
      v. ?' }: [* {
  2. #include <malloc.h>, G& _# Y( E5 ?# c  m3 f/ _
  3. #include <sys/types.h>3 M  p/ C6 e; K% c
  4. #include <sys/stat.h>6 {# F. N5 `3 C( O! j
  5. #include <sys/ioctl.h>
    ( Z9 p& |* L& _/ r' B. j
  6. #include <stdio.h>
    $ m) e9 k( M4 t
  7. #include <string.h>
    3 D/ s4 T) p! h0 I  {" J

  8. + t+ N9 j- e0 x
  9. typedef struct {
    2 M, t2 Q" \/ f+ O/ L. Q2 h! P
  10.         unsigned int        e2prom_cmd_sub_addr;
    0 [4 D" @5 H. w
  11.         unsigned int        sub_addr_count;
    : `6 q0 |8 A: T
  12.         unsigned char*        e2prom_cmd_data;1 A, ?/ i) ^& R( f# r/ _6 Y
  13.         unsigned int        data_count;
    7 x) W0 h7 H1 ?" C$ G! y
  14. } e2prom_s_cmd;
    : w/ F1 g3 ]5 p1 b3 u" m4 u
  15. 4 m5 o  \& q! t" C' s# N, Z
  16. #define E2PROM_CMD_READ 1
    5 m0 g. O- |$ B+ U. _* S2 [, e
  17. #define E2PROM_CMD_WRITE 2
    + X% L& w9 L8 @  g" q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( t: L4 G# F; f( I" f# a

  19. 5 O: N2 s% c( }: C
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( u6 T  c7 ~3 H" I+ U9 R
  21. {
    ) R4 w/ E* O# ]* B6 _% {2 F
  22.         int fd, ret;
    8 t% C" O& {& k* [8 R$ L2 h6 Q. |
  23.         e2prom_s_cmd arg;5 j! t* |- [7 q" c
  24.         unsigned char buf[0x18];
    . ~0 ]& g- Z$ H9 A: f

  25. % K$ b% I  W2 x9 J9 a$ [6 e, V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    # n* J4 U% P1 l. @! k
  27.         if (fd  < 0) {
    7 c. {( x& w3 G' F$ `6 q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 Z% K& q, ^  ?' w2 g2 v
  29.                 return -1;8 ?! g/ Y9 h9 \5 n) p
  30.         }
    1 l! j. H4 G  R, `7 K
  31.         arg.sub_addr_count      = 2;
    3 w% c% _* I* ?" T; l' Z0 ^
  32.         arg.data_count          = 0x18;
    , X6 W$ I9 c* ^- L
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) W" `8 v/ L$ f- T3 T3 s
  34.         arg.e2prom_cmd_data     = buf;8 Y# R' @+ v; n' k: i% D, g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 s: e* x3 W: V1 j- R, A  B
  36.         if (ret != 0) {# l* s8 B+ j% E1 D0 A$ P
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);/ Y+ |( l* K; i
  38.                 return -1;
    ; J) a. o3 N5 \0 ^' \. I3 o
  39.         }
    * j8 v2 |! Z9 n0 n6 o+ i
  40.         memcpy(mac, buf, 6);" p# ^/ u' p& Z7 Q+ L. ]
  41.         memcpy(stbid, &buf[6], 18);
    # O$ L7 ]+ O3 y/ B
  42.         stbid[18] = '\0';
    ( l7 {2 i; ~4 A
  43. $ Q$ L; e8 @% S/ v* ]) o9 |
  44.         return 0;9 j+ m9 u6 E; S6 B1 t$ R; p
  45. }6 j# l) l6 E. b' ^* G

  46. 6 o" t3 {' E, Y) n2 N
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , |+ f1 d2 R) V0 t' _
  48. {/ F# g% u, P: \/ l/ R" x9 D( h2 ^
  49.         int fd, ret;
    . b7 i1 X/ Z6 A3 [4 b! Q% p
  50.         e2prom_s_cmd arg;  P7 P$ d1 X4 L
  51.         unsigned char buf[0x18];, t9 m  I) X# v6 @+ ^- R4 l/ n+ j1 I

  52.   X6 \  u2 j5 q
  53.         memcpy(buf, mac, 6);6 f7 u3 L8 x1 ?5 J0 B4 ?$ T+ y) c
  54.         memcpy(&buf[6], stbid, 18);$ h  [' v. x6 I( A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / T8 @: u; _+ v
  56.         if (fd  < 0) {
    1 g) d" w4 _' G" G2 y# p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);; B  ~4 b5 R- {& X6 {
  58.                 return -1;
    , G! k! v/ c: j
  59.         }
    ' ?6 H; O- }% K1 P, L1 r
  60.         arg.sub_addr_count      = 2;
    - G1 C) U2 D1 n3 F' \7 f
  61.         arg.data_count          = 0x18;
    # H, E+ V7 ?% [) v5 z& S+ O9 |
  62.         arg.e2prom_cmd_sub_addr = 0x290;: S+ c) t' j4 Z" h: F! T
  63.         arg.e2prom_cmd_data     = buf;, U. C. n. d; g
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 z5 A6 X1 a+ h1 j& C- G6 O  `
  65.         if (ret != 0) {+ J5 Z0 a% Q9 m/ y! q+ G7 d
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    4 C7 o( o6 @$ C- `& P3 O1 G
  67.                 return -1;" S3 N6 D  _( n% K% D
  68.         }
    - m# G( i: ^4 }: r0 O

  69. ( W: N( o2 ^; o3 S
  70.         return 0;
    1 |1 ^" |. S* I3 G, |) U2 c
  71. }
      q5 S7 Y: \: ?( \
  72. ! m2 Y+ e( l0 [. I' C; [1 {5 e
  73. int main(): {" Z8 a2 U' t5 h
  74. {2 \) n1 s9 U) ?; ^! }( z, W) i
  75.         char c;
    & {# U; ~1 j0 T6 F0 `3 D
  76.         int i, macs[6];3 V( A- X0 j% \" ?$ F
  77.         unsigned char mac[6];
      V! S2 I. A, h
  78.         unsigned char stbid[256];
    . K* k7 A$ I% t' Y( F
  79. . \7 j5 y: R9 ^7 `" N6 J
  80.         if (readparam(mac, stbid) < 0)
    9 {# _! F! o  y+ k" W1 T; D
  81.                 return 1;
    / d4 M( Q- b# ?5 O; L' l

  82. 7 s" d2 s. G. Q
  83.         printf("Current parameters: \n");
    : g+ l8 |8 Q) k5 q1 d5 [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 ]! k- |8 K/ W# |% c
  85.         printf("  STBID: %s\n", stbid);
    - n# [6 z! w' B" @' l; z( u1 K2 [6 {
  86.         0 G: b) D, v# L8 J9 L9 Y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");, p5 E4 I9 \6 y; b( X2 I2 ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & h" y9 `# E+ \3 T+ R1 H
  89.                 printf("Input MAC error\n");
    5 K4 F& ?; I+ o* \1 J. L; V$ T" @
  90.                 return 1;2 }  d7 H1 B  ?& F( \
  91.         }
    ' S1 L; ^6 C. }& a0 |4 y; E  t9 x
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # y+ ]2 u- X! x/ C3 |
  93.         printf("\nPlease input new STBID: ");
    , y' V% E: v0 v6 \  J
  94.         scanf("%s", stbid);) A8 o% I' b% z# t6 J+ g
  95.         if (strlen(stbid) != 18) {  k# v6 M+ V# {6 y: ?( f
  96.                 printf("Invalid stbid\n");$ o1 v0 N9 ]7 r. H& y0 p
  97.                 return 1;: n4 x: h/ H5 ^* A2 {1 M
  98.         }
    ! ?. a  U$ q6 f3 N* T% N- B- `
  99.         printf("\nNew parameters: \n");" q- {# ~7 H4 e5 ^# v
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( C4 s& ]0 Z$ P3 r: G0 H1 o4 C
  101.         printf("  STBID: %s\n", stbid);' X# {1 ^9 n: A6 h" ]2 _/ V
  102. 9 T" f8 U* L$ @; A
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    : b; D3 @1 ^- b8 O+ O# N
  104.         for (;;) {
    3 t. }; V$ H: w/ g1 t' X+ U
  105.                 c = getchar();- o' J+ Q" G" M5 v& J, M) I
  106.                 if (c == 'y' || c == 'Y')  Z& ~; H  J+ S! u
  107.                         break;0 W6 o! b1 N. F0 v! x% e6 b. O
  108.                 if (c == 'n' || c == 'N') {
    - W; w8 j5 l+ K* k
  109.                         printf("\nAborted.\n");
    9 n$ ^& e/ X7 @/ B! C+ B
  110.                         return 1;
    - X( ]& c- h& \: e
  111.                 }1 ~( \3 L/ {. M  b" Q3 k  J
  112.         }
    . z6 V& J3 J5 E* v1 ?" A1 q
  113.         if (writeparam(mac, stbid) == 0) $ c  B  {+ w; c1 q) ~  H
  114.                 printf("Parameters changed.\n");4 [" S; v! h4 e& I3 a" ^
  115. $ S$ l8 Z$ ], m8 h2 l
  116.         return 0;
    8 J* T/ f8 [2 `% Q1 k, V
  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 0 g# b1 V( i; w. I- u8 n
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 \" H0 g; @& b
你用的编译命令行格式是什么?
# Q1 L( z$ `  O1 y' U
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-11 08:03 , Processed in 0.026357 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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