查看: 17455|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; m7 h1 {8 J8 [* u! U' F# U8 \
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # u5 Y, R: Z; b8 U# c
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- _! X) A' c& Q, B, [usage: himr <address> <value>. sample: himr 0x80040000 0x0+ A/ f  o, ^' L/ i1 G

) k+ m+ N% b1 }2 N
$ p/ N/ y* q, p不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 R  e# _" H9 g% x; d9 U
* b# [! L8 B' U
补充内容 (2012-3-8 09:42):; M* H3 m7 N* V6 s- U# g! O7 ]
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 H! Y4 b: e" ?  Y' j+ S$ P7 M
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
( q9 M; w  ^- S% ?$ w6 w
% ~6 F, P2 N3 F6 `himr <address> <value>. sample: himr 0x80040000 0x0
+ B4 q- m3 \6 q# D! ~
, E; q: `7 `  D% K例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. C4 K' F2 K* {' e- ^- Rhimr 0x80040000 0x008 R$ f- q" ^  ~* t
himr 0x80040001 0x11
% w4 a3 n! F# h$ k5 Qhimr 0x80040002 0x22
1 Y, m4 T6 K% x0 Nhimr 0x80040003 0x335 x; d' o% J' Y* R/ R
himr 0x80040004 0x44
5 k% c: v+ i& x/ r% ehimr 0x80040005 0x554 F0 g! y* V2 t% O, q% V
. w+ O8 P# d" p
SN也是类似。
& x% {0 [+ b8 w( Q- F- S3 P% _! S0 B7 i6 D4 _/ T- E
现在主要是,谁告诉我们MAC和SN的地址?/ w# M6 ^+ f% Q8 ?! d
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * U7 a+ q& T7 H3 Y" ]* N' a5 \
一直想找到运程修改MAC和SN的办法,苦于无解啊
7 X0 c" l7 X9 u/ J" C3 z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 f: D. t2 P, e. a% N6 |; _1 P2 C4 s1 C3 ~( {# q  ~7 A
修改的代码早有了。到今天不会编译。0 w* B* N7 {' d( k" C8 K
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    $ \! i5 t7 @$ Y4 |1 s4 n6 M
  2. #include <malloc.h>
    # ^* c% ?; w; d! D
  3. #include <sys/types.h>
    + {: R; B; i; J+ L# G  T7 N1 u4 p
  4. #include <sys/stat.h>/ J# N3 b, Y- N0 W8 j7 Q
  5. #include <sys/ioctl.h>6 U) e4 b/ F' }6 ^! A' Y2 D/ E; T# i
  6. #include <stdio.h>8 z# i7 }5 n4 [
  7. #include <string.h>1 H8 j# c; b* T* j$ B0 Z

  8. 0 R# Y! ]2 [1 L: w
  9. typedef struct {% b+ n8 x! t7 u) J
  10.         unsigned int        e2prom_cmd_sub_addr;* l" m, W1 n2 R# F
  11.         unsigned int        sub_addr_count;' f" Q( b$ p7 l, N! x# X
  12.         unsigned char*        e2prom_cmd_data;
    ; u- [% u- o# }" l
  13.         unsigned int        data_count;
    2 `) S, }+ k6 U# _3 E$ L9 ~
  14. } e2prom_s_cmd;
    # y/ M  G# m# h) t2 c% B+ S+ [" b, E
  15. * S' O& P9 h% d# C
  16. #define E2PROM_CMD_READ 1
    " F" E6 O( Y4 d
  17. #define E2PROM_CMD_WRITE 23 [( F8 T" K1 Z; w( s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 z2 D) n5 t& G( t. H: T

  19. ' Z; I- a6 }3 U
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    7 l5 w! Y# n2 g) G& ~
  21. {
    ) F/ V# Z6 _! q7 J$ ~3 [; A( u1 f
  22.         int fd, ret;
      G" t& p* Q% q
  23.         e2prom_s_cmd arg;
    8 d( F8 p- V2 `/ H# Q( z
  24.         unsigned char buf[0x18];
    7 C0 d" n1 d  X4 D% V
  25. $ X3 D! T+ z- _& l$ v) H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    * ?5 v/ |4 ], N% Q
  27.         if (fd  < 0) {! b. T; O4 a4 H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 i' ?! w$ g" q4 i; l7 H1 F
  29.                 return -1;
    ; Q: |: {, G; ?
  30.         }1 O; x" ], [/ o; w2 w, ?7 B
  31.         arg.sub_addr_count      = 2;% h; A% l' F3 D+ M) `# r, w) R+ K" w! m
  32.         arg.data_count          = 0x18;
    & n1 {# i" U: S* u& s
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) n3 W$ Z# Q: Z: n! S  Y
  34.         arg.e2prom_cmd_data     = buf;
    5 \7 N  c9 h2 E% b) S4 ~% g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & A9 _$ C6 a+ [- O9 |! Q# j
  36.         if (ret != 0) {
    7 Q: l6 `8 l: e9 Y8 `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 C) m0 n4 m5 x6 B* b
  38.                 return -1;
    / [$ g# D7 U' p+ k6 }( q% J
  39.         }
    : _9 e/ @' n3 J: Y7 H
  40.         memcpy(mac, buf, 6);
    * ^0 r4 C) j( `( i; Z1 v) j# Z* E
  41.         memcpy(stbid, &buf[6], 18);
    * _7 C, t7 k6 L+ ~, K
  42.         stbid[18] = '\0';* E+ L  Q5 {/ G, g- ?
  43. # `* K4 p! m" x( |+ j* t7 y
  44.         return 0;
    $ a4 _8 T% V) ]
  45. }$ O: h- l* j- @
  46. 2 t  L9 M# P, l& {3 l
  47. static int writeparam(unsigned char *mac, unsigned char *stbid), u8 C) V* B( b/ T
  48. {+ h. X+ E1 H; v
  49.         int fd, ret;3 g# I$ U: L8 i& u  p
  50.         e2prom_s_cmd arg;
    , V' W  ]/ X* n$ \
  51.         unsigned char buf[0x18];* g( U9 m6 \9 T4 X7 Z; D# F
  52. : H9 C+ \0 s( ^) T. ~  \" T: r/ o5 ^
  53.         memcpy(buf, mac, 6);
    . M: X) R( r1 Z1 O
  54.         memcpy(&buf[6], stbid, 18);2 Z7 w+ g5 L  _/ e# r& M8 R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 L% k6 ~! X" G( C
  56.         if (fd  < 0) {
    ! A0 J. _6 a: m, B# p5 K) k
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 v" G" I( f1 W! h3 d
  58.                 return -1;
    " `/ `0 ^1 p7 t! ^" i% [& [
  59.         }
    $ m% X4 {0 y9 c
  60.         arg.sub_addr_count      = 2;
    2 l9 t# |2 r: ]$ k
  61.         arg.data_count          = 0x18;2 r& a- E% N. @
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : H+ s/ q8 p9 Q' W3 X; v
  63.         arg.e2prom_cmd_data     = buf;
    8 B2 C# q" G6 Z9 P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 d* t3 {6 b) [" L8 [! f3 }* |+ L
  65.         if (ret != 0) {  F) I  p/ z# P- J; C6 ]
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, l& D5 |: a: O% g- U3 I, l
  67.                 return -1;3 S7 e) G/ v& A. d- {6 b5 o1 p
  68.         }
    6 f9 H# X& N% H( y! W( |3 A
  69. - Q% p* J- y- x# M% P
  70.         return 0;/ E% I' N6 r* V
  71. }
    - U& e" v) v% a" R7 O4 A

  72. 8 ]1 a2 D2 B! s' z/ Y0 E
  73. int main()8 h2 n$ b% }3 [6 _6 R5 T5 p# `
  74. {; P2 Y. n7 Q7 }2 D
  75.         char c;" G# f7 b3 ]" M* f* R; q+ |
  76.         int i, macs[6];
    5 @' U% `, _2 g, z! l0 x3 A
  77.         unsigned char mac[6];: J7 [" c6 f" C$ h2 z7 O
  78.         unsigned char stbid[256];8 s8 `; R4 y5 c1 A
  79. # J5 ]$ M, p9 A& l# w  a3 z0 ^
  80.         if (readparam(mac, stbid) < 0)! L  _+ R# \$ ~% {: v
  81.                 return 1;  n( F, j" C4 B

  82. # _$ ^5 q3 T% b1 J6 x+ @
  83.         printf("Current parameters: \n");- y5 k9 v# Y" q* \& X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) y% Y' e0 |0 x# Z9 f! G! E
  85.         printf("  STBID: %s\n", stbid);
    3 i( g  O  g) ~9 d9 j
  86.        
    8 s. {2 d+ b' o2 A/ E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    0 y( W* e: G. _+ e
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 {4 x# Z, C8 e/ |" f
  89.                 printf("Input MAC error\n");
    * I$ |+ G0 g/ i
  90.                 return 1;' S% d- l7 {0 i3 z
  91.         }
    ! Z1 E. h2 x" @2 `1 \! [3 }
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    5 O1 ]6 v; K# u8 t; N$ v2 g
  93.         printf("\nPlease input new STBID: ");! O+ y; I* z6 |- W# P: f+ N& A
  94.         scanf("%s", stbid);- n8 e7 E/ t6 @# g+ I: J
  95.         if (strlen(stbid) != 18) {: j2 s0 t6 o8 J1 n) t( y, t
  96.                 printf("Invalid stbid\n");
    . N; Q- b$ A: k2 _
  97.                 return 1;: z: \7 N% q/ x5 _: R9 j
  98.         }
    2 x  e/ @$ t9 W, r) m* a; ^; h
  99.         printf("\nNew parameters: \n");9 T, H+ ?- F: r( p
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( u) p; o7 Z0 L2 g
  101.         printf("  STBID: %s\n", stbid);+ `2 V  V. M2 A  Z  \
  102. 7 E: K& `3 g6 b2 E& h) u& N
  103.         printf("\nDo you want to change paramemters? (y/N) ");( D" n* L1 y1 f/ W- u! k
  104.         for (;;) {
    : j& P& w, u6 f, Y$ T& X3 M
  105.                 c = getchar();# V, m4 m" d7 k- g
  106.                 if (c == 'y' || c == 'Y')
    ; A2 H8 N5 _, X1 j6 E# x, _5 L
  107.                         break;
    / X8 ?- P2 ^: e& U. ^
  108.                 if (c == 'n' || c == 'N') {( W7 c) _" ?8 ~/ v! `
  109.                         printf("\nAborted.\n");; ~# X9 l% k9 w
  110.                         return 1;: l: O( Y8 I! i# f& q( q
  111.                 }
    ) g( p3 k+ u$ \4 Z9 c. a9 w
  112.         }
    & d- L0 t3 L0 b8 R: e, W& ^
  113.         if (writeparam(mac, stbid) == 0) 1 U# [  ^$ y8 V3 @. G
  114.                 printf("Parameters changed.\n");3 x5 i& N7 B* N. [' T. O

  115. ! l$ a( C& m6 M
  116.         return 0;2 x0 ~' k* n- s% `; w
  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
+ F4 D" w; i: A( d& ^在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 W4 B6 h& u* Z5 i* I你用的编译命令行格式是什么?4 a9 E8 N. r5 q+ E/ w/ |) j9 ^
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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