查看: 17141|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ' b) r0 i9 m) E9 ?( o4 a
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / ~' q0 Y# F" Z) [( m6 z! K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 O* c& F# ]3 R+ c1 F
usage: himr <address> <value>. sample: himr 0x80040000 0x0
% ]' e& A0 \0 r7 @0 I; n* I& x7 p1 W2 o# l% H# y# Y) Z" R) z

! Q4 S9 `. S9 U7 F3 m( y% p不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. L5 J4 {1 d2 w( g' V

: S6 L5 j. l, z8 c3 X5 T补充内容 (2012-3-8 09:42):
( e, k" X0 W$ Q% R% ahttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- B3 w7 n' O2 K, v4 \
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。$ N* y5 x) N+ h/ D. v

& U$ |, @6 O1 M+ z. Ghimr <address> <value>. sample: himr 0x80040000 0x0/ Q. n1 A8 H' _" ?8 ^$ i- d
) g6 L1 G( D% A" ]' E6 X$ l1 z
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。3 z; l5 n" K0 l7 t5 L! [  T
himr 0x80040000 0x00
( C. [% g0 l: z3 m/ q! v1 [8 t1 Ohimr 0x80040001 0x11
2 ^" k+ z3 ]% D7 Lhimr 0x80040002 0x224 ?4 T9 s8 _, N7 Q) l
himr 0x80040003 0x33$ y+ ^0 B) y$ X* T- l, d# n
himr 0x80040004 0x44
  p, c) }6 u1 U7 _/ O3 c4 W- k+ zhimr 0x80040005 0x55
: F" Y# ?7 s. K+ p" w! d0 g4 s  m" Y" @
SN也是类似。
0 y- ?. B- M+ a' p& J. Z. C# O, u+ a8 Y1 J0 v7 I
现在主要是,谁告诉我们MAC和SN的地址?
3 w! T( _* t+ F1 {0 E
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 J9 X5 Z. y" c% `7 k  [; P
一直想找到运程修改MAC和SN的办法,苦于无解啊

1 b) a2 `0 Q& S# z源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 d) M7 R  H( E1 O$ N& `( ]4 h8 C! G( Z/ F; Z" Y
修改的代码早有了。到今天不会编译。
8 ]: j% p3 s4 j. j4 X* y/ D需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 _( U8 U1 F9 e1 V: f: \* [
  2. #include <malloc.h>
    + X! B# b, @  B0 S* W
  3. #include <sys/types.h>
    ) k+ R. q" S% z  M# R
  4. #include <sys/stat.h>' v8 c1 X# ]5 P% [& S& A  s
  5. #include <sys/ioctl.h>; c8 `5 E6 W& Y% z5 o* `% X; S5 a
  6. #include <stdio.h>$ `& i8 H- ~( g( m) z  o
  7. #include <string.h>
    & p$ z( a7 d% b6 ]

  8. 4 f9 Z2 F$ b9 @; p
  9. typedef struct {
    ) R- `# v1 S6 [- \: ]% q) g2 [
  10.         unsigned int        e2prom_cmd_sub_addr;8 r+ {$ ^+ l! \6 U( \  y; _
  11.         unsigned int        sub_addr_count;
    ' G4 e  g0 Z: h4 O6 Y6 S
  12.         unsigned char*        e2prom_cmd_data;$ ^8 [1 K% z) N
  13.         unsigned int        data_count;1 }! [7 k; o+ q5 R: O3 e
  14. } e2prom_s_cmd;
    $ l2 `! b6 ^! `$ @& `
  15. - U2 {. F& Y' b5 m
  16. #define E2PROM_CMD_READ 1
    & h9 {4 |# M9 R, U2 k$ P* r, a
  17. #define E2PROM_CMD_WRITE 2$ y; L* a6 G8 y, Y* x: S) S6 v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; q5 i: Y: S! Q% ?

  19. % v+ b/ Z$ D- C/ P. A, r* O
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    * d6 E* b) s2 c+ c( k+ ^+ M; A4 r
  21. {2 ~8 S; X9 S) y; m0 V6 M/ M! h; n8 G# Y
  22.         int fd, ret;/ Q# ]9 c' T7 J" Y( `# j
  23.         e2prom_s_cmd arg;8 ?) R8 A" M  [  @& S& k4 g
  24.         unsigned char buf[0x18];
    2 v* x3 E! q) y# b. Z. c
  25.   F9 r( Q8 R  Y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' z3 c1 W9 g$ p7 R
  27.         if (fd  < 0) {
    9 r3 w, ^# l7 X: w* D9 v& P4 R) e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 t0 ?" I& m5 R5 `- E1 h
  29.                 return -1;3 }; N7 q, G; {
  30.         }- I  d8 b) t' Y9 Z6 ?. A
  31.         arg.sub_addr_count      = 2;1 s/ J' x7 k  ?% Z/ |
  32.         arg.data_count          = 0x18;& t; g' d: |% _# b: \% q1 [
  33.         arg.e2prom_cmd_sub_addr = 0x290;- k3 d- F+ o# F6 A+ Z7 ?) v
  34.         arg.e2prom_cmd_data     = buf;
    - h1 _: Y5 p% [0 M% n; [+ s
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# t7 y$ {* n; W$ g: X8 C( j0 B
  36.         if (ret != 0) {. z  c( t% t& K+ E1 `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);9 T! `& g* m7 ?. j
  38.                 return -1;! ~/ @0 s3 v+ |7 u( F' L5 n
  39.         }5 ^# Z2 v2 \( W2 E' ^1 q1 A& P6 y
  40.         memcpy(mac, buf, 6);1 H+ I; f8 y( h$ A+ C( u
  41.         memcpy(stbid, &buf[6], 18);
    - t& v4 U4 Q% K2 N% r9 z
  42.         stbid[18] = '\0';
    3 _! R& ?; O3 C  g% n1 H) k
  43. 3 Q1 d1 l, ?) _( S
  44.         return 0;
    ) ~( z6 V0 \) M
  45. }
    " c. ]1 G1 p6 l, j! k6 K

  46. : q7 A( K, J3 h( n' Q$ W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
      s' q. Q9 ]  B- ?
  48. {
    : I7 Q" G' v* y) {! Q9 B
  49.         int fd, ret;
    + a1 E4 C8 q6 h$ u
  50.         e2prom_s_cmd arg;
    + z! J# O$ Q9 j5 r
  51.         unsigned char buf[0x18];* o+ u/ j# h' A# _# `' X
  52. / D3 |7 I" H+ a5 R% D; E
  53.         memcpy(buf, mac, 6);$ h1 H" X, j2 d- Q
  54.         memcpy(&buf[6], stbid, 18);5 q4 r' @; a4 `* c. m, g2 m7 `' {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    & f$ a5 T, j1 y' {7 ?/ x) ~5 X
  56.         if (fd  < 0) {
    $ ~6 b. K" G5 j, E1 ^
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 q- r) Z8 ]1 N! v6 q% p
  58.                 return -1;# k2 c9 s4 N6 P) d# j& p4 ~7 g
  59.         }
    8 }; g5 l. x" d: d1 O+ g
  60.         arg.sub_addr_count      = 2;& z) M' r  l* J+ j* h/ D7 p
  61.         arg.data_count          = 0x18;* W# e* |7 |6 W% d+ P" {$ g6 m
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 S/ l+ J* R( r7 _) {
  63.         arg.e2prom_cmd_data     = buf;9 D; k1 X3 {- K- ^# ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 j2 a) O$ ~+ a! h7 `6 |
  65.         if (ret != 0) {
    6 M/ t$ y! P* a1 F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# L8 G/ v: T9 o7 \( ?2 {+ f
  67.                 return -1;
    $ r0 s# |- N* X" `# L" @+ [% R
  68.         }7 Z" P8 `) u& P9 Y. n7 ?" T

  69. $ N1 y' K/ q5 k! b
  70.         return 0;2 K/ U" ?8 ^) l! ^+ x9 W; k2 b
  71. }0 j+ a1 X1 |$ s+ ~
  72. 0 _1 x, \2 P& q5 h' I, M7 B2 y
  73. int main()$ Z! Z; r$ o" D# x0 H# G
  74. {7 V( r0 M) \( }$ f$ O
  75.         char c;
      z$ ?$ ^4 }# E. N+ q% `
  76.         int i, macs[6];
    ! e8 K, M5 i- ?- `" W$ k7 L
  77.         unsigned char mac[6];' F5 b: ~/ p& p0 C( c
  78.         unsigned char stbid[256];
    5 g+ M7 z6 ^' f1 I3 j

  79. ) l/ Y. t: _! w6 y  X- w" i7 B5 M
  80.         if (readparam(mac, stbid) < 0)
    * w6 b+ V& B7 P. Z
  81.                 return 1;" x. F, j! ?' j
  82. # D! ~  `1 D5 g! B, N& p. x$ K
  83.         printf("Current parameters: \n");3 x# J( P2 o/ b" j+ E; f8 w
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & X3 J6 y3 w) l+ w7 ]
  85.         printf("  STBID: %s\n", stbid);. I6 _2 J% n. J6 e
  86.         5 c: v+ C! ?- w
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ) x" X# G3 z; ^6 S/ |' e& l6 b" }
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ S+ e- Q2 p0 W4 u% t
  89.                 printf("Input MAC error\n");5 I5 |$ }2 L2 s* c! p+ O! l
  90.                 return 1;
    " a- S% B1 [4 ^; k" d! `4 W9 O
  91.         }; X) \8 n: y7 |
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 Z! ]% L$ {, ]8 I' k8 \
  93.         printf("\nPlease input new STBID: ");8 J) D6 ~0 X; M( n' R8 C5 ?: ^. f
  94.         scanf("%s", stbid);
    & F; ^1 N% P& ^, q& A
  95.         if (strlen(stbid) != 18) {
    0 ~% P- ]# W1 |
  96.                 printf("Invalid stbid\n");$ x# o, U0 c, j, y4 O- I& s
  97.                 return 1;
    3 r/ e; k) f8 ]" L& i* x
  98.         }
    : {6 h4 d1 Q" E4 L) u
  99.         printf("\nNew parameters: \n");1 O$ t6 ]+ {  J4 y" `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 k# ~2 _5 A7 ^, l2 y
  101.         printf("  STBID: %s\n", stbid);
    4 @7 _9 s2 A! c0 l

  102. % c, A5 J! v" F. D
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    5 H9 @; ^. w: E% \- j8 k
  104.         for (;;) {' Q7 G) j1 x+ l( i' Q. ]
  105.                 c = getchar();
    5 {) E. r9 s. k4 ?, p2 _! R2 `7 z
  106.                 if (c == 'y' || c == 'Y')
    8 t% b+ y9 A/ b5 P  R
  107.                         break;
    3 }# N9 h  X2 i$ Q/ `
  108.                 if (c == 'n' || c == 'N') {
    & A5 t# n, Y6 i9 D0 q3 j
  109.                         printf("\nAborted.\n");+ m4 Q- t7 B$ b0 j/ Y% A* Z
  110.                         return 1;' |9 i2 |1 P# y2 G( t2 ~$ r1 n
  111.                 }
    0 f% Z6 c! {: \) i
  112.         }5 g! e6 @) h. o2 c9 q. B+ \
  113.         if (writeparam(mac, stbid) == 0) * ]0 A$ S, x( y4 o, j: E- i, l# y' C
  114.                 printf("Parameters changed.\n");2 L0 F# x% X( w3 \4 q" c
  115. 2 U3 X! o, ?- g# K3 e( d
  116.         return 0;
    . }9 B9 a8 _) i8 X4 h1 j1 h
  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 . z7 k- Q9 }' x7 X- n
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( c. n5 G' n: p/ J) F& b, z1 z  P% [* g你用的编译命令行格式是什么?
2 o8 N9 n" ~! D& C
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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