查看: 17169|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* ~2 a" K5 ]5 B/ o* I7 ~6 k0 G+ f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 H# ~2 y* ]( J6 ]! g; K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 W0 w( i+ Q' Tusage: himr <address> <value>. sample: himr 0x80040000 0x0
4 a5 R3 j3 A+ k5 p8 ^2 w2 R) D* {9 n8 W5 I

0 @0 b# ?, W* A- b; ?9 p- H不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- P* Q0 i2 w0 f: t5 l9 |9 l2 B4 `8 S5 N9 ^
补充内容 (2012-3-8 09:42):2 N8 Z$ L) V& ?9 B9 O
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. e2 W% T; F% W% x! ~- l这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
$ L  B: _, f$ `" `' M$ |
8 A  `! U. m7 e  a7 C2 B. bhimr <address> <value>. sample: himr 0x80040000 0x0
$ L+ }7 p: y  `; _4 w& s# ]% M( b) ~2 }7 e
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% a7 c1 t$ j! }7 D0 F
himr 0x80040000 0x00
, u! z/ g2 `$ l6 A) yhimr 0x80040001 0x114 j) }: s, ~3 G2 Z: E2 {# o
himr 0x80040002 0x22& b* ~: C) @3 V/ P" B8 {0 q
himr 0x80040003 0x33- E' }2 q) }- P
himr 0x80040004 0x441 ?3 W! Y6 r: F4 t$ g. s, G
himr 0x80040005 0x55
% Y+ Z7 s6 o2 l+ d  z: E) N: f9 b3 ?" t
SN也是类似。
" B% z+ A$ \4 k2 S
. t! m- @8 C" f/ X& k现在主要是,谁告诉我们MAC和SN的地址?2 k6 {% j$ w; Z( S' _
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& h" Q' k! p" u) b1 O一直想找到运程修改MAC和SN的办法,苦于无解啊

3 s! ]) M9 X$ c* N) X1 P源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 T* r8 U; i( m* U" Y
, H3 I; x( [7 T  \; f, n; a9 r; @" t修改的代码早有了。到今天不会编译。
- `4 ~5 M2 d0 {' E" W需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>6 _. V3 M( V/ _" G! g
  2. #include <malloc.h>% l4 z% `) o8 S% x! M! x
  3. #include <sys/types.h>
    % Z% i3 [' C" k/ P0 Y1 W0 {) D
  4. #include <sys/stat.h>
    & i( d  x# P8 W# K. v
  5. #include <sys/ioctl.h>5 `* W6 f2 [, i$ g
  6. #include <stdio.h>
    ( a7 ^/ i- O4 I; P' ]: @
  7. #include <string.h>2 ]- l3 I6 u' M" p, A7 b
  8. * k+ M8 @% l7 e2 t) x/ }8 o
  9. typedef struct {
    ( j5 ]/ p7 Y- j1 `  s( p8 X
  10.         unsigned int        e2prom_cmd_sub_addr;  O3 F4 h/ }  M
  11.         unsigned int        sub_addr_count;
    3 K  i. V3 ]7 Z  }
  12.         unsigned char*        e2prom_cmd_data;$ M/ c3 q  Q: i( i& S/ `* A. g
  13.         unsigned int        data_count;
    ( P6 @/ Z- @& m" [! w
  14. } e2prom_s_cmd;6 l$ H9 N/ ^5 L, g* `6 d

  15. / q2 d  s; F9 z& _  E  E
  16. #define E2PROM_CMD_READ 19 Q) N7 l0 `/ {4 d0 Y4 V+ e
  17. #define E2PROM_CMD_WRITE 2' K, [, n7 `  K% q1 O7 J% T
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* O0 x- l) H  s" h2 g; }* I. g

  19. ' n+ z6 J4 E1 T) d
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( _; \. [9 q+ ^) V
  21. {5 p% b( k! x- x
  22.         int fd, ret;
    5 D* t8 f9 A  ]* l) A6 ~5 f
  23.         e2prom_s_cmd arg;; {$ N- K" w2 K: ~$ j3 }
  24.         unsigned char buf[0x18];. v' K- _( P# l

  25. : L5 p) Y/ K0 }) G
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# @5 [4 ~+ A/ w2 \
  27.         if (fd  < 0) {
      N1 i% i( [- f1 w
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " a+ O# D  s2 I; z1 c1 k  M) W
  29.                 return -1;& Z" u, L. ]! b8 F0 `
  30.         }* c. t  P' R5 k, \" `0 a
  31.         arg.sub_addr_count      = 2;
    6 l3 j" }  q6 O$ l
  32.         arg.data_count          = 0x18;& K( T& I; E" S; Q" |3 D) m! o
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    # b: @# W# E; \4 Q9 Y5 ]" a2 `
  34.         arg.e2prom_cmd_data     = buf;4 t- G4 H( ^6 @% d3 T2 v; r! P
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! l/ [3 w- k4 f# G2 ^
  36.         if (ret != 0) {" |. W- f1 r9 }: c# ]2 q: x
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);. U6 O/ O, i  H6 h) V1 `' p
  38.                 return -1;8 I( a' x9 J1 Z$ F
  39.         }$ a, n5 m3 H) S5 B( Q) h
  40.         memcpy(mac, buf, 6);
    ( O, O( k. D! D
  41.         memcpy(stbid, &buf[6], 18);
    . Y% y! A# b) K! K# }6 R% O5 ?
  42.         stbid[18] = '\0';
    / z  ?& G9 Q0 u& Q9 M
  43. $ a6 i* A; I9 V' n7 c" d
  44.         return 0;
    / C0 j- `$ F7 c9 P0 J. B
  45. }
    ! I* d, u  {$ {' B: Q" H# i
  46. 0 ?3 L9 [% d2 k5 k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)* s4 K. }* q6 x! u+ |4 [
  48. {* ^* P: {9 A' m) V% @" b
  49.         int fd, ret;2 g4 l' t. h& j' I3 o; D! D  s
  50.         e2prom_s_cmd arg;
    # w2 [# b% L) B% H( t3 F( J! h
  51.         unsigned char buf[0x18];8 O9 R) W; `2 T) w
  52. 4 H2 M2 O% y. f2 o& g6 I7 \6 N, O
  53.         memcpy(buf, mac, 6);# {+ {* A5 {5 |
  54.         memcpy(&buf[6], stbid, 18);% V/ c2 f0 n; ?4 H$ {) C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 j6 Z  d/ M. ^8 C+ M
  56.         if (fd  < 0) {9 M4 O6 \- ]6 V4 h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! b( f) T  k! r. m
  58.                 return -1;3 U; \" ?  l' g
  59.         }8 `0 W4 T& k! h* v
  60.         arg.sub_addr_count      = 2;
    5 e4 n) n. N9 U& B" B
  61.         arg.data_count          = 0x18;( Q- |) ~& k& b+ {0 e
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    # d# r2 ?' p: Y7 @! O/ v9 \
  63.         arg.e2prom_cmd_data     = buf;" |3 J1 H  J1 J1 q+ ~% e. ~
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    # w. t6 g* I/ u
  65.         if (ret != 0) {
      \* m6 b3 @8 Q  q) a( B# X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 c% z4 T$ t1 U. e6 w- g
  67.                 return -1;. ^# ~8 O7 @+ U0 i" e% C- i. C
  68.         }& s  F3 i8 F" W% G& O7 N
  69. 6 C/ b( |$ P8 F  G* k
  70.         return 0;
    3 f# q: P) Y+ L" k6 t
  71. }
    # g  b" ]: H. F$ b# @; d

  72. - _1 x* T3 d) I6 h0 l9 q; x
  73. int main()
    $ ~8 `- P1 ?2 z! f' I* w
  74. {
    2 H7 M9 n5 }: C2 g
  75.         char c;
    # a# \# ?& b, A
  76.         int i, macs[6];
    2 l4 H$ E8 a6 }* a. w# o
  77.         unsigned char mac[6];  k1 W1 w1 b5 r2 i$ \1 U
  78.         unsigned char stbid[256];
    4 E  }) @2 v) _! f) p

  79. ( N$ L  V9 z9 `" a6 g& P0 Q( a
  80.         if (readparam(mac, stbid) < 0)
    9 p' W# L9 w+ T  W+ L+ T
  81.                 return 1;
    9 n& a6 H7 A  W

  82. " I* H  I2 m$ |* V4 u) e
  83.         printf("Current parameters: \n");% ^  F9 t2 K$ ^4 m: ]! [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) C% k  V7 b: }7 W8 \6 t
  85.         printf("  STBID: %s\n", stbid);6 I! f* z  H- \: H; G
  86.         6 u' q% h( y# U" _% o
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. E8 a# T; ^) q5 w1 _
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 G% U/ n! p% v6 u" Y$ X; j7 a
  89.                 printf("Input MAC error\n");( @: t7 i% n+ c0 P
  90.                 return 1;: z( `' }5 B, U, v
  91.         }
    , @, ~; m2 |" [* U& D9 }
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    4 \8 _, E. N1 v2 y) `4 e6 g
  93.         printf("\nPlease input new STBID: ");
    ' |& v$ b4 P9 o! A: ~' z- n
  94.         scanf("%s", stbid);) B* x  d% ]5 q. D1 {
  95.         if (strlen(stbid) != 18) {! D9 _* }# A) G3 i/ Z7 i) u
  96.                 printf("Invalid stbid\n");
    9 v9 C. P$ p9 }/ ~/ k2 |* ~
  97.                 return 1;
    ' }! f  W" U+ c* e6 Q
  98.         }( s- }! }; H$ o/ u. o( h5 K/ f" O  h
  99.         printf("\nNew parameters: \n");/ {& Y; x, n1 d* I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 @$ z3 O0 S8 c" R- m* F% T
  101.         printf("  STBID: %s\n", stbid);
    3 c  g: s* C% k: z+ H$ X
  102. $ w0 o& n2 J; a: N7 C
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    2 f5 V0 r7 R8 _" I' u7 C7 t
  104.         for (;;) {, r& P9 x% q% u9 m) Z. ?+ Y
  105.                 c = getchar();' E( M: \- Q4 A  H% ]  g
  106.                 if (c == 'y' || c == 'Y')
    7 h9 k" S' j+ u9 K0 H3 K
  107.                         break;
    + ^/ o) Y9 b6 D. d7 U, q4 l. ~+ X* P
  108.                 if (c == 'n' || c == 'N') {
    ' V: X7 i$ `$ B( Q; g- J3 O
  109.                         printf("\nAborted.\n");0 u0 }: u, h# ]" u, U1 I  B$ i( ^
  110.                         return 1;/ Y9 U. f! T# H$ n9 K8 C
  111.                 }& }- R  ]- U% _4 g8 }: k
  112.         }
    , U; B3 n  N$ [3 z  {1 I0 H9 ]
  113.         if (writeparam(mac, stbid) == 0)
    8 K  T2 e9 C) ~8 q# y6 T
  114.                 printf("Parameters changed.\n");
    $ [3 j) U4 j7 x0 C- M! \! |
  115. 5 S( q3 _& s' d$ g' P5 z4 U7 T$ _
  116.         return 0;
    , h% Q# c3 d) K' J6 A6 s6 i) O
  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
, ^( ^) s9 K# J) y% }在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
  q/ q3 q3 s5 \: `2 c
你用的编译命令行格式是什么?& ~# M- ^" n+ d$ Z
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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