查看: 16194|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , }# ?4 ~  S1 S. l5 I2 ^
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - F2 \! d7 K# K8 J2 z& O4 Y  J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
1 w2 A7 g& q0 _3 m6 B1 v. |- O5 M# Musage: himr <address> <value>. sample: himr 0x80040000 0x04 z, ^& r' E, F$ }5 a# V

/ B# C4 ?* J; l! c; E0 D# d/ i1 F$ S7 J- c
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* d; P* p! ~2 m& d9 ~! c+ U$ b. v! H; q" l- i
补充内容 (2012-3-8 09:42):$ v9 n$ [- W1 Q9 w7 v) u$ S9 k
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
# g# T% b" O- o7 z# }4 ]/ E这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。, Z' j$ ^3 y. X0 _. _# R

/ v7 M9 N2 @3 k& d' }himr <address> <value>. sample: himr 0x80040000 0x0) r9 V7 N" x8 i& Y# j8 l- e. E1 a

* A/ L' ~4 H$ A/ Z  }8 f0 }例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& T8 v; e$ b  e$ A9 w3 h2 M3 ]himr 0x80040000 0x00
; ?  h" v# r+ K' Ihimr 0x80040001 0x112 U: \# H" f- ]
himr 0x80040002 0x22( c: x7 \2 R6 x, v! {. S2 ~& @
himr 0x80040003 0x33) l( n0 |( l; L9 r
himr 0x80040004 0x44
  a* ~( C: G4 U7 lhimr 0x80040005 0x55
# c% m3 G7 r, _
7 u5 u' J$ ]2 @SN也是类似。
" X8 u$ u8 f4 m% U- \/ c4 A/ w3 @/ `& J$ J
现在主要是,谁告诉我们MAC和SN的地址?
- u1 X' T9 x$ I
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 , ^+ t) w2 W- Q% }, K
一直想找到运程修改MAC和SN的办法,苦于无解啊
3 Q8 t+ T+ x  k2 F' @
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 $ W+ h, t" Q9 D5 U$ h) F5 i# }) N

' F! o, }& A8 c2 g) v7 c7 J( Y修改的代码早有了。到今天不会编译。# ^" G2 G8 p/ B  n4 w/ C
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  ]) u$ Z' S& l' Q! W# j
  2. #include <malloc.h>( ?5 R3 P" C, W  L' c: P. G
  3. #include <sys/types.h>
    1 v% [* ~* E* u4 T! W
  4. #include <sys/stat.h>
    3 I% w) t7 {' z4 f. {( A
  5. #include <sys/ioctl.h>
    7 p' {9 D7 K! A9 X
  6. #include <stdio.h>
    + t$ p9 S" V! g& n! K4 U; F/ ^
  7. #include <string.h>/ t2 V: q% v6 e, C3 R( x( E

  8. * d/ |+ c- u7 m  T4 M8 M, _
  9. typedef struct {# E  J9 m& l4 X/ r
  10.         unsigned int        e2prom_cmd_sub_addr;
    . t1 ?  x1 j- Q) m
  11.         unsigned int        sub_addr_count;: s" ]5 E$ s& |5 w, _6 j7 ^- T4 {
  12.         unsigned char*        e2prom_cmd_data;
    , [" i  ^/ U- d  o- T8 e$ R, d1 ^  m- [
  13.         unsigned int        data_count;% |8 p* n; s' p* x3 q3 u8 O. f& F
  14. } e2prom_s_cmd;3 R8 Z& H3 ?. _+ U3 s
  15. 5 F5 l2 d9 }- p$ F4 F
  16. #define E2PROM_CMD_READ 1
    . M( R$ f9 D7 x6 {5 ]
  17. #define E2PROM_CMD_WRITE 2: e' J8 W8 Q$ |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      @; k6 b3 y' s( n2 H% v; F# ~

  19. ( e7 q  S' J7 }+ u! {' ]3 ?( N
  20. static int readparam(unsigned char *mac, unsigned char *stbid)  |2 Q0 U3 k" X+ y  A/ i+ ~! C
  21. {4 n$ ^% G5 u' D$ U# g1 |7 X1 V
  22.         int fd, ret;. V6 J9 {; y5 }0 y
  23.         e2prom_s_cmd arg;
    8 |: I2 H# e% f; ]3 j0 P
  24.         unsigned char buf[0x18];2 J: C! ]0 ?) ?( q) R
  25. # u$ Q; w& o1 O9 u1 p9 P
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % N+ |. `( |% ~8 j9 x7 o) b
  27.         if (fd  < 0) {
    + [) y# B. f+ K- I( b% U/ x/ x4 P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & x6 X0 h  `8 T4 o" D
  29.                 return -1;" p: T, l3 i4 X+ n& [. g
  30.         }% k! E; W! z, ~" \9 R' L4 q; s: U
  31.         arg.sub_addr_count      = 2;
    ; u. N7 F+ u  ~2 r% t2 ^; N
  32.         arg.data_count          = 0x18;& j/ K7 x0 s( l2 ^7 n( T" C0 B) _
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 o- e! e) C, O" C) P& v2 k
  34.         arg.e2prom_cmd_data     = buf;9 @# {' I% M0 F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 G5 d0 G4 ^0 i9 a: e9 q( h
  36.         if (ret != 0) {4 Q1 |( a( k5 _( e4 F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    6 X! b/ T# Z. e0 ~
  38.                 return -1;2 k) b& |) z3 l$ [$ {
  39.         }
    * L% p! E# J/ {+ S' k% N. v
  40.         memcpy(mac, buf, 6);$ E; @; b4 H2 c4 P
  41.         memcpy(stbid, &buf[6], 18);
    1 f7 F9 q( ^8 H$ C0 Q* S
  42.         stbid[18] = '\0';8 d3 N- O5 ?8 a1 b9 W3 Q; ?
  43. 5 p2 I& g* |& u. ?% C+ ]. K9 i# D
  44.         return 0;- D( d: s$ Z2 W/ j# f
  45. }
    ) d" V6 k9 Q3 Z0 m7 o

  46. % q# ~# N( P, f' o# x+ G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! U6 d. A6 t. Y- c  t" R0 v
  48. {2 W+ [& ?  ~; y9 S% x  q
  49.         int fd, ret;
    6 ]" H: ]9 ]6 h* a
  50.         e2prom_s_cmd arg;4 n% c8 M7 O4 ?* q) p% w" @. E: v) W, b
  51.         unsigned char buf[0x18];
    $ e5 H) Q- A8 W- A
  52. ! W5 d! P- e) S
  53.         memcpy(buf, mac, 6);8 I! t% g* E( j8 G6 ^) \' `
  54.         memcpy(&buf[6], stbid, 18);3 s; x! J9 a3 T% I6 x
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( v8 D. p( j. X- _% R
  56.         if (fd  < 0) {/ @# Y0 J5 t6 ^2 r8 s
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! ^& V1 K  e4 N$ H! z1 `# k7 i
  58.                 return -1;
    ( T* N3 ^* Q0 U+ k3 z3 I
  59.         }, U6 A; P! _; \- L  o/ R
  60.         arg.sub_addr_count      = 2;) N% W9 h6 k% N: u' Y
  61.         arg.data_count          = 0x18;
    , @2 e8 H/ z5 M# F, D3 P( H, g+ ]
  62.         arg.e2prom_cmd_sub_addr = 0x290;  Z" y* h+ f& t% O( _; n5 v  h
  63.         arg.e2prom_cmd_data     = buf;6 h  Z% U7 f# \7 b1 k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ( H# X" D$ O' ~! b
  65.         if (ret != 0) {2 @: l1 @% z- F6 x; g7 X  F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);! r7 m( `8 w* U/ ^3 X6 Z. h; m
  67.                 return -1;
    4 l  r7 a& N0 a) e, \
  68.         }
    5 u& F/ `7 A* h

  69. ; H! b# d$ N  j0 f6 M7 }; N
  70.         return 0;6 C: e  @+ |' q
  71. }
    6 D6 P9 k6 o! \% b- \' _: u
  72. 3 G8 I' i; [1 d$ K
  73. int main()
    ) u+ H$ [0 [7 x& s. F/ U
  74. {1 ]3 S8 A" W; V4 x6 D& K
  75.         char c;
    . t8 w$ n9 {! ^
  76.         int i, macs[6];1 u% J, ^2 a' i; c
  77.         unsigned char mac[6];
    # U+ u, K( m3 H$ k
  78.         unsigned char stbid[256];# P! i& a) Q: d9 b

  79.   m6 L6 S5 ^5 L6 y& }2 ]5 J
  80.         if (readparam(mac, stbid) < 0)
    / x* I# S6 O2 z4 @7 L4 k0 a
  81.                 return 1;1 d9 q, u  L0 l$ C* m% m

  82. , B/ p3 U, G" R  G5 A
  83.         printf("Current parameters: \n");
    0 m% z, k0 L9 Q( p+ P
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ D" l5 j5 T& o3 R6 P! L; T
  85.         printf("  STBID: %s\n", stbid);+ S3 C0 J1 g* M. u: S5 Q
  86.        
      n3 Q7 M( i, ~, Z8 m3 j% W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 O4 _+ W" F1 U1 C8 u
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {- L" Y" O( w8 D7 D
  89.                 printf("Input MAC error\n");
    8 d( C( N7 z) R" M1 J
  90.                 return 1;, V* h$ Z; G% k
  91.         }
    8 ~8 r% f, o* A; j0 |
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( `" @! k% u5 R4 T  f
  93.         printf("\nPlease input new STBID: ");
    6 `9 K+ u9 c5 ?3 d
  94.         scanf("%s", stbid);+ g2 x& H1 R# K
  95.         if (strlen(stbid) != 18) {
    / r- S% L7 o' k8 Y  L; `- ?! x
  96.                 printf("Invalid stbid\n");+ h9 {3 |3 C* Z/ Y6 h
  97.                 return 1;
    / |+ X) _; M7 p4 J: |
  98.         }8 j6 E" j; i; D: Q6 p* i" o! G
  99.         printf("\nNew parameters: \n");5 D4 Y- I) A  ~* x% E5 r( k% ]6 X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 v& m# e  j" a8 [' m
  101.         printf("  STBID: %s\n", stbid);
    2 Z6 S* ^" x1 d/ m5 `0 \
  102. ! Q- f. {- ?$ e# p
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ g# n6 m- ^! `$ o
  104.         for (;;) {
    5 s# ]% n. k. R/ \8 T
  105.                 c = getchar();
    + q/ S  J% W1 z% x
  106.                 if (c == 'y' || c == 'Y')' n* q6 e+ p9 f) E' v6 w
  107.                         break;
    5 j. Y3 e4 S! \# _7 O4 ]% H' A( m
  108.                 if (c == 'n' || c == 'N') {8 e; Z: K* Y; K4 I8 q# q0 i% _
  109.                         printf("\nAborted.\n");
    ; \3 \+ Q* s# [- M
  110.                         return 1;- e4 C9 Q; x/ t2 q: t, o' i
  111.                 }: D' K: U* D/ @
  112.         }2 i8 c" |8 V( \9 W6 V3 `9 Z
  113.         if (writeparam(mac, stbid) == 0) 2 V, Q; C6 i4 B) R# y
  114.                 printf("Parameters changed.\n");
    6 C/ J' P" \; H
  115. 5 }6 Y( A5 e: l# E
  116.         return 0;: X, Q1 L1 D, a- s9 i* N
  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
4 y7 a  l1 t+ n; j1 ^在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
# h; Q+ C: t. M' l1 x  b1 r
你用的编译命令行格式是什么?" R+ H$ `6 i# r
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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