查看: 17406|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    & O; x7 I1 j/ i+ H1 N" U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . R/ C% c$ V( O$ |7 J$ K9 R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 J: D" V3 r0 W3 {! p
usage: himr <address> <value>. sample: himr 0x80040000 0x0
8 K/ ^6 N* I# m3 b: F! `
6 J) e& R* K2 J9 d: |1 I$ ^
% t8 u/ O; _. i1 u$ ~" c. p不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: y1 [6 H6 I% u" l+ p/ G; _# o4 t! l( [$ A8 _5 e* A4 H
补充内容 (2012-3-8 09:42):- P+ @# b. R4 f
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- B" ?5 W# g* B4 P, A& E" a6 ?这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
8 q' U) C9 v1 D$ B( F* H7 e# N) e4 n9 R
himr <address> <value>. sample: himr 0x80040000 0x07 @" ?0 J1 {: r3 r* Z7 e

2 s, ~0 H" C; E7 m$ N例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。/ U5 z2 Z# Y8 P& v1 k4 M
himr 0x80040000 0x00# Q3 h2 ?' L) a3 A  j" s6 X
himr 0x80040001 0x11* l4 _8 t/ a  |7 P6 G8 w* v7 x
himr 0x80040002 0x22# _( y4 E# a7 O4 F
himr 0x80040003 0x33
) A3 r; v! C& Ehimr 0x80040004 0x44
" K4 t  ?1 n; Y+ \  U- Lhimr 0x80040005 0x55' K1 D6 ^0 ?2 z% G
8 o" O$ W8 ~9 C9 w; u- g  o. {8 c
SN也是类似。5 Y+ y" O4 r/ G" z

- W8 n% Y# O- U* ~9 B* W现在主要是,谁告诉我们MAC和SN的地址?: B7 p; D* J& }& u( K  p$ U  D
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 # E- U3 V4 z# w4 \' u- Q
一直想找到运程修改MAC和SN的办法,苦于无解啊
5 W- J! O* S" E7 F) s
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
. E! d; C0 [. u" q8 R8 e9 O8 m+ b$ c- r
修改的代码早有了。到今天不会编译。" G+ P. u- X+ P6 r: e3 T- K) M- I: `
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>3 ]5 v, Y' X8 H! x  Q
  2. #include <malloc.h>
    " T: ]/ {  @0 f
  3. #include <sys/types.h>" i; B+ O  O( f1 e, d8 T+ z* c
  4. #include <sys/stat.h>
    6 h0 j; I, m& Z& w6 x2 x; ?" w
  5. #include <sys/ioctl.h>! k; {* x; g. z8 A, Q
  6. #include <stdio.h>4 v6 }% p! r6 i  Q- ?
  7. #include <string.h>
    - Z( E7 j" p9 s* W0 J
  8. 6 C4 g( c2 _, d- V. T
  9. typedef struct {
    0 Y; X7 {& n1 M! p. J
  10.         unsigned int        e2prom_cmd_sub_addr;
    / P& H) q8 H: Z% Q
  11.         unsigned int        sub_addr_count;
    3 u: J6 A6 b$ w: s: P% z
  12.         unsigned char*        e2prom_cmd_data;/ m: f9 N, }; {# I5 Z8 F9 m
  13.         unsigned int        data_count;# a1 i( K# n1 ]3 X. m2 \( t' l; n
  14. } e2prom_s_cmd;) r6 A+ E! j3 W

  15. * B9 S6 v% }/ {* Z
  16. #define E2PROM_CMD_READ 18 C/ N3 L1 E$ m, r
  17. #define E2PROM_CMD_WRITE 2
    ( r9 Z9 ^2 Z! K4 g, k& e$ V) x- T: A
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( p3 N" z/ j9 J2 f* t
  19. 6 F( R  E' Q% K, Q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 b0 m( |7 e# S
  21. {
    4 k/ F5 S( y, _4 e
  22.         int fd, ret;! I7 n* V8 l( M0 k0 r+ g1 ~
  23.         e2prom_s_cmd arg;
    6 @: \& b  ~: B3 G  _
  24.         unsigned char buf[0x18];' {4 Z; x: S+ M8 a* q

  25. 2 ?! y% N/ s) ?6 N3 K* K
  26.         fd = open(E2PROM_DEVICE, O_RDWR);) M+ g' x) m% K" e  _5 h
  27.         if (fd  < 0) {$ \+ N+ s, g2 H6 V$ _" y' M
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 _& ?* \5 H3 ]* C
  29.                 return -1;
    * l- ~1 s  C; s8 @( v, T
  30.         }* y$ f# i& p+ S; ^8 h+ T& s
  31.         arg.sub_addr_count      = 2;
    5 p+ h/ N: t, \5 ~3 K0 u# ^5 X
  32.         arg.data_count          = 0x18;
    ) _# @5 _* s- T# j  m
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 |8 J& p# d& `1 V+ f
  34.         arg.e2prom_cmd_data     = buf;( l" u# U7 K2 B; _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    8 C6 J5 u4 O8 D- l( K$ E& b
  36.         if (ret != 0) {
    : _4 V8 n, Z: W( u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 U7 n- \4 m& }: ^9 K% z
  38.                 return -1;
    0 d( t5 v1 A2 L
  39.         }
    ! F( F+ v0 x- {
  40.         memcpy(mac, buf, 6);1 a3 h, D" y: m# F+ R
  41.         memcpy(stbid, &buf[6], 18);
    3 j1 q* E' P& `6 Q: o& ~* {
  42.         stbid[18] = '\0';: w5 z" E' D6 `+ t+ I8 S& N8 @6 l
  43. 9 e& x2 _/ g5 g3 M! d
  44.         return 0;
    1 Q$ i& N) T# O  t
  45. }
    # ^) w# Q, z+ F) a0 J: z
  46. % g0 L/ _$ V4 `8 ~3 A' b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 @  C" M& N) {; @
  48. {* V) T; C/ A) |! h4 |2 l& K
  49.         int fd, ret;
    9 R, \& Q. u5 O2 x1 o+ c
  50.         e2prom_s_cmd arg;) f  Y. y9 f7 F% @( J: N. V! _
  51.         unsigned char buf[0x18];* ^7 `! J5 `$ U3 U' p0 k
  52. ; [2 j& G* b& h) I4 e0 t
  53.         memcpy(buf, mac, 6);$ B* x4 p5 u: g: J
  54.         memcpy(&buf[6], stbid, 18);
    9 }! C- D( V1 e
  55.         fd = open(E2PROM_DEVICE, O_RDWR);* N! y& Z4 j% w1 |9 \+ Z
  56.         if (fd  < 0) {, I( {6 S+ j0 y5 n! I: R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 u  c8 m, f3 S# j
  58.                 return -1;
    1 e; d; I! r1 B
  59.         }1 ?! v0 u; b, o$ a4 E* s2 ]
  60.         arg.sub_addr_count      = 2;7 N) \% p5 K/ S- W, x8 }/ F
  61.         arg.data_count          = 0x18;7 u9 }: s& o9 f! Q7 `& l
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' j/ p* I3 a, _6 S) v8 C* x6 l0 r7 H  g
  63.         arg.e2prom_cmd_data     = buf;/ L" L" ~9 t+ b$ H% e  V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" _! n0 T2 P- C# Y* e
  65.         if (ret != 0) {
    % D2 R% P; H# U
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 `! ]# r4 w1 Y- L
  67.                 return -1;, ^1 A5 Q% s* W
  68.         }& f+ t( j$ z7 |  V7 Z2 O: s

  69. : x7 V: N+ G# O
  70.         return 0;
    + }) W* M7 F4 Y! @' d$ e' E1 _) b
  71. }. t, L7 T: ]# v6 B
  72. 2 q, ]  k, g) E  D* \+ {) B& q
  73. int main()) Z0 v; u3 y& g1 S
  74. {+ W/ t& h8 o  P/ O& ~' T
  75.         char c;& \9 o" X9 }1 Q$ @) K( {, ~
  76.         int i, macs[6];
    0 Q" W1 l2 J3 U7 t9 s2 k% t
  77.         unsigned char mac[6];
    ) t# I, y; e5 Z. e, b; k1 u& v
  78.         unsigned char stbid[256];. T% Z5 C) L5 o. z& r

  79. 3 |5 V1 c/ g9 z( ]* A% n# b5 R2 w
  80.         if (readparam(mac, stbid) < 0)" D; U% z. ^3 I2 E2 q
  81.                 return 1;
    ' t$ c' T/ C4 |* K3 Y7 s
  82. : C% d& R' V; e5 _( M
  83.         printf("Current parameters: \n");7 K& N4 G, o+ ?6 \0 P( g" b6 J6 L
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) v% e/ w$ r6 c% r2 _/ z
  85.         printf("  STBID: %s\n", stbid);
    # s! q/ y* ]; J  j# M
  86.        
    ' M$ V0 y3 A) C( H. J9 M
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 R) v4 f0 v+ N7 l' Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    " i# @7 C; N& P  a6 U/ k, |& P
  89.                 printf("Input MAC error\n");
    / U: o4 Z; k) O$ B( U# \7 C' j& j
  90.                 return 1;
    % P/ Q- t8 @2 T. r. d
  91.         }, K# |+ B( e# S/ F! A! c3 {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ; Y1 v  y" X4 j. `7 j+ T; u) u, a
  93.         printf("\nPlease input new STBID: ");3 _) M8 y$ @) h( R( w
  94.         scanf("%s", stbid);- _3 w/ `9 b! m+ z9 i; F
  95.         if (strlen(stbid) != 18) {
    # \5 |8 D, ^  Y4 H
  96.                 printf("Invalid stbid\n");
    8 \3 N. i+ s$ }1 @6 c( K, I
  97.                 return 1;* f8 \+ K2 k+ d7 B
  98.         }; g6 B7 |) S. ~, T3 L7 a+ _
  99.         printf("\nNew parameters: \n");
    - i1 z1 f( P6 [' {6 K% L& L8 G7 v
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 n/ J( A0 H" F6 R6 Z
  101.         printf("  STBID: %s\n", stbid);
    ) V1 x) S4 _3 h  v- G
  102.   y9 Z& `! J- S1 b2 A
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - t& ^/ p1 L/ W. }% w* U
  104.         for (;;) {
    8 c2 U2 ^" t, Y4 q3 j/ V
  105.                 c = getchar();2 q- F9 v& ]4 p
  106.                 if (c == 'y' || c == 'Y')
    0 Q7 L+ o$ h1 y8 a! I6 f; ^
  107.                         break;
    ( F- N2 k9 Z8 w) @8 m: V9 Q, y% |
  108.                 if (c == 'n' || c == 'N') {- F( I# c; |# s- P+ S
  109.                         printf("\nAborted.\n");/ r' C! {8 s8 W  U6 ^
  110.                         return 1;2 s1 ~2 X: Z) p5 w7 B; Q/ X8 b: L
  111.                 }
    . H$ }! \) E6 }' E2 l
  112.         }
    5 M1 m7 l$ J) t, m+ C, a
  113.         if (writeparam(mac, stbid) == 0)
    ' l% G; X) X- C" b% n- R
  114.                 printf("Parameters changed.\n");
    4 h+ d6 Z- j* t. r. o9 \

  115. / W( }: ]! H0 t
  116.         return 0;  o3 i6 ]* H* `) e/ ~* [/ B
  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
9 Y6 P* B! M% f. J& H在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
2 g( }5 e: }7 D
你用的编译命令行格式是什么?$ i- c9 H1 z! L, r( K' h9 T
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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