查看: 16924|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 q4 m' f0 c+ J5 |
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 l. J* t& I. c+ e9 @$ f: Z* H
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; O- L7 r) n; n# o. ^+ |" \2 H
usage: himr <address> <value>. sample: himr 0x80040000 0x0
# a% @, D/ D$ y8 E- c# I1 y) A/ d1 L2 B1 O3 T9 `

3 {! S- C. S0 {$ e  q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 W( S9 a9 c  Q9 Y, C

7 S  d: H* {: g7 [( N补充内容 (2012-3-8 09:42):
+ D1 h( ]' n& _: y$ q2 {http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 J/ ^# a+ A2 C9 t) k1 V
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
1 P. I% Y$ S3 @2 ~( S+ C
7 D) T: N) f9 D6 Qhimr <address> <value>. sample: himr 0x80040000 0x0; Z; ^6 P/ z( a2 `
  o2 l9 e& T8 U8 g( y6 V
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" ]! G% Z! K8 @" x0 n* t
himr 0x80040000 0x007 g7 ~  }3 L4 @% }! y
himr 0x80040001 0x11( w2 _; N) p. h) O  e0 L
himr 0x80040002 0x220 l8 @1 ~, S" x6 K7 H% {
himr 0x80040003 0x33) f2 `$ x0 O4 ^& @4 f
himr 0x80040004 0x44
* I- Y! z# }# O$ Z" |% N, o2 @himr 0x80040005 0x55
+ a, F5 e! ~2 R* r( `; Y
8 Y- }2 g- Q! I; S! QSN也是类似。
" c6 L, T# G$ Q3 f, G. F& Q4 ~  s
现在主要是,谁告诉我们MAC和SN的地址?7 n6 c9 p9 T' i$ e; I, Q$ ]; `
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
: _' y( o/ r$ {/ ]% S一直想找到运程修改MAC和SN的办法,苦于无解啊
( w$ N' E4 @: b) X6 S, q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
! e8 {# D- |; R
0 M1 s# n. [3 {) T5 P修改的代码早有了。到今天不会编译。0 u9 a% F1 [' Q+ f5 a+ S& e, n
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 `+ o0 {* s4 ?' e* l3 H
  2. #include <malloc.h>
    8 q9 v% S$ J! f' h- b
  3. #include <sys/types.h>3 \- F5 Z# U' g) Q
  4. #include <sys/stat.h>* A/ e9 I2 f9 A6 |" G! X
  5. #include <sys/ioctl.h>
    . }- y% B, e& T3 X( A, F
  6. #include <stdio.h>7 i: `) b$ V# d6 u
  7. #include <string.h>4 @* E% l8 i: c) o% r- _. [
  8. # b, `' C, ^* r
  9. typedef struct {
    " q+ T# W& J0 [1 g4 G  a
  10.         unsigned int        e2prom_cmd_sub_addr;1 T% [; z- {' D6 G' i9 l
  11.         unsigned int        sub_addr_count;3 [  }& E* ~. V) g: P. m/ K
  12.         unsigned char*        e2prom_cmd_data;
    0 I2 t& a# F5 d0 K
  13.         unsigned int        data_count;
    / Z( ~# O" E/ ]3 }/ ~6 k" A0 B/ u
  14. } e2prom_s_cmd;
      x% \9 q8 G7 ?/ ~4 @

  15. . Q0 S; Y% K0 X3 }+ a. _
  16. #define E2PROM_CMD_READ 1. e* V" w/ D1 @7 h* c
  17. #define E2PROM_CMD_WRITE 2: A( F, r3 ]8 R+ c/ f2 ]
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . V% B) @9 }, z7 `, l1 S
  19. ! ~* F- `1 n( `5 k5 Y* j4 [5 t
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" S3 A' x, N  Y' b7 q8 y, V3 m$ V' a
  21. {
    . n3 Y9 B6 {# I. W8 f( @
  22.         int fd, ret;( F% q; v- X# i# P7 d
  23.         e2prom_s_cmd arg;
    5 T+ U" ?. d- H6 ?, ^' E  e
  24.         unsigned char buf[0x18];
    ; ]% _( x' H, Z

  25. ; C3 n& s& @' {
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 e; w6 h' T( @
  27.         if (fd  < 0) {
    ; q! S) l4 c# t# \7 f( l8 }' n9 n
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 c% P: a# ~0 z+ w( K
  29.                 return -1;
    4 v/ A& G- [- p0 E3 E1 X
  30.         }8 G+ r" |& h: r( E0 l; O' |7 s
  31.         arg.sub_addr_count      = 2;" L, g2 d2 `% h8 ^; K
  32.         arg.data_count          = 0x18;: Q/ ?3 [8 p$ H7 m( ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;: l$ w8 g6 ]! U3 ^8 p% m9 N1 ~
  34.         arg.e2prom_cmd_data     = buf;, F4 ^7 n8 Y1 J# v7 l% i/ Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);5 b5 @7 }' [0 Q# n2 b
  36.         if (ret != 0) {
    $ _+ }4 T% U# E, G3 H8 T
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, o1 c" w. ^. b) n! g3 s, J* g
  38.                 return -1;) v' y! L3 f/ T2 {. f! B
  39.         }! B* X! [. W# |; N
  40.         memcpy(mac, buf, 6);
    6 R) Y$ v3 b' P- C* |
  41.         memcpy(stbid, &buf[6], 18);/ S$ j. {9 ?/ f* @
  42.         stbid[18] = '\0';! Y2 q3 |$ d  e! {$ e

  43. ( h, ~! u( f" ^
  44.         return 0;
    ; |! o4 B# D5 i! W2 p
  45. }4 s. @) E7 n; b
  46. ' K1 ~( |2 p5 ?* `9 \
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , G% I3 P2 h+ _0 Z% D* |' L) v) ?
  48. {
    ! ]' A/ f: g" ~3 c! z7 A
  49.         int fd, ret;
    . ^$ Q* P  f: f( Q8 }$ E2 e+ I
  50.         e2prom_s_cmd arg;7 q; I. _5 ]  H4 L& p2 K  b
  51.         unsigned char buf[0x18];
    + c" x  j& o1 e" w+ m9 c. _

  52. ) F2 D4 z# _; X4 [% ]3 U9 J$ U6 y0 F
  53.         memcpy(buf, mac, 6);8 b& n7 Q$ Z+ D; j/ G
  54.         memcpy(&buf[6], stbid, 18);* B5 E' z& u, Z" T+ O# P  |7 l6 E
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; H$ c3 z1 R" h* B
  56.         if (fd  < 0) {5 h8 |7 E- i/ M/ C' Y3 B$ D
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);' D. a! x  W& T! x
  58.                 return -1;' m, Y+ t, @8 K/ N7 S3 D8 a
  59.         }: P( V8 a6 {+ Q! C4 ^
  60.         arg.sub_addr_count      = 2;1 V" p6 v3 O1 ?- v
  61.         arg.data_count          = 0x18;) L- {( s# W. q2 e( O1 Y. t' U
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 x2 S! a0 }& m' ?# I5 v
  63.         arg.e2prom_cmd_data     = buf;+ R6 E& h4 H  n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 u) _: I$ Z9 G6 \! q; H( I
  65.         if (ret != 0) {
    ) e- \* E8 o' R% Q$ [6 [; m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);" x* G# R" p) i$ O
  67.                 return -1;& d3 `$ `. g/ E+ Z2 D, y$ @: Y
  68.         }
    + D+ g, m% f% f2 H) s/ x

  69. 4 e+ \# R" x- R# ?9 r
  70.         return 0;4 F8 w8 T* |& H! V
  71. }
    % p" T3 G. W, E2 S: P; s
  72.   t7 {: G# ^0 E7 F
  73. int main(), e# U6 r8 J6 U5 A& l) }
  74. {% J% `4 g' ^" N) f2 ^
  75.         char c;( D; k" x7 x8 W
  76.         int i, macs[6];
    + C1 D' ], v9 M$ W; k# f  k( L" ~
  77.         unsigned char mac[6];2 S% J; n1 S# x$ ]/ o! q2 v
  78.         unsigned char stbid[256];
    ; e' `; r. W) Y; W6 E  u3 a* x+ T

  79. . e% @7 Y3 l' t# I5 K$ ^
  80.         if (readparam(mac, stbid) < 0); M; I, ]3 r1 |8 C6 K3 H
  81.                 return 1;9 j7 j1 U* D+ m7 C3 V, s
  82. 1 w0 l4 }* Q8 z
  83.         printf("Current parameters: \n");) ^9 a, F2 ^& Z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! r" [1 C' a+ T
  85.         printf("  STBID: %s\n", stbid);
    ; a: g) R+ X( X; {$ R
  86.         0 T3 M& O5 n. n8 u
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 w. I. E1 K3 W3 G" L* o
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
      y( o1 `1 S+ I% ?- [, j. H
  89.                 printf("Input MAC error\n");
    - b# i! [6 e( k9 n
  90.                 return 1;
    ' G. i) x: J1 H$ t2 ~4 R  J
  91.         }5 V" |$ |+ Y; [4 `
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- N8 \, T1 s- X' q1 g6 g  F
  93.         printf("\nPlease input new STBID: ");
    ; y. v' E. D6 M8 q2 Y, ]% s1 [
  94.         scanf("%s", stbid);# h9 c8 u5 H- b, a8 S, M* V/ ^
  95.         if (strlen(stbid) != 18) {1 v: s  p0 H! @. P) v" M
  96.                 printf("Invalid stbid\n");4 a+ u% h' j2 ~' B4 w, X
  97.                 return 1;
    / d- \0 }8 E7 |4 P7 ^
  98.         }7 U4 O2 B! B. P9 {' b( `( M
  99.         printf("\nNew parameters: \n");
    / L& S* c2 D" C% y$ z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 g, l6 O2 z1 z; S% W$ F
  101.         printf("  STBID: %s\n", stbid);
    ' T1 L  e) E" w2 P
  102. . j) S3 i2 N; w8 U  T$ o5 [, X
  103.         printf("\nDo you want to change paramemters? (y/N) ");$ q' ]' P# C/ E1 ]
  104.         for (;;) {
    , [. O; N/ B& S6 o/ E% y1 G  F
  105.                 c = getchar();
    6 M  `1 p  `' D
  106.                 if (c == 'y' || c == 'Y')
    9 E% v2 O7 W2 F: x! ^- n: z; [7 M
  107.                         break;
    8 C6 O2 \7 U* ]" N1 R
  108.                 if (c == 'n' || c == 'N') {
    - L+ W% j8 k% ^5 Y/ p
  109.                         printf("\nAborted.\n");; L6 o% I% j7 |. u1 K
  110.                         return 1;
    4 I) [+ H4 R7 s# x
  111.                 }
    / u' V4 g1 d9 _. `- L4 @
  112.         }/ n3 g! r, b* G4 ?" K" @
  113.         if (writeparam(mac, stbid) == 0)
    5 K* ^* m6 `6 N( `
  114.                 printf("Parameters changed.\n");) b3 e) M3 ]; T' M2 I" W  t
  115. 9 R2 A* s: ^* w: f- x# _5 b$ g0 P' |
  116.         return 0;3 @+ _- S- k1 f3 w2 Q2 E
  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 3 [7 W' Z* x) C8 Y, G+ X4 l
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 N$ q) X, J: {你用的编译命令行格式是什么?; n' T$ g- X: c) M4 I2 ^( J1 w
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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