查看: 16374|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; d5 c% u% m7 M& R
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 X4 w& l/ d1 `$ @* K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:# Q: X( e7 ]" L4 N" M5 U+ K
usage: himr <address> <value>. sample: himr 0x80040000 0x0" ]+ X' J2 D# }. X# q% ~3 L/ `9 h

  p: x% |1 m! @: g0 N' X
# Z9 x- l- s4 H7 v: u& I) g不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ v: i) a; j' R/ ~9 z8 B
$ d2 j; T, x! O; _' `) d; ?! k补充内容 (2012-3-8 09:42):+ o6 X* c# {' x+ X/ H! j1 V4 o0 N( _) w, g
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. I$ ^+ |% e+ G9 J
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
* O' ]' s5 @, ^7 s7 t5 s, _
4 y$ a: [; n& i) U0 h5 j# \himr <address> <value>. sample: himr 0x80040000 0x0  s/ \0 Z- z* ~

+ B+ g- P! c: h) a$ W: l例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
( `% l: a7 H* h4 b& nhimr 0x80040000 0x009 o, c$ c8 S/ r1 |; a  N
himr 0x80040001 0x111 t' Y: G0 S' U2 e
himr 0x80040002 0x22
0 O8 @2 k# A, \8 ?himr 0x80040003 0x33
/ ?- T% k. j2 Yhimr 0x80040004 0x44$ P( R+ n. C. W0 l. K. q4 J
himr 0x80040005 0x558 y, p/ |3 G% ?( i
7 g* M& k$ L8 N9 z
SN也是类似。/ o9 A- N% `1 B6 h% H
5 w: f+ ?3 P; C
现在主要是,谁告诉我们MAC和SN的地址?
0 `; ^( e8 [  n, J& ]. ]
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 " G) D; z5 o& R1 p6 {3 b
一直想找到运程修改MAC和SN的办法,苦于无解啊
* Y4 E) |0 o% L/ ~: o) k  O' [
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 L2 S* Z+ @8 \5 H* x0 k6 |* l9 \# m' v; A( b
修改的代码早有了。到今天不会编译。% n5 V1 S9 T2 V. O( m2 I
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* h; E4 g/ h" `
  2. #include <malloc.h>$ a# _% [5 ~+ @2 c3 ^
  3. #include <sys/types.h>
    1 A3 B$ J5 |6 |7 z
  4. #include <sys/stat.h>
    ; u8 g" m. y7 D$ F- F
  5. #include <sys/ioctl.h>. q$ L# W  y( ~7 M5 x$ p6 `6 D
  6. #include <stdio.h>
    1 J+ C% H4 V- H0 x' B+ p: X/ ^
  7. #include <string.h>
    , J- c2 ]3 c* |  O
  8. & q( C) e6 E* B2 |% h, _
  9. typedef struct {3 w/ B# G- U. b2 A
  10.         unsigned int        e2prom_cmd_sub_addr;- K  T- B# X" i! f
  11.         unsigned int        sub_addr_count;
    2 B( B+ i0 `$ K$ Q4 d0 D
  12.         unsigned char*        e2prom_cmd_data;. O% x9 n6 i) T. g) u  l
  13.         unsigned int        data_count;$ k7 H( l" h( z/ O% n, h
  14. } e2prom_s_cmd;1 E, F7 Z# J! w3 v" N7 J

  15. " M7 w1 n4 i' k! ]5 h# F8 O; C
  16. #define E2PROM_CMD_READ 1
    " S6 w8 C2 N( M" q  I
  17. #define E2PROM_CMD_WRITE 2
    6 L- H9 [1 c" i% o. ]3 ]! z# l
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 E3 u. W0 H+ o& u
  19. : ~! F: B* R5 _
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / X) `* C, l9 N& R
  21. {
    6 a2 m6 s2 U% M$ f5 Q! p# {
  22.         int fd, ret;
    % d& K$ c; v9 \1 x- M: y/ x
  23.         e2prom_s_cmd arg;# S5 d! d+ f. `4 f4 `8 v2 t
  24.         unsigned char buf[0x18];: u' ~9 a9 Y, [# u6 \, G

  25. 9 A+ Z+ M" C9 f: p7 |
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . T( E: d0 Q/ W- _
  27.         if (fd  < 0) {# v, I" z) w* v' d9 g8 L' M
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);, O/ T* M& K! B
  29.                 return -1;
    $ G; i* }$ V1 B+ \( B5 N. q
  30.         }
    6 E& f0 H5 b' L. ^2 [$ a" m; m
  31.         arg.sub_addr_count      = 2;# |& Q1 S$ }- H/ o. M; T' Y
  32.         arg.data_count          = 0x18;! c8 i  X/ ]% u$ L
  33.         arg.e2prom_cmd_sub_addr = 0x290;" D  B: L4 P% @7 P, L( H7 N5 Q; k
  34.         arg.e2prom_cmd_data     = buf;
    * K5 {4 l$ B7 t
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( i& G) j( q' T7 N3 p
  36.         if (ret != 0) {
    + x) [# Z) a( @7 L
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- Q/ [0 M. I8 h) K' g9 w
  38.                 return -1;
    ' d% S( Q3 g7 W1 T# }, [4 T$ ~
  39.         }; H" H  A0 n6 G0 [( Q1 p0 v
  40.         memcpy(mac, buf, 6);9 e1 h$ y0 Y7 L: e$ L, g2 f
  41.         memcpy(stbid, &buf[6], 18);9 _/ S7 x9 x  F: ?
  42.         stbid[18] = '\0';
    9 A$ I5 g# A6 k; g

  43. 8 M% }% E% k7 G$ U0 s' q! f
  44.         return 0;
    ' x$ F8 ?# G3 G' j
  45. }2 w% q1 ]$ c' B- C; J
  46. , w# P* L/ |" F9 ~& m8 M0 C; a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    * r6 h3 }) {/ z, U9 E3 C
  48. {. R% `  w, O3 K7 k
  49.         int fd, ret;( M3 B9 E' l, }0 N
  50.         e2prom_s_cmd arg;
    0 B, m- l8 b( u/ {" I* h, U
  51.         unsigned char buf[0x18];5 x; K" W9 I( _+ s- L1 E! ?

  52. : N$ s+ a9 n: {; J5 q5 A
  53.         memcpy(buf, mac, 6);7 F+ X! o! G" p; x! r
  54.         memcpy(&buf[6], stbid, 18);9 ^# v/ W! z( V8 O) i
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" ]5 ?$ }' z9 T. F* H
  56.         if (fd  < 0) {! J8 Z8 I" h% S- p. w% \, l6 ^1 o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# r6 d) M6 B) M) }7 b# K
  58.                 return -1;
    ( l- _+ Q2 K% v. {& @6 X* k( U9 v
  59.         }
    , j, y3 G3 m0 s& B
  60.         arg.sub_addr_count      = 2;! Z% v: Y5 |7 Y7 X
  61.         arg.data_count          = 0x18;
    ) @4 u$ }7 ~- o$ t6 v  I+ `* o3 t
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + z/ L6 z' f1 |) U
  63.         arg.e2prom_cmd_data     = buf;
    / @! g# a* j' J2 R, D4 e3 i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 d. J! V5 D0 B5 k4 i+ d
  65.         if (ret != 0) {$ p; E3 y: R# L, o% t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( ?6 i8 _$ Z( t& `7 f) y
  67.                 return -1;7 ^5 s7 K% G3 x% P" X7 Y% q7 y  G
  68.         }- G. H/ j/ Q/ v6 t. g' h
  69. ) s2 C/ \6 k" U- W8 F' j, s
  70.         return 0;# ?4 h% A2 i$ d' C9 T- w3 d
  71. }
    3 w: t( m) B/ h5 j" c9 W% Y

  72. ( a/ V- k& l1 |
  73. int main()0 M. q& D4 `0 p% ~/ G* k( a" t& S
  74. {; d* n" n3 f/ y0 H, j4 J
  75.         char c;
    7 P- T3 F8 t  F/ `
  76.         int i, macs[6];
    & }0 \3 Y  [. D5 u
  77.         unsigned char mac[6];9 z: M6 A6 U  \, y3 L% |# a% b
  78.         unsigned char stbid[256];  ?; n  S. Z# ?: m% G' e
  79. , u- J8 K1 m0 d0 o: W2 M
  80.         if (readparam(mac, stbid) < 0)
    + G1 O& s, n  U+ d
  81.                 return 1;' e0 k2 O- l# q
  82. ; \' G# o+ d% B
  83.         printf("Current parameters: \n");! J$ }! v* ~* R( y" h7 Y7 j
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , K- _% H. N3 B5 H
  85.         printf("  STBID: %s\n", stbid);4 X: G9 C% j6 k8 x" r9 I2 F4 V
  86.         ) H+ @2 \9 `8 Z: D9 W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    5 o; v* ^- I, W! W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. C, O5 `( T) F5 [
  89.                 printf("Input MAC error\n");; _- ^0 S6 c9 e2 w5 W* @3 m9 `9 h6 Y
  90.                 return 1;
    0 X3 P. f. ?; h. R5 ^* N  ^2 n
  91.         }6 U! A7 V* h7 u& z3 M3 M
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & c! j4 O# l7 J) N
  93.         printf("\nPlease input new STBID: ");" N% o% L( x$ N0 w. K
  94.         scanf("%s", stbid);+ c: b0 p+ H  H. W3 L2 E% n7 l
  95.         if (strlen(stbid) != 18) {
    . d( A  @. ?' [
  96.                 printf("Invalid stbid\n");" P* v' x( B7 H
  97.                 return 1;
    ( ~3 R2 n4 Y: o; c% Q8 M$ G: u
  98.         }2 u# H7 A1 s5 ~$ n7 m; A/ Z
  99.         printf("\nNew parameters: \n");' G) a* Y" L6 I5 u8 o! ~" S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, w) e# E* `2 @9 h+ ?# G' d6 G8 _
  101.         printf("  STBID: %s\n", stbid);% k0 m6 B$ w; v4 t9 Y, |3 V

  102. 5 d7 L0 L/ @. n2 ?
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 R2 k% Y& W% R9 q$ k% f
  104.         for (;;) {* _3 M: ~& n9 w, i& ^3 u( m9 t/ l
  105.                 c = getchar();
    : E% D' ~' i" h% G3 F/ h
  106.                 if (c == 'y' || c == 'Y')
    ! V  u0 P, b. @
  107.                         break;# D0 Y  `6 f2 G# Q) s$ |4 z  F& T  p
  108.                 if (c == 'n' || c == 'N') {
    1 B* n* X. u* Y2 j  a
  109.                         printf("\nAborted.\n");
    ; _* _$ W% V( Z' ~; L: g+ q
  110.                         return 1;5 g' {. z! g% l: `9 f, N. b8 A
  111.                 }
    + ]9 r+ L! K& f* ^* ~! x9 L3 v* t
  112.         }% |3 h: e& ?# c4 |
  113.         if (writeparam(mac, stbid) == 0) * N4 v; K1 k8 i2 ]( I7 E( m/ S+ G
  114.                 printf("Parameters changed.\n");2 W* m% p; A& ^' P

  115. 1 k& S4 ?7 T$ f
  116.         return 0;: u8 [: ^% Q' r$ @2 U/ u
  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
( X0 `6 x9 o) w+ o: i) j在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( V0 a+ [  N4 @! z你用的编译命令行格式是什么?5 p, @5 t  J9 s0 S" _% i9 a
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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