查看: 16904|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ( ?- g1 o# X0 L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 G' v' V2 |3 n3 z$ e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:7 B/ F( o8 t+ ~' {
usage: himr <address> <value>. sample: himr 0x80040000 0x0- c" b; ], u  q. x2 Z

9 [: [- q* Q( P* E- W2 }
  J+ c" L4 c2 q: K$ k1 f5 L. ^不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 _! i% A6 j) |* H5 `3 n; \& N8 d5 ?: _2 Q# ~$ p6 t6 }
补充内容 (2012-3-8 09:42):
* S! k$ o3 @! d0 Chttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ M9 H- f) I  J# r3 w5 N9 L! Z& H. {
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。$ Q+ r5 b& X# S2 F
) a8 U! e( \, a. _( K/ g- [
himr <address> <value>. sample: himr 0x80040000 0x01 I4 q- @4 D7 l4 O
8 a* {- m# p5 F1 \4 x
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 X. m3 F7 p5 R' Q9 ^himr 0x80040000 0x00( {7 g2 \6 B" U6 L( d
himr 0x80040001 0x11+ \- `: Q3 q8 B+ F! H+ y, T" u, b. k5 r& |5 I
himr 0x80040002 0x22
, E  m: ?! k8 l. nhimr 0x80040003 0x33
2 n3 y$ X! X7 S! C% h! l) whimr 0x80040004 0x44! C3 x( J/ U+ ~1 n5 L/ O- L0 X
himr 0x80040005 0x55
' \1 R2 t; m* ?5 V2 v) u+ ]6 M7 M6 t4 j5 W4 H* U- }  o- S
SN也是类似。% V' e* @4 @- a2 u
# L* l* D/ u1 q" a% p
现在主要是,谁告诉我们MAC和SN的地址?
3 }$ H- }5 b/ [" D' X$ M& R
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 + _2 j; u  W, R$ \+ y) o
一直想找到运程修改MAC和SN的办法,苦于无解啊
, `4 s. v! L+ `5 `
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 o8 b9 c( \& b: E; K' g7 d0 ~9 I/ J: F( {
修改的代码早有了。到今天不会编译。
7 f* S2 k5 ?' p需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>, c4 O/ q; x1 o8 A
  2. #include <malloc.h>/ o( {. K+ W4 z1 I5 [  X
  3. #include <sys/types.h>9 t# N, h  o. h0 O) s$ {
  4. #include <sys/stat.h>: O7 {1 V* K  f5 ]
  5. #include <sys/ioctl.h>8 m, K) X5 I2 n& f* ~. R
  6. #include <stdio.h>- L( j9 s: G/ S2 p. h
  7. #include <string.h>
    % {. K. x2 n. l$ h8 h
  8. + P) Q8 D0 Y2 m* c; ^9 v
  9. typedef struct {
    / b! G) ]: ~1 k0 S# ~" ]
  10.         unsigned int        e2prom_cmd_sub_addr;
    5 d9 I$ m& ^3 x+ W( O
  11.         unsigned int        sub_addr_count;
    3 ~% H3 f! }2 Y9 q2 ^) E7 b
  12.         unsigned char*        e2prom_cmd_data;
    $ c8 z( O$ C' M
  13.         unsigned int        data_count;
    6 R0 C6 P/ I$ y0 n9 v* c' J
  14. } e2prom_s_cmd;
    3 s4 x5 t; P0 C3 y' d4 o* y; A# t

  15. . |$ V3 O- o' e2 N0 G0 S' L2 I
  16. #define E2PROM_CMD_READ 1
    $ k4 h7 x9 d6 ^- c4 }1 X
  17. #define E2PROM_CMD_WRITE 28 O) F1 G" q1 a4 m7 c6 \; F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 m2 E6 Z4 W% y. B' r2 X

  19. ; n% d% O6 q5 c: h" }3 Z9 I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 E5 X  U5 b# P7 l5 U
  21. {( C' W" ^% _3 ?' ]4 ~+ k
  22.         int fd, ret;" {5 |: T* T# t4 G
  23.         e2prom_s_cmd arg;4 R9 m6 F( G% A# z, O/ W9 l
  24.         unsigned char buf[0x18];
    4 \& N8 p) b9 `  }& T/ O8 o
  25. 6 y) p; U+ [1 B+ a1 S6 D
  26.         fd = open(E2PROM_DEVICE, O_RDWR);) {. v) U( ~% z. }2 u
  27.         if (fd  < 0) {/ x5 B! @* h) \$ @) H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 `2 v0 x5 G; ^  P
  29.                 return -1;2 z( C% s# D8 a1 f
  30.         }5 M1 o" Q$ b  y, w- V$ R
  31.         arg.sub_addr_count      = 2;- i7 W- |9 Z$ C- p
  32.         arg.data_count          = 0x18;
    9 r' y: h) b' B7 E' X
  33.         arg.e2prom_cmd_sub_addr = 0x290;( W2 c7 b. J2 @$ z
  34.         arg.e2prom_cmd_data     = buf;3 D/ O8 _4 C1 o; N! z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 Q0 z, e5 ^# q. _: R# f
  36.         if (ret != 0) {% T0 ]+ E$ [) f0 |
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ' v; Q7 m: J& A* y2 s
  38.                 return -1;
    9 {' L0 X: o; Z) X& h9 b% \" E
  39.         }
    8 `3 g2 r  x& e2 t3 Y$ Z! Q
  40.         memcpy(mac, buf, 6);+ h1 H  X' z- y2 v0 J9 U( `8 l
  41.         memcpy(stbid, &buf[6], 18);& J4 k4 i4 x, q; v1 _
  42.         stbid[18] = '\0';
    2 L$ `& j1 J6 M1 |" k3 z
  43. ' R7 l$ }9 C5 Z" V- w% O) u/ X2 S
  44.         return 0;
    ; W+ w& n6 I  i* K
  45. }8 k* \; R; b: l5 z* w- y

  46. 3 i# }/ q$ @. W7 e4 W# u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 f) c* `4 ~7 S: w) T. D! i3 q8 I
  48. {% o% q- c1 {& p0 h. o% Q0 j' z0 H
  49.         int fd, ret;2 h1 l" I& n' d; f1 i
  50.         e2prom_s_cmd arg;
    2 s2 t! R: U  ]7 A5 Y2 O
  51.         unsigned char buf[0x18];. ^: J* r& b2 o

  52.   G( _9 @7 j  p) V$ q
  53.         memcpy(buf, mac, 6);# Q( O2 L* H/ \* R- E4 c. }; ?: K
  54.         memcpy(&buf[6], stbid, 18);
    3 ?3 b4 ^$ {! ^. X1 c' L, B" Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);+ N$ M7 V( z3 y2 [
  56.         if (fd  < 0) {: p8 m8 c4 G* J5 T% h) r2 h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & l; C8 \+ [2 V3 g
  58.                 return -1;
    % V; m' q3 e( F% ]- o- r+ ~! J! P4 ?
  59.         }
    ' i6 Z1 q+ {5 e9 P
  60.         arg.sub_addr_count      = 2;4 I! r7 l: H* M( J1 H) o+ |' [; v8 H
  61.         arg.data_count          = 0x18;
    % w" G& c( d: t  b/ v/ L( H$ u; `+ E
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : a  V& c" L+ U! h2 A7 z. ~% \3 p2 E
  63.         arg.e2prom_cmd_data     = buf;" A! t. d; ~# j$ g6 M( m3 k7 [7 w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: s/ B: H9 Y, s. Q* U& R/ v, G
  65.         if (ret != 0) {
    0 A) d# p+ k$ @& T3 W& s; `$ B
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 z$ f: j) Z( \" V/ @, O
  67.                 return -1;
    " W: |: N& ]% G, \) W. o" i
  68.         }% U6 f9 L7 G; ^& J! B' J7 W  C
  69. . W8 g+ U1 I6 z1 G4 F1 E1 z% H' E- M
  70.         return 0;0 Y2 R! D( j- L2 v  S( x
  71. }
    ) s; i! s6 D, V& U% L& ~* h

  72. + a; G2 Z6 x8 L" @& W) K2 l
  73. int main()
    9 J9 n+ A& J! N$ U- e' |
  74. {4 e, C+ g$ x, x* v7 I/ |
  75.         char c;
    3 A: [! R+ W$ |. ?0 k7 _8 B
  76.         int i, macs[6];0 H% S$ r9 K3 v
  77.         unsigned char mac[6];& ]& o5 f% \% V& }. {& K
  78.         unsigned char stbid[256];
    9 y8 g* y2 B) R

  79. 5 H6 ]+ @; E* q: O
  80.         if (readparam(mac, stbid) < 0)& `0 Q# n& |+ v& [* R( e8 g, a% L
  81.                 return 1;
    # L8 h3 d, d: T

  82. 5 E( u8 |. P4 S2 W5 w$ U$ ]4 z
  83.         printf("Current parameters: \n");
    . F! l/ G5 h4 x. a  F. C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: m0 ^3 t1 N5 g6 U0 _
  85.         printf("  STBID: %s\n", stbid);2 [4 R* v- N8 d$ M7 H' h: m: @3 K
  86.         3 U+ P( \; |% P) ^7 J+ \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    9 _# h1 |! M" m+ ?) W$ ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 L4 U0 C1 E6 Y% H4 Q
  89.                 printf("Input MAC error\n");
    # Q, V8 h6 l/ y+ _
  90.                 return 1;
    7 ]+ N' t0 d2 Y- |, A" O
  91.         }
    0 k: }( @& ^* o3 v7 z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];. B7 x- \- i% I  k2 E
  93.         printf("\nPlease input new STBID: ");. w9 Z# l5 a: s3 T9 P2 R
  94.         scanf("%s", stbid);4 t: `- ]" ^) i) h9 e+ C+ d3 l' O
  95.         if (strlen(stbid) != 18) {; l7 y& h* V5 z5 n3 D0 J$ }" I
  96.                 printf("Invalid stbid\n");* n4 e& {! M" J* z) N# b, X
  97.                 return 1;
    - v/ [! _+ K* a7 @  O
  98.         }
    4 l& |8 |; J" X
  99.         printf("\nNew parameters: \n");& A5 S* P. |0 m$ l5 n
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / o6 |: K0 D, ~! w: Z: v
  101.         printf("  STBID: %s\n", stbid);
    ! C- N. o6 q2 N- L
  102. - }, P% ^  j% e5 l1 n
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 f* m/ s- S9 C9 J  k0 ~) q
  104.         for (;;) {5 t# c, A9 p' P) k9 u& J- M
  105.                 c = getchar();- A$ K; B; g, L# y* s. L8 y$ j
  106.                 if (c == 'y' || c == 'Y')2 m% w& T( ~, g. i
  107.                         break;
      n. I' T" I. M( C+ ^
  108.                 if (c == 'n' || c == 'N') {1 J1 T/ f, g( ~2 q; ~% \
  109.                         printf("\nAborted.\n");
    ( w! \( G1 Y2 X% f! K( y
  110.                         return 1;
    2 B$ q! M4 @# {
  111.                 }
    0 N: z! O/ e% R* V- \
  112.         }* W; z3 Y; c" c6 h( t: s; L5 x
  113.         if (writeparam(mac, stbid) == 0)
    " w) f( J: f9 k
  114.                 printf("Parameters changed.\n");
    0 W5 k* F& K, F& s9 f* K9 A

  115. 2 ^1 E& i: A& Z9 c  ?6 x
  116.         return 0;! ~7 Z+ K& o5 ^3 ]/ F( G
  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 e+ s/ ^8 X% @+ _- y6 y
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
: q2 r8 D: ?9 v* ^# m, Z
你用的编译命令行格式是什么?/ @8 L& `: r/ h0 H- p) C7 g# s+ ^1 `% I
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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