查看: 16255|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr' A1 ?* Y, w. |+ e& o( v2 Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig0 [8 \, Q; Y# P
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 k+ A1 b9 o/ [; G+ j  P; kusage: himr <address> <value>. sample: himr 0x80040000 0x0) `2 D3 T; X+ z- B( S- T

" D" x' o2 |, [# a! F
7 Y1 ?( a+ C' q3 k; \* Z: p不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
2 R& h( O+ F5 o, G
1 I) @" w: r4 ^补充内容 (2012-3-8 09:42):) k, c# P0 E# H" g' ~: J/ G# p8 @
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数# t' M0 U; p! U5 |! T9 }, C! r
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
5 r7 q% R  k, Z  u' |' P: F: ?. z3 k- ?  c# ^. H
himr <address> <value>. sample: himr 0x80040000 0x0
1 Y( n$ ~  D0 j( t- l# y8 Q+ |$ G6 A% \) l' ?
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# f) l9 `. g% B& X3 Q
himr 0x80040000 0x00
. I/ T( l7 r  u3 ehimr 0x80040001 0x11
) j% b/ \5 Q) [7 G  vhimr 0x80040002 0x222 U1 G! `# p( K& I, @: F. I+ A
himr 0x80040003 0x33- S$ @0 R2 b3 ]
himr 0x80040004 0x44
2 |6 a* z8 z4 {2 C: Ihimr 0x80040005 0x550 R# G3 l/ X7 o# a- k; Z

$ S( p# R2 p: m7 r2 Y9 a, H1 h$ XSN也是类似。3 }0 L( f# L2 u2 S' I. J( K  e
9 y7 O+ O" c2 H5 t
现在主要是,谁告诉我们MAC和SN的地址?. L' n/ e' e3 f7 ]
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ) x8 d( x6 I- J. u4 N, o5 U) H. ?
一直想找到运程修改MAC和SN的办法,苦于无解啊
, M" V. k7 E. j
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 U) U/ X( ]' ]) W8 E; a
$ u& L2 y4 @$ \
修改的代码早有了。到今天不会编译。2 b( b  d& V0 ^  W4 k% |' y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ! J$ v- O2 G5 P* s# f) d& @
  2. #include <malloc.h>: M8 @/ i: l7 P% V
  3. #include <sys/types.h>3 G2 X+ W/ U/ D) F  {
  4. #include <sys/stat.h>0 C) ]9 o2 X5 ^" w
  5. #include <sys/ioctl.h>
    : X2 E  x7 U" Q$ W: u& L( a+ R' G
  6. #include <stdio.h>
    * o5 i) H, K( M. s4 |0 b
  7. #include <string.h>
    6 N( t* Y6 C, {( e
  8. 3 u! Y( c6 }: C6 M2 r" j
  9. typedef struct {4 ^4 ^# n2 V, ~9 v- |# n
  10.         unsigned int        e2prom_cmd_sub_addr;8 a. c& W% R  [: [& j
  11.         unsigned int        sub_addr_count;
    5 G4 M6 q8 }# g7 x, U0 m
  12.         unsigned char*        e2prom_cmd_data;+ Z8 Q( ]( Z3 j. f1 l
  13.         unsigned int        data_count;
    ) S% G& R5 n$ x# j, I' q
  14. } e2prom_s_cmd;
    ' L7 M7 J( s' M8 L* x' w4 d6 |
  15. 7 e- g! B4 z" A
  16. #define E2PROM_CMD_READ 1% M3 b/ F3 x" s+ m0 g( `9 }
  17. #define E2PROM_CMD_WRITE 2
    4 e1 u! }' a% N- a# i% _
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# a4 q& Q" N$ j: K3 w* b- s6 [

  19. ; g! o8 m- X5 C, E
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 Q- C% [) C0 `
  21. {0 o( M# n4 \$ n6 C
  22.         int fd, ret;& H* y- ~" I$ p
  23.         e2prom_s_cmd arg;
    - A. @# p' V, p; h& x) P6 t
  24.         unsigned char buf[0x18];
    ) u- V) K1 n9 [' e2 A2 H

  25. 7 X0 Y5 U/ G2 g
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 i! E9 Z8 T( Y' E+ O! f/ o
  27.         if (fd  < 0) {
    % J% N2 i/ ~; t6 c/ B% ^
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& |3 A1 e( M8 U' R. v1 q
  29.                 return -1;
    6 Q4 c% E' S; U9 E+ R
  30.         }! ^$ e1 g  c3 U4 C
  31.         arg.sub_addr_count      = 2;9 [  k3 k1 f- C4 G$ z
  32.         arg.data_count          = 0x18;
    ! ^7 M* z9 S, {! t
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    + |* c$ K$ {& M. ~6 V5 x
  34.         arg.e2prom_cmd_data     = buf;5 r9 A/ w. ^. k3 P- H7 N2 u
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / C9 v  ]- C+ c- G# f* q) ?' S
  36.         if (ret != 0) {$ Y6 L0 j0 c4 R7 f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 p8 O; R; q+ q. E3 R
  38.                 return -1;  _& ?4 _8 D( p9 k
  39.         }- D" ~& v# p3 W) |# W
  40.         memcpy(mac, buf, 6);/ L1 h$ T7 {( t. i+ J. M
  41.         memcpy(stbid, &buf[6], 18);0 [0 S0 ^$ `4 b
  42.         stbid[18] = '\0';
    9 z0 M. S" c+ f: G& l0 c

  43. " y# W3 q% B3 H# x
  44.         return 0;5 F! }" e* `+ C! E3 H1 Z6 ^6 T
  45. }
    , {" @; Z, m# G8 f1 R0 m7 ?
  46. 8 y$ C3 P# _# @! d  Q# S: \
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)( k% N: T/ {3 L: ^! W* ^0 G# v
  48. {! \) q) g. W1 K: {' o% v
  49.         int fd, ret;8 K6 {2 t$ d# c  Q/ f* q" f
  50.         e2prom_s_cmd arg;: j1 q: b- \3 O- _; v
  51.         unsigned char buf[0x18];+ Q4 ~: m0 R# `! Z/ P
  52.   {2 J& y# ^1 t% X& |0 D! v3 M) z
  53.         memcpy(buf, mac, 6);
    + B9 X1 l8 ~! q- b4 D# E
  54.         memcpy(&buf[6], stbid, 18);% m* B5 b# ?  N/ J% S  Z" H
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    # O; B. X7 y% \+ m& M1 G: F' h0 _
  56.         if (fd  < 0) {5 m! w  \: Q5 V8 L; h- F3 d
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 Q& s* X# z; |) Y4 {& J3 o) I
  58.                 return -1;
    : e2 C: C+ I* }8 @9 V4 G2 e1 t
  59.         }
      n4 s- l9 }! |, n+ G
  60.         arg.sub_addr_count      = 2;" R  k3 g7 Q7 ?
  61.         arg.data_count          = 0x18;
    / G9 `9 g* R/ k+ n5 a. I& ~# `) ]
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' d' o" S& Z+ Z0 U. }* }3 `
  63.         arg.e2prom_cmd_data     = buf;2 o2 B, b, ~; B
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- X: n% x) `; a9 Y' P0 P
  65.         if (ret != 0) {
    7 ], J; }  n% e$ S5 y- s
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);6 v7 E- f$ d# s, }4 S+ M) Q
  67.                 return -1;& c/ P2 [9 A6 ~8 z* c& B
  68.         }4 C2 G8 l6 q( Y2 ~0 c3 b  \

  69. & \1 g0 G9 @1 D3 M1 c. O
  70.         return 0;
    ! E' R1 _* s3 K  W
  71. }
    / m' u$ Q2 u( u
  72. ! W5 j2 ~. t4 X( S& t" W
  73. int main()
    0 W1 }1 w6 F% ]6 e$ B
  74. {: P9 c0 O% b6 K. _# H9 C, B
  75.         char c;6 s) ]0 p: y( R! A0 I! x/ i4 F& @
  76.         int i, macs[6];9 @* P$ R4 y  g1 Z
  77.         unsigned char mac[6];
    % H) O; T2 ?0 ?1 F" ]  q: E
  78.         unsigned char stbid[256];
    ( P% F: s6 h# P& F% g
  79. 9 Y& Q/ N# n0 F) A& v5 _
  80.         if (readparam(mac, stbid) < 0)8 T. s# o5 W. c6 Q9 X% u2 P5 s
  81.                 return 1;2 e" Z0 N& f, Y
  82. 2 R: p: r* {2 W; l7 n
  83.         printf("Current parameters: \n");
    7 L8 ?$ ~9 T8 q$ z0 m/ ~) w, o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 w6 i9 T9 h0 t1 ]: F' F
  85.         printf("  STBID: %s\n", stbid);6 t7 y, D# U. S/ E8 b% v1 B
  86.        
    : I  X) w0 _0 p( U4 @1 D& o5 p
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ g1 Y. {5 Y+ t6 H4 g- b
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {, @: n5 b2 t$ s5 C0 `
  89.                 printf("Input MAC error\n");
    6 O6 ?; ~, K1 ?5 d( ]0 K0 W
  90.                 return 1;
    , L" K+ b1 C8 N- o) C
  91.         }+ r+ {, c, o( x  t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 o4 X) ~" J' k; }. P6 \
  93.         printf("\nPlease input new STBID: ");
    5 C- Q' O1 V" {) t1 q
  94.         scanf("%s", stbid);
    : r1 M- i  c- |0 R5 F. I
  95.         if (strlen(stbid) != 18) {
    5 }# V2 Z4 q' o; H% O
  96.                 printf("Invalid stbid\n");$ U9 X. G5 c& O) ~, f
  97.                 return 1;' |7 h0 e2 E1 }/ `0 N4 R
  98.         }  ]8 g' Q7 e3 J3 ?8 ~
  99.         printf("\nNew parameters: \n");
    ( P$ W4 W: S/ f( ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 y4 {! v, n/ ^, Q
  101.         printf("  STBID: %s\n", stbid);
    ( Y: S8 J! b& m" @
  102. $ z( T3 ?5 W. s$ M
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 t4 Q7 ~! o# q
  104.         for (;;) {
    ( i. Z. H* ?$ s6 P/ M8 O
  105.                 c = getchar();0 j/ Q4 j* E, \( B$ |/ Z
  106.                 if (c == 'y' || c == 'Y')
    6 p1 |. h; Y* }/ x1 c
  107.                         break;
    ) n) t9 S7 K8 u; a! V$ ^* C
  108.                 if (c == 'n' || c == 'N') {
    9 p3 I. b& P) j4 u& D) n" Q  v
  109.                         printf("\nAborted.\n");
    ; C. q9 q$ ^4 L& R9 m
  110.                         return 1;
    ! |# b- M) H4 f! @5 p6 `5 h7 t6 A
  111.                 }& N! x! _# E- X
  112.         }
    9 n1 y( C$ |; L& B9 m( |
  113.         if (writeparam(mac, stbid) == 0)
    , D8 b6 o: R  g' ^$ g4 I
  114.                 printf("Parameters changed.\n");
    7 c' S" B5 U9 |* O

  115.   ]5 {1 U( c1 D; x
  116.         return 0;5 p- J# x$ {2 ~0 v+ o
  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 ) _5 S4 E( g6 N$ R# a- ?% g: l
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
) [+ R8 F- @  @2 p; D
你用的编译命令行格式是什么?
; R* ^5 [* B8 H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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