查看: 17163|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr, x# V2 {  q& C2 j: L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % X4 \* X' a* B3 q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
7 @2 R) _- V" B3 G# U: Uusage: himr <address> <value>. sample: himr 0x80040000 0x0
# P, j$ o, t& ~' F0 `8 r- m2 N* H( _5 J- @" x
# \" M/ Z. o+ i2 S/ r
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
; A: ?. B# j5 m- B
5 Q: N7 T+ {7 M! o$ k' w补充内容 (2012-3-8 09:42):
& o9 p4 _: ?: C- m5 hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, `+ H2 A# {& \! f
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
* C1 h0 w( h8 K  c1 p
8 m) d6 Z+ P; C2 Q3 h6 J  y5 Ehimr <address> <value>. sample: himr 0x80040000 0x0
- i/ p, `) v- F9 h- }9 }4 J& W, k7 g) J' E3 y0 H" d( V
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  I# Z2 \6 p* d, u
himr 0x80040000 0x00; F" k2 n, ?/ E9 m: F+ t+ H. x
himr 0x80040001 0x11
4 i! T3 _: W, O; bhimr 0x80040002 0x22
; R4 j* J5 Y: B$ E- w* m1 nhimr 0x80040003 0x33# R1 u; n+ l/ o# W  G
himr 0x80040004 0x44% R0 G  p0 g) J4 B0 L6 |
himr 0x80040005 0x55
, U) O1 d4 o9 u5 r6 M5 J8 ^& X1 M6 x1 N
SN也是类似。
+ K/ j9 k) Y- I' m5 i
; Y/ Y( U3 S+ I6 N现在主要是,谁告诉我们MAC和SN的地址?3 a2 b+ q8 I+ ]+ T. C9 t5 E. ]5 t
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
6 `1 x' a! N4 _6 E一直想找到运程修改MAC和SN的办法,苦于无解啊
8 S9 n5 g  v( R2 b1 d5 ]& f
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 # C: x5 ^" ~% x" ?2 v
# F: m" k( o$ o/ E) K
修改的代码早有了。到今天不会编译。
! S+ B4 d0 ^9 X" \" K9 T( b3 T需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    : N( u: z4 N2 C1 D  `
  2. #include <malloc.h>9 @+ {" o) V* i5 w- r# f. y; M
  3. #include <sys/types.h>! U: m! `, B6 V  D! Y  m! I8 s
  4. #include <sys/stat.h>* Y& V# e# T# L
  5. #include <sys/ioctl.h>
    2 n- j7 g2 Q: n
  6. #include <stdio.h>7 F4 }0 g! C" t! T2 x5 t
  7. #include <string.h>5 x& b) o3 e' p* A

  8. * r+ V/ R) ~0 X' R, }2 N. }) e, [
  9. typedef struct {* P3 h" v# z- ~, U  C- n( w7 @
  10.         unsigned int        e2prom_cmd_sub_addr;4 b6 ?; }4 |* f2 J1 l4 S
  11.         unsigned int        sub_addr_count;+ d( z. u% B4 w. _
  12.         unsigned char*        e2prom_cmd_data;0 z& B6 H- M5 c0 \# m2 E
  13.         unsigned int        data_count;
    . X6 |$ r9 ^$ S) `: D' R  a) m0 }
  14. } e2prom_s_cmd;! Q2 o7 U, H  f( n

  15. & }2 ^6 l' L$ Z2 u2 Y4 D
  16. #define E2PROM_CMD_READ 1
    7 G5 `/ W. q; j: _; J( F2 k& S3 x
  17. #define E2PROM_CMD_WRITE 2
    ( z  q. h; ^+ U# I: ^# M
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"+ q' R: L0 Y7 K2 D1 \2 D
  19. / M/ Q' F5 I/ u- s  W, X
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 B1 Y  ?# s! o# I3 p
  21. {8 X% M! |( ^: t3 m4 Y" M- e
  22.         int fd, ret;
    , [- m; J, t/ u0 l) r
  23.         e2prom_s_cmd arg;
    . U9 P& r9 `/ a" S
  24.         unsigned char buf[0x18];
    2 K/ s* Q% x) I$ W5 K5 h* l, l

  25. 4 I, `( n) q1 _; I' B8 v' F6 N
  26.         fd = open(E2PROM_DEVICE, O_RDWR);1 u2 I- E3 e) @2 w3 H0 q6 v
  27.         if (fd  < 0) {
    4 Q$ }, q4 p0 i6 l# L* s
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);" {( `1 N% n; w
  29.                 return -1;# B5 Z4 r0 E  E: i: V) i
  30.         }
    8 N. |6 F8 V( W8 h) b. n9 v# E2 P5 J( p  }
  31.         arg.sub_addr_count      = 2;% E3 w+ p7 |! P
  32.         arg.data_count          = 0x18;9 ^( C8 k& B) o1 G6 C4 u9 o1 \
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    + i9 Y6 `& j, S3 Y8 f1 z
  34.         arg.e2prom_cmd_data     = buf;
    ! @( M% X7 O' \: L( A( d+ |2 M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);6 A! w  x9 \# r# A' X
  36.         if (ret != 0) {2 T" Q# x: Q* h& O
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);0 }- \2 L) z8 E
  38.                 return -1;
    ( ], e3 {! U- ~' M0 Y# `+ n
  39.         }
    ) ~; R/ y0 c8 |% s9 R5 U
  40.         memcpy(mac, buf, 6);
    : y! d. s* d1 h$ [( G* q1 c% z7 t
  41.         memcpy(stbid, &buf[6], 18);
    ' O1 K3 v! ?" r
  42.         stbid[18] = '\0';
    3 t7 o) t' \! q3 O4 j( V- Z

  43. ; q: J$ G9 h/ e9 m# ^3 }
  44.         return 0;
    + \, Y2 s2 S' ]3 I' E/ c
  45. }
    1 f  \% {7 u) p
  46. $ z; G3 e$ f3 k8 W! f
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 r" L3 [0 R) d: s) ^6 w5 {$ l
  48. {+ P* y, F& f. K. V7 y7 |5 k: ^
  49.         int fd, ret;' u: l. b6 m" U' V' }- A
  50.         e2prom_s_cmd arg;
    % w, o: K( G/ s: l  j
  51.         unsigned char buf[0x18];
    " |+ L" ^( ~# N$ q
  52. ; ^% p& Q% [$ ^2 G4 x3 U7 {" c
  53.         memcpy(buf, mac, 6);0 R0 q" n7 W* ^( M: g+ e2 d9 q5 a( u+ i
  54.         memcpy(&buf[6], stbid, 18);
    6 y. H' L+ R0 a5 \
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 }: j4 O( D' x2 _
  56.         if (fd  < 0) {
    2 [* i0 N: x# _4 ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( H: {$ o" Q( s5 Z5 d7 q
  58.                 return -1;1 T) e9 E9 z# N# n* U5 }
  59.         }) O% D2 g( H7 D1 ?9 {, J
  60.         arg.sub_addr_count      = 2;) k! j: c, B( }; `, O7 \. p* E
  61.         arg.data_count          = 0x18;! P7 X3 e5 e3 A$ l
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( g- H& ^/ b& P5 R+ u( O
  63.         arg.e2prom_cmd_data     = buf;! ]# t% m' u2 g% U  I% |3 ~
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 F2 g/ i3 G* g2 `1 `9 D7 G" Y
  65.         if (ret != 0) {
    / g! k4 F+ G; O" x2 k  ]$ w- g: a
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    7 J$ _- `- J5 R! u# N$ T4 \. n1 P
  67.                 return -1;, q1 V5 E1 q, y: A7 Y3 N: p6 c
  68.         }2 l+ O. ]5 o8 ^- s+ v: t* S
  69. % ^; W, r4 I7 i3 @, Z
  70.         return 0;7 q$ q4 w1 m/ ~/ i3 h
  71. }
    6 s7 P: C: s; I  E- [

  72. " ]# D4 d% e$ }7 T: H2 n
  73. int main()
    ; X! {, [5 G4 T$ @7 n5 E
  74. {. _- G  e+ N$ A7 a& Z: g3 k3 @$ f
  75.         char c;
    6 I$ i5 O' r/ G9 T
  76.         int i, macs[6];" z- c% p5 g. F# ]9 a2 W/ T, j& W
  77.         unsigned char mac[6];
    7 e$ Q; v5 _0 |! L% K
  78.         unsigned char stbid[256];
    4 Q. c+ H) H0 C7 i; a
  79. 7 B+ g8 z$ `6 ~3 x2 ]* G
  80.         if (readparam(mac, stbid) < 0)
    " T, a( ]$ f- m% r0 Y4 o
  81.                 return 1;0 |% x3 W4 i7 G4 z7 D' ]& _

  82. % {/ m: |$ l& P5 p2 r1 C" g) |
  83.         printf("Current parameters: \n");
    8 k, T1 s) E4 o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " |+ N* e% `1 H3 |: e# N
  85.         printf("  STBID: %s\n", stbid);7 d- g) V* |- J; [* u0 J
  86.         ' Q+ \; J5 I1 K% M7 ^- f8 `
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      {7 O4 \( D/ F" u
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {' F: t; \4 d! B* x) s% h9 L7 s
  89.                 printf("Input MAC error\n");9 J; j& `2 }, t1 K
  90.                 return 1;6 i- K+ m1 O7 B9 \7 s3 T
  91.         }
    ' W3 `8 L. R7 `3 a% p3 B- ^
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    % |7 g! X- ^0 g4 a
  93.         printf("\nPlease input new STBID: ");/ m+ T+ ]" H: [1 n9 C. v$ z
  94.         scanf("%s", stbid);% \8 B& A( j8 E2 m
  95.         if (strlen(stbid) != 18) {
    / R/ F  D) d% `  G9 n
  96.                 printf("Invalid stbid\n");
    4 D0 u9 C- y( c
  97.                 return 1;
    % h' ~6 Z8 L* s) {
  98.         }
    ; {# P0 E" N% W  t
  99.         printf("\nNew parameters: \n");7 E. n3 T- a- w" h4 d! z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ m" D/ t6 d; T- G
  101.         printf("  STBID: %s\n", stbid);( o4 u: X% b* A  y7 |# u

  102. 6 w- I6 ?$ \; O' u
  103.         printf("\nDo you want to change paramemters? (y/N) ");! S. Z9 q1 q2 b5 N$ j& \
  104.         for (;;) {
    ! T# e. t0 I8 H) X
  105.                 c = getchar();
    $ ]7 R+ D- s/ X6 P6 J: O$ Y
  106.                 if (c == 'y' || c == 'Y')
    ( C, U1 b( W' N
  107.                         break;
    , z/ J; I/ k6 [
  108.                 if (c == 'n' || c == 'N') {
    ; [: I9 c+ A! c  c4 }/ D+ v9 |
  109.                         printf("\nAborted.\n");
    2 _; K! d/ I4 P. K9 \  f1 b9 i
  110.                         return 1;% w8 K% k1 \! c0 ~0 ~
  111.                 }4 H- y0 K- q. d& Y9 }
  112.         }
    3 X* l/ h8 r3 N  J! }) M! ]
  113.         if (writeparam(mac, stbid) == 0)
    ; k+ o* i2 E/ t8 A3 {. p6 Z
  114.                 printf("Parameters changed.\n");7 Q; z$ \+ L4 W3 T
  115. ( V/ V  O3 h, ], m; }' m( ~
  116.         return 0;. ]' o5 b6 ^% `8 b0 c4 e8 |
  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
$ [# \$ ?" f5 b: x- K" ?在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 R) ~+ m) k! n% r
你用的编译命令行格式是什么?6 ]- C8 c% s* l) u
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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