查看: 16602|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr' J) B( b" e+ f: [; Y) D6 x
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 Y6 l/ T; y7 M5 V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# G- ]0 T" \& u+ B7 Kusage: himr <address> <value>. sample: himr 0x80040000 0x0
7 R! s% b$ q7 I0 i! |# ]  f& ]- O1 h+ S( }% A
1 ^# B% y2 c0 }8 o
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( O/ Z2 V6 p! `  a3 _$ d9 s
, C# U/ A7 W! p3 g, I
补充内容 (2012-3-8 09:42):
7 u4 v; C: L3 x* zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
9 Q8 E) R+ ]$ v( s3 @+ K5 `这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
5 K1 S( ~6 Q( U1 w+ }. C0 H
/ {3 I: _; {" }himr <address> <value>. sample: himr 0x80040000 0x01 d. a1 I1 T7 V0 h
. b$ y4 e4 ~( x) @  s0 D
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 c' D" t3 ^8 E- y, W& H; Yhimr 0x80040000 0x001 Q2 u' n8 y3 `  }
himr 0x80040001 0x11
9 p; k8 i# q  _! T( \% w( yhimr 0x80040002 0x22
7 H1 X& U8 N' M: P+ phimr 0x80040003 0x335 _4 n. ~% T, s
himr 0x80040004 0x447 V: y1 C( b8 D
himr 0x80040005 0x55
% L& x; H1 Q" ~: i( [) n+ t. \) Y8 q: m
SN也是类似。- h# z9 M* I; T5 S) g! {, N

) L! U% @; w! c$ \现在主要是,谁告诉我们MAC和SN的地址?) k" w  Y2 T3 y. M( m' I. E: d1 V
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 _) \8 q; y) J% L/ @一直想找到运程修改MAC和SN的办法,苦于无解啊

& V+ ?2 B" Z+ m- j' T源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( I1 e3 o' g, y, s8 Q: M
+ J$ |- [9 i- u修改的代码早有了。到今天不会编译。+ @' {( u7 l' j* B2 k& Q, n- m
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    5 i' D% C" p/ {0 Q
  2. #include <malloc.h>+ D) a" q) M1 G9 Q1 C5 S
  3. #include <sys/types.h>
    6 I$ }4 [7 w( S. l
  4. #include <sys/stat.h>7 u- n( u0 I- N/ O6 g
  5. #include <sys/ioctl.h>! B' I- h/ M1 i/ Y
  6. #include <stdio.h>; Y# x# q" A0 w+ U$ q1 B  O7 a
  7. #include <string.h>
    ; m: R8 K# Z& @- w/ p  c# x' i
  8. 1 z& a7 ]( k2 W
  9. typedef struct {7 p( c  U9 u/ q6 _2 }; Z8 Y
  10.         unsigned int        e2prom_cmd_sub_addr;
    , U: T8 V0 ?7 Z! T& f! r+ |
  11.         unsigned int        sub_addr_count;6 T6 e' b0 v) X( q
  12.         unsigned char*        e2prom_cmd_data;& s' h9 A, [9 m: W, D* _
  13.         unsigned int        data_count;9 @% L9 T2 O3 b1 _6 d
  14. } e2prom_s_cmd;
    " a+ ~; O! B1 ~0 Q" C
  15. ! K- l4 G! \7 s; u! {# y
  16. #define E2PROM_CMD_READ 19 c5 z9 D) t8 i8 V2 m- g8 k; a
  17. #define E2PROM_CMD_WRITE 2: y& m9 M) Z0 j8 o* q- t' G! ^
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ [2 k% L' N7 p" ]' w+ E; v
  19. 2 {8 d7 g- Q) |
  20. static int readparam(unsigned char *mac, unsigned char *stbid). J, G% a, F! m# b: h! @
  21. {4 O/ |3 Q9 ]9 o& L" ]! y5 _$ l) d
  22.         int fd, ret;" @' B6 B9 }. g
  23.         e2prom_s_cmd arg;& C/ x: k3 {* j( |8 A/ L* c
  24.         unsigned char buf[0x18];) `9 K7 q# l( o) w9 J

  25. ( d4 Q2 d6 }1 P6 G8 N; m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 O& d  S: S# x" y
  27.         if (fd  < 0) {/ u; U8 T( B1 L! L2 X; _7 w* h
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . m8 g% b9 J. E0 q+ c- o: `4 {
  29.                 return -1;
    ( W' g4 q8 d- D* z& g6 ^3 z
  30.         }
    + g& F6 n1 g& f8 A
  31.         arg.sub_addr_count      = 2;) z2 v; Y! q* |( T% [0 ]
  32.         arg.data_count          = 0x18;
      f# E$ P7 [7 `6 n5 p2 a* s
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    - A3 z6 ~) Q% }- G2 ~" p
  34.         arg.e2prom_cmd_data     = buf;
    6 A9 n0 t: G  {' w" `3 K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    8 n& Z$ p! g7 e3 ~* r9 Q" w! Z
  36.         if (ret != 0) {
    0 l8 r/ N- ~  |' v
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);/ u7 B* g7 Y0 @
  38.                 return -1;1 g. N# _$ m$ Q) ]( Z, q# _
  39.         }
    9 v; w1 W* C% ^5 w2 b, L# U
  40.         memcpy(mac, buf, 6);  N+ h/ ~: B* a: A6 R9 _6 X
  41.         memcpy(stbid, &buf[6], 18);
    7 Y3 E6 C. V* ?: a
  42.         stbid[18] = '\0';# ?0 w* Y# z2 m- }  I4 L6 L
  43. 6 o+ s) b% T, ^7 {
  44.         return 0;4 {7 x2 d5 Q+ s4 f! H+ `
  45. }
    $ s7 O) {8 n& i4 K  ?

  46. , u2 |. h6 Z* ^7 Y+ b+ Q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( y0 y* Y# y3 f' J4 Z" b
  48. {
    ' l0 H8 O8 P) z: Z# o
  49.         int fd, ret;
    9 y# b% D8 X4 T! W) z3 }
  50.         e2prom_s_cmd arg;& M0 ^1 a. Y) N, B
  51.         unsigned char buf[0x18];$ e# ^7 ~8 l2 k, n# Z3 i

  52. 2 w7 g  Q- J: ~  m, c( |
  53.         memcpy(buf, mac, 6);
    ! A  ?6 u/ N* L
  54.         memcpy(&buf[6], stbid, 18);/ J; n, D$ D" B9 F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ y* J; h+ m9 L" t* s2 o$ F- M  f
  56.         if (fd  < 0) {
    8 t# S' y$ j7 S7 P1 z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / h+ u0 g9 L) j$ e( b7 Z- n* S# j/ N
  58.                 return -1;
    ; r8 H; a% V( e
  59.         }: X/ u/ W! H. ~
  60.         arg.sub_addr_count      = 2;
    * A; v- ?8 s1 m* q
  61.         arg.data_count          = 0x18;
    ; p7 p: Y% }% }. ?5 H
  62.         arg.e2prom_cmd_sub_addr = 0x290;  O# Q' m: A( _  ]# }' I+ p" F( M
  63.         arg.e2prom_cmd_data     = buf;( s# \) m* S3 J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 {0 k$ B0 R4 J( Z5 ]* {5 g6 H
  65.         if (ret != 0) {
    ! K% ]) G7 e7 Z( x' T& Q0 e
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- C6 b5 I; B3 V  u2 {8 ]
  67.                 return -1;
    8 K  C. P8 }! Y
  68.         }
    $ u- j' Z2 }7 e. O9 [

  69. - H) {' [0 u2 X+ p9 p/ B
  70.         return 0;
    ) O3 s' y2 J1 k! w, l# Y/ p
  71. }  [7 a3 _$ E7 a- {$ b

  72. 6 ~% l% o/ Z: w7 D' @  @# i
  73. int main()* i. ~# h/ X3 ?9 |( b. q% A
  74. {0 D" B' ~2 I' `9 {3 T" t
  75.         char c;+ [. O: U1 X2 V7 l0 s  W
  76.         int i, macs[6];- Y+ q9 H# C' H8 r# a) z% z2 B& l
  77.         unsigned char mac[6];. G2 g$ ]1 z5 F
  78.         unsigned char stbid[256];
    5 d% E8 Y: _' c7 I! z0 `# [9 v; o

  79. " T) b/ q4 v# J- v! L' Z* ^
  80.         if (readparam(mac, stbid) < 0)$ k4 Q6 |8 l* _
  81.                 return 1;
    ( M6 i4 p& @$ S) y$ [' d/ s

  82. ' f* T% k# @# u
  83.         printf("Current parameters: \n");
    9 w9 o8 S) X& K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! A  V- D8 _/ x: u/ J
  85.         printf("  STBID: %s\n", stbid);
    5 ]4 Q# t, m+ O5 T& n7 }# B9 Q
  86.         & g$ ~% X4 P1 \6 P" i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + q. Z4 ]& F: [/ @! d& i8 V
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {+ {# B) x! i$ v1 D# u
  89.                 printf("Input MAC error\n");2 ]9 F3 c5 i; T3 D
  90.                 return 1;
    6 X" O  M; v' F. H  J* H+ K
  91.         }
      e1 X  e1 b. p! r3 f* l1 @
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( F. v* q% t0 p& H% n# W
  93.         printf("\nPlease input new STBID: ");
    1 z5 L! ^2 k( w! d
  94.         scanf("%s", stbid);
    6 h7 A) P. h# ^( y1 k
  95.         if (strlen(stbid) != 18) {- |; l1 S  K4 M5 h8 `
  96.                 printf("Invalid stbid\n");' U: W9 ?2 l7 ^) Y
  97.                 return 1;
      V# {1 E+ w1 h6 O# F  p" ~
  98.         }4 h' H# Y( g/ s' \$ j& W& F
  99.         printf("\nNew parameters: \n");
    9 B% h2 g) h7 |+ o- _; F! {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% ?0 @+ H/ }8 y
  101.         printf("  STBID: %s\n", stbid);, G* p$ d) K  ], q

  102. , A% x, U! {+ t7 v, ^4 s' I
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % h- A- p& g0 r8 L
  104.         for (;;) {
    0 u0 _9 ]! L3 t) I
  105.                 c = getchar();/ B1 F0 Q! J/ b4 {, c; G* u( i6 v
  106.                 if (c == 'y' || c == 'Y')
    5 k. g4 N; X9 U: m$ P. e7 G  e
  107.                         break;
    * `' \; w( G+ Z- j7 {4 A; G, k
  108.                 if (c == 'n' || c == 'N') {
    : V2 x- E, x. z8 D- X
  109.                         printf("\nAborted.\n");
    , l% C+ U7 ~6 H( X
  110.                         return 1;
    ! n/ X, z# l& y# N. y3 L# G
  111.                 }
    ! b' O, [4 Y+ G: O) `9 V# E
  112.         }
    . u  c  T7 C2 k- A$ y
  113.         if (writeparam(mac, stbid) == 0)
    3 \  }7 Q0 C  a, f( ~
  114.                 printf("Parameters changed.\n");
    0 i+ k6 w9 e! r8 o
  115. ! a1 E  h* ~0 @, E6 u( [. f& }: F
  116.         return 0;
    1 g+ l! J9 G: H  v1 ~1 n- n8 z
  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
* `7 t3 V) J" M( G' Z/ H# K8 Q在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: w7 c4 g, c7 l, ~, L) c' r* U你用的编译命令行格式是什么?
% p2 q3 {1 |& c1 j/ x& P4 a6 T2 S* Z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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