查看: 17880|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) Q- f- _; S$ i; g8 `" D6 [
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( I2 k0 u2 z2 G+ D  U" f$ m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ D: G% f* K( d, Jusage: himr <address> <value>. sample: himr 0x80040000 0x0" }# Q2 |2 A2 S) ]# T
; m( k( \: D' d2 }' `' U" l1 W1 q5 Y
3 C0 @& E  c! g3 H- a
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 ^7 ^0 r' J( e3 {6 e; ~, |% \1 {, C
% P6 b6 q% J) N( J3 e补充内容 (2012-3-8 09:42):3 k8 }8 T) f6 `, U: s4 i
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数4 h) c0 b7 u( K
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。" l) w8 h8 \& b4 U" @' l; G$ X
8 Z7 ~/ @2 p# b4 r3 f8 i. H
himr <address> <value>. sample: himr 0x80040000 0x0
/ r" _) b6 @2 W* R5 N9 a$ I. D  U( y1 r3 d" O- {* e: n! k2 Y0 Q+ W
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。/ T5 s6 T  q# z8 V# b' `
himr 0x80040000 0x00
6 k( r) u' i. W7 z8 e& Uhimr 0x80040001 0x11
5 f# ]% I5 E+ L$ v2 b# K1 thimr 0x80040002 0x22
( _9 z; B3 k% ihimr 0x80040003 0x33
; J# U- u1 a0 l( B, d9 l' vhimr 0x80040004 0x447 v+ e* p0 G5 D; {$ t' P9 T2 T3 S, X
himr 0x80040005 0x551 d" v1 l1 ?( ?* y6 A5 }: z
) M# L0 q, A- E' C- c
SN也是类似。. S' `/ Y8 B& X) }  b- ]
6 o% V' Z$ M4 I: \
现在主要是,谁告诉我们MAC和SN的地址?, A% C  M' ^% ]: I; P
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 [, w: G8 [$ B- m1 u" a( C4 Y: }
一直想找到运程修改MAC和SN的办法,苦于无解啊

6 y/ w# E" I1 J. ]7 t源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - |# j5 w# f9 c

1 y4 h5 ^( x7 I' R修改的代码早有了。到今天不会编译。
  X) m) a) m! r/ Z1 p需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>2 V( Z- [: O2 d7 C7 ~& e
  2. #include <malloc.h>
    1 ^& x! g! h' k  p
  3. #include <sys/types.h>+ {4 ?# _  }7 Y$ A7 C3 |
  4. #include <sys/stat.h>9 G% I1 E3 Z, N$ l- P7 e- u+ V% K1 Y
  5. #include <sys/ioctl.h>- A" p- S$ U* L' @
  6. #include <stdio.h>8 X* w& }" y. K( d1 R8 k) I
  7. #include <string.h>
    2 b- n( ?5 t0 l) w3 g3 B& v
  8. # r8 T1 ^, A# ~. Y  A6 ~: B* m
  9. typedef struct {' a; e% b+ L2 G5 u& Y) X  w
  10.         unsigned int        e2prom_cmd_sub_addr;4 P: Q6 m( \3 m7 {. w/ X
  11.         unsigned int        sub_addr_count;1 ?" i# P; i3 P) a
  12.         unsigned char*        e2prom_cmd_data;
    5 ~+ Q; C, G' U0 [
  13.         unsigned int        data_count;
    & Y7 j1 p+ l( m( g5 |
  14. } e2prom_s_cmd;
      c( Z  z: b9 @9 y

  15. * I; |  T. d2 f' \, Z
  16. #define E2PROM_CMD_READ 1; J$ M2 w$ t" y
  17. #define E2PROM_CMD_WRITE 2
    : `8 B' U/ E0 F% q: h5 I: Q* Y5 j
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"+ L4 K2 o8 e1 h4 l# W: j7 G
  19. 9 k  H7 \0 b! m+ R
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    1 m: l8 S4 Q! v
  21. {
    9 L) W$ F; d7 D2 U# s
  22.         int fd, ret;* G$ C5 {) U/ U+ d4 b
  23.         e2prom_s_cmd arg;
    ) N! z6 `& e% o: |
  24.         unsigned char buf[0x18];
    + U( ~) E) D% d0 X; B% F- Y

  25. $ \! `" [# G" G
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" s, z0 }: M9 @$ c' A
  27.         if (fd  < 0) {' z  |+ B5 x9 y0 I! n
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' W) @1 B+ h/ N, ?8 _8 Y
  29.                 return -1;
    ) @/ Z2 E$ }- N- L3 z
  30.         }
    7 Q7 P. E- A$ f* D
  31.         arg.sub_addr_count      = 2;
    ) m& R1 M7 l8 G4 n
  32.         arg.data_count          = 0x18;
    1 o* i7 u3 G* a, b& r
  33.         arg.e2prom_cmd_sub_addr = 0x290;" K$ S7 A: N, e
  34.         arg.e2prom_cmd_data     = buf;
    2 x" Z4 [/ k" [3 S% P
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' I2 g# b9 q, O5 F5 s2 s9 m( Q
  36.         if (ret != 0) {, j( I  @# F6 q3 L) K$ \2 z* n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    / y3 }/ X. ]4 a. n
  38.                 return -1;% I# A9 s; O+ K2 L
  39.         }
    " Y0 k% t) C0 f3 g1 j
  40.         memcpy(mac, buf, 6);
    8 i% y3 m7 }; N4 O! W  t# v
  41.         memcpy(stbid, &buf[6], 18);
    8 k" V- {  z0 K
  42.         stbid[18] = '\0';
    : Q& i- C1 g; }: i* m  d

  43. 3 }0 v# s7 T; J7 u3 d6 M
  44.         return 0;. Z2 x+ Y' t+ |; r9 l' Y6 u
  45. }
    - ?& J# @  m1 m: R

  46. % A+ h: W4 R9 G7 v% g
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 q% v( G/ I2 Y3 ~
  48. {
    ' r% ]. j/ l# U8 _
  49.         int fd, ret;
    + N* m3 e& |6 h$ C  K4 d
  50.         e2prom_s_cmd arg;2 ~& }  x) V: p
  51.         unsigned char buf[0x18];
    ) d4 A; m% U; M- z
  52. $ z  f+ F+ ?  h; C; `/ l% p, G9 M
  53.         memcpy(buf, mac, 6);
    % j3 b$ f( q  A# l
  54.         memcpy(&buf[6], stbid, 18);: @9 z9 f  [) v7 k$ `1 j4 n, S  P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# f* A9 v" Z: z" F9 T# r; [
  56.         if (fd  < 0) {
    4 F; [' e3 o! P8 }+ u  l
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 T" S& g7 m+ Y1 `& b; a: z
  58.                 return -1;5 v; T( H' m/ R' p. c; K- x/ ^
  59.         }" s. V  W3 m' W& N9 l: h& T
  60.         arg.sub_addr_count      = 2;
    ! A  ~$ Z: x7 H, j  f
  61.         arg.data_count          = 0x18;
    : c, G: z0 A) D, k$ o( D; b# i; Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " Z9 I9 V, s$ U3 ]( I) n5 X+ Q
  63.         arg.e2prom_cmd_data     = buf;; |- o0 G* W) b4 H; C8 }  p) \/ O
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + Q" K9 l6 a( i- Q% Y
  65.         if (ret != 0) {: b9 e' i0 x: x5 s1 R3 n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 ]: h- R" T% H$ y: h# y
  67.                 return -1;1 Y9 j3 C% s( u, O3 }' X, f# @8 t
  68.         }! Z2 x, Y) L9 m2 g. z  t

  69. # ]3 U4 Z, x+ h. g6 |) P; X
  70.         return 0;
    . S; M8 q- e6 K) j4 x5 u2 {+ m- s
  71. }/ x5 P* r' c1 l
  72. ( w4 B+ ?- C3 f1 i: L3 `# a/ k3 U: T/ E" u
  73. int main()7 ?% O$ ~1 @. a  V. q. Q0 [$ z
  74. {4 _0 f* X9 J- [. C0 j1 y- F
  75.         char c;- g; u/ e( l( U( y8 r" u+ Q8 y
  76.         int i, macs[6];
    & r& g. A( E' R4 h6 \3 q& U
  77.         unsigned char mac[6];6 z7 |' J+ x( I* p$ O$ r4 V9 E
  78.         unsigned char stbid[256];; z. D8 q. ]3 _. n
  79. 1 Q& {: E4 R1 ]( a$ K9 N* K
  80.         if (readparam(mac, stbid) < 0)$ A  }, h$ N) ^( y7 U! _
  81.                 return 1;
    3 u9 r% O. }. t4 G* U

  82. 9 ^# O6 v3 K/ f9 s% G
  83.         printf("Current parameters: \n");6 O6 V; T3 B/ X9 d. L
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' k7 c! y3 B# @3 X  ^
  85.         printf("  STBID: %s\n", stbid);- O# S" O3 y, e. o- I
  86.        
    8 @+ |1 ]3 x9 p5 Q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");' V: s5 x; S8 w$ C
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 m: I! o. d: o% p
  89.                 printf("Input MAC error\n");3 Q0 P* ]& j1 J+ g1 g0 c5 Z
  90.                 return 1;
    8 B' i, M3 H2 E/ F9 B
  91.         }
    " ]1 E, Q1 D% x( _* b* i  e( ~
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 K* B5 J( M" F8 L
  93.         printf("\nPlease input new STBID: ");
    4 l. m% g% j; b, v( D! I3 V
  94.         scanf("%s", stbid);
    ; E* R- L5 F0 C  p+ X
  95.         if (strlen(stbid) != 18) {7 E0 Z% _8 G0 E2 Z9 D4 n6 Q& {! a
  96.                 printf("Invalid stbid\n");, ?9 u* z  C! x8 _. Z$ c$ \
  97.                 return 1;1 H+ x  d5 o, l4 c8 _8 d
  98.         }9 B$ K+ I; V* ?+ W$ e- f( m
  99.         printf("\nNew parameters: \n");
    + F% S; i; n: t; _: C; Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 B/ t3 ^: n( g: x3 B% i
  101.         printf("  STBID: %s\n", stbid);
    ' U% k! ~+ q) K6 k- ]4 S/ K6 o
  102. 6 R" [# K7 u8 b  |4 i
  103.         printf("\nDo you want to change paramemters? (y/N) ");2 @: s( k, \: M
  104.         for (;;) {
    % K& {( b5 {( s
  105.                 c = getchar();
    / I1 n) z7 ?' B* _+ |9 c
  106.                 if (c == 'y' || c == 'Y')
    1 m4 q2 ~# c2 Z! c
  107.                         break;
    7 P9 h& h) p% s; Y
  108.                 if (c == 'n' || c == 'N') {
    / _; E+ b% ^: r) Y
  109.                         printf("\nAborted.\n");* M+ [8 r1 M& m& i0 D  Z. C  p2 r
  110.                         return 1;3 w: V: _5 v# {( z( D' d' l, Y
  111.                 }
    9 d( ]* r" W. r: j' V+ Q
  112.         }
    6 B. A& H% j  i8 p* W
  113.         if (writeparam(mac, stbid) == 0)
    ) d4 p. D2 N4 J, g/ X
  114.                 printf("Parameters changed.\n");' R; a) ^& L7 v% G

  115.   `; n) E* ?; ?/ Z" }2 K
  116.         return 0;
    6 d9 F8 J: a  t5 _: `# r: I
  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 d1 x' A/ s4 u7 o9 d7 c9 o
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ I( P6 l) H. P% R
你用的编译命令行格式是什么?, t! o0 c/ Y/ x& V" p& ~6 O% q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部