找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15157|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 f, x. X3 s- [/ Z3 i2 R( q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 p1 r3 n2 @- w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ z4 P6 U. W# ~  x& [. K7 H* Qusage: himr <address> <value>. sample: himr 0x80040000 0x0
6 j0 Q. e% C+ E8 I0 I+ H) u' l( v  U) Q3 V" s1 }/ J  W. |# R- e

9 R: j# ?# W/ T) G不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
0 e/ W  P* H7 P  ^) m9 k! R/ M6 {# c& R3 j. u/ n2 z
补充内容 (2012-3-8 09:42):
, v/ b- [& d; f: x0 yhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数2 G% v$ H5 A' p* w* j/ T
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。0 |2 w  K8 J- M7 l% B% v) K7 |

0 x) o# D) u! D8 C5 ?& khimr <address> <value>. sample: himr 0x80040000 0x0
+ z7 B( z/ ~9 S
7 x4 z/ N( x" c" z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
1 H) ^+ A. [' x2 B3 o* U( Whimr 0x80040000 0x00
  V' u# h$ B  ~& M6 Dhimr 0x80040001 0x11' f1 f' D' u* M. U
himr 0x80040002 0x22
4 ?/ X5 l  d9 j6 ~( @7 Rhimr 0x80040003 0x334 S9 y' z' @3 W
himr 0x80040004 0x44" W! b6 ]+ r9 s/ W" |' v
himr 0x80040005 0x55& c9 K  Y) H. m: U
0 |4 h$ D& `: I) ?$ H
SN也是类似。
3 b9 C/ T5 {6 ~/ Y2 ~. U- O( \+ v9 Z- d/ r4 y" n7 B/ d
现在主要是,谁告诉我们MAC和SN的地址?3 R& r3 P6 J# j  J0 q, `
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 @! ^/ K2 `& i! p* n一直想找到运程修改MAC和SN的办法,苦于无解啊

6 v* U. l( i: S4 h# {: d源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
! N9 Y7 z( w5 q* b# z* `) \1 a: ~# v# B- |4 W6 j0 r- E
修改的代码早有了。到今天不会编译。; l$ c  y2 o5 ^- G- m0 C" n
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 |! W5 Z# @0 p! M
  2. #include <malloc.h>
    ; j- s2 m$ L" ~, n& h
  3. #include <sys/types.h>6 C8 B- w# N0 V0 M) ~
  4. #include <sys/stat.h>
    * Y% U% O; M) S2 k+ ~2 r$ j* P
  5. #include <sys/ioctl.h>
    % N' ?2 _- G2 s$ U- j
  6. #include <stdio.h>% B6 ]5 V9 N- N# ]9 b# p% C9 {
  7. #include <string.h># V) X3 m5 M5 |: N; f) p$ @
  8. ) S+ m) U- |6 @2 A. e" V1 `3 A
  9. typedef struct {
    / S* K1 G1 P8 S* h  z% g, w& Q
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 D; h! e! @3 D7 Z
  11.         unsigned int        sub_addr_count;' J( d! G, E6 w, o! g9 I. j
  12.         unsigned char*        e2prom_cmd_data;
    : [' i4 h5 A' b( J
  13.         unsigned int        data_count;
    5 C% ^8 m" T8 W. U' M8 O& d
  14. } e2prom_s_cmd;( r# y1 E1 p9 g
  15. 2 p9 a1 a; K$ n. |! {4 p
  16. #define E2PROM_CMD_READ 1' H# b. J3 v; p% G! M: F9 Z" t1 r
  17. #define E2PROM_CMD_WRITE 2, l& S9 r+ i7 b0 z* q7 k0 a
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"2 y, O/ X+ K! ~7 R( R/ r  A& ~

  19. 3 u, N+ l6 F1 x. d6 h
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" v0 @  K. r6 y9 D" r
  21. {
    7 a% r( ~, \7 i8 Y: A8 ^# X4 R
  22.         int fd, ret;2 x6 X, A0 Q. x( v. u  c
  23.         e2prom_s_cmd arg;
    - O+ L% \5 h2 U* H6 I
  24.         unsigned char buf[0x18];$ |+ S* m- K! h8 e

  25. 6 o$ N% T2 ?2 _8 h  z" Q& t1 v
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 @$ I) Z# M6 y
  27.         if (fd  < 0) {
    0 y4 ]8 v! }: h0 f/ O# O1 M( U/ z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 h, j; h: S) Q, u9 l# D
  29.                 return -1;
    5 G. q- {" [$ U
  30.         }
    0 y. x) A4 [- e
  31.         arg.sub_addr_count      = 2;4 [% G6 z- k0 }% v) ^6 V9 W2 w
  32.         arg.data_count          = 0x18;; H3 r- }8 ~# J, H
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 V5 K8 ~) E9 J9 U6 M5 A
  34.         arg.e2prom_cmd_data     = buf;
    : ~( H) t3 m: [! Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 l% ~8 J* \9 `  ]) D! |) ^* P: C
  36.         if (ret != 0) {
    0 T  g! d( n1 K( E* x
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & c5 c8 v4 ?& u3 H, Q
  38.                 return -1;
    . m( {% @" O- |/ U8 ]! P; H$ `
  39.         }
    $ n, x6 L: w6 _
  40.         memcpy(mac, buf, 6);7 g2 \; i, O& b
  41.         memcpy(stbid, &buf[6], 18);) H1 L' U4 k4 A3 Q* I
  42.         stbid[18] = '\0';+ ]* _; R/ t1 N. ?; W: g! ~% J2 V; m

  43. . g9 Z4 t# q% j1 G3 E
  44.         return 0;) K8 I* E4 \+ U- q/ D4 q
  45. }! m) i7 |  A. `1 R3 Q

  46. 4 X+ ~* a) f1 U0 k/ P) i
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    5 a: }0 Z: z8 |$ @% X
  48. {; w2 f- e) e1 d/ l
  49.         int fd, ret;
    9 l4 `- ?" x# h+ {6 K
  50.         e2prom_s_cmd arg;
    . A8 M, f* O6 E$ Z
  51.         unsigned char buf[0x18];
    ( F0 E, w$ O, F) F* h: i; Y

  52. $ F% x1 C6 U) e
  53.         memcpy(buf, mac, 6);+ k: h  f# D" n5 V0 z
  54.         memcpy(&buf[6], stbid, 18);0 q+ W1 u/ U& X) V. h; m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 b& f7 V4 u9 D3 _4 z% g# H
  56.         if (fd  < 0) {
    ; Z" i( d- e6 g- T3 I& n
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& ^* r8 o) g$ ]$ L/ T! z
  58.                 return -1;  S- B9 w. l  g: W8 p
  59.         }1 P: H5 i# m3 D) l( z* [! _& u% ~
  60.         arg.sub_addr_count      = 2;4 b5 I; ?$ K2 j7 t9 ^
  61.         arg.data_count          = 0x18;
    9 k5 o  t! X9 |0 f) q! }# N4 Q/ H
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & o* n0 f. n4 T, @; @& @- e1 f) Z: v
  63.         arg.e2prom_cmd_data     = buf;
    : C1 \, ?0 @3 U7 u; ^# a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - {% M+ ~5 e, W, m: m
  65.         if (ret != 0) {  Y1 b0 p# Y' m) p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# A3 i" ^) j! V; h8 R
  67.                 return -1;) _7 U- t; F8 p- c% `2 ]( r4 H
  68.         }
    ) H; n# h+ m9 r  K

  69. " ?/ K, w! c6 B7 ~/ Q9 a
  70.         return 0;
    / O. E( S/ I* `+ K4 N* A5 {
  71. }, o8 x3 ?' _& r0 p1 x

  72. : K( e0 B/ R  V3 ~. c2 M
  73. int main()- Q8 b+ f- J8 I+ |
  74. {
    9 m0 R0 E+ K& R) ?" }3 @
  75.         char c;+ O9 |1 h) H, r; |5 ]
  76.         int i, macs[6];' S( t7 W, D  |+ M1 d+ G
  77.         unsigned char mac[6];+ z: _- T; Z1 Q! J- c# l
  78.         unsigned char stbid[256];
    1 ]) j& ~5 N( m
  79. , c4 G7 l$ V! n
  80.         if (readparam(mac, stbid) < 0)6 k$ a: _! X. Z! \* S4 Y+ V  d
  81.                 return 1;4 t8 k2 B; i$ _6 n
  82. 7 i9 @& p3 L7 x. m
  83.         printf("Current parameters: \n");0 f& U2 |# Y4 y8 l8 J; V. H( q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , X9 o0 T$ }: `/ ]3 \
  85.         printf("  STBID: %s\n", stbid);
    / `: ~7 b! A0 r! E, o
  86.        
      J/ x0 K) p/ c# E1 P( B4 c/ {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 m- @: I+ ~9 o3 e/ y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! W0 H5 r1 Q' A: t' D1 q& q9 j
  89.                 printf("Input MAC error\n");. g% w' t( A" G7 D9 e" k  U
  90.                 return 1;( E' [% L) g% G: g/ L
  91.         }
    6 \9 B, `7 m  T* ^9 O' I! F
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 O# i, l2 C9 @+ h0 D9 s) ~. K
  93.         printf("\nPlease input new STBID: ");, U+ r0 [' @7 F' _2 u
  94.         scanf("%s", stbid);
    ' ~6 N  K# z% T# a1 {
  95.         if (strlen(stbid) != 18) {
    : ?* @) L, h5 Z" C, B' z
  96.                 printf("Invalid stbid\n");
    ! F8 {3 m1 @$ x- T+ A& I1 S& Y
  97.                 return 1;
    0 O6 v* U" W( g7 R. a/ O
  98.         }/ u9 Z" |" Q1 O5 ?. T* Y* R
  99.         printf("\nNew parameters: \n");
    / L) r! q1 s: F: N& X) K! G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( z) x6 `- o/ a% r3 B
  101.         printf("  STBID: %s\n", stbid);
    1 F1 Y. i# @5 }- k' o1 O

  102. 2 {( [  P4 O, y" c7 f" ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 g  i# {, q( ]1 `
  104.         for (;;) {7 t0 H1 ~8 p1 c8 w5 A0 M
  105.                 c = getchar();
    7 N% X6 ]" g4 x% s/ S
  106.                 if (c == 'y' || c == 'Y')
    - K  [1 z7 q/ o, r
  107.                         break;, B. ]0 t9 r$ d& S3 A+ G
  108.                 if (c == 'n' || c == 'N') {& \7 K! c( S- _. o3 N- y: X
  109.                         printf("\nAborted.\n");
    ! ~+ U( o" x% G! l- V& e( |
  110.                         return 1;
    % [& T1 h8 i" u) h: }
  111.                 }3 _/ n) S) d9 z1 S; }
  112.         }
    ; l/ d$ b. w  ?7 R
  113.         if (writeparam(mac, stbid) == 0)
    ! F0 m4 u' N- l3 s' L9 |/ _; I
  114.                 printf("Parameters changed.\n");8 L" W/ g% _% W1 p" ?

  115. % i- P  X% Z& ?
  116.         return 0;- p% k( I. G4 W' a; L
  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
$ a  E3 n: K& K1 s1 q1 i9 w在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 n+ p/ R$ @/ @) ?1 M
你用的编译命令行格式是什么?
/ a( F& E7 h" ^" F# R% @8 G" }6 }
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-30 17:59 , Processed in 0.105041 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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