找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15826|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 s: c1 n) }+ }7 P% l( G6 R
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig% `# B* o% f+ D& ]2 \( w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
" P: \, z3 f- T: {usage: himr <address> <value>. sample: himr 0x80040000 0x05 i2 W; W( G; i- O" C5 ^  m

6 }1 }/ \$ [. r8 ~, W8 |9 u; \5 `" `) a7 P8 D
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, K1 Y1 H; S! P
5 e3 J/ X0 |6 R+ W补充内容 (2012-3-8 09:42):4 b8 q6 c- }, y: O6 n0 x7 n
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ Y, ^& O* j2 R
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。0 |% J' ?0 D0 S. q' ?' @1 t" r  Q

* v( Q  g4 d3 U( g4 u+ Bhimr <address> <value>. sample: himr 0x80040000 0x01 h$ u+ e$ t* C( W- `" i+ \  @
. ]1 f) g- f7 `' V# w, R0 P+ v
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) g/ h( p# @; N
himr 0x80040000 0x00
/ t  M! ^; M& h5 Bhimr 0x80040001 0x11
5 ?  d# K- d  H; Y/ Yhimr 0x80040002 0x22
& M, k* [4 w. l6 b" d( C3 Mhimr 0x80040003 0x337 {0 z1 {& b; ]  i- W/ x' {
himr 0x80040004 0x44
8 V# P0 ^* u2 rhimr 0x80040005 0x55# {$ N/ X2 F7 w0 f+ s6 k
- T) _. g, V+ L. U2 W% C8 x
SN也是类似。6 @: \3 @" j% g* S& C7 Y: Y7 Y+ U

" J* b4 L  {; Y" l6 W现在主要是,谁告诉我们MAC和SN的地址?5 p  \% f% L" G/ B3 p. B! ?
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37   B. N" \' `: a# }
一直想找到运程修改MAC和SN的办法,苦于无解啊
! H5 z4 ?) j; a0 U) _& p+ ]
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ {& o$ a) l1 p, A9 W" R% i2 d0 |2 C% x" j$ ^
修改的代码早有了。到今天不会编译。
3 J0 C3 j- a3 B需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 S% G' C! v, i8 u* |" N
  2. #include <malloc.h>
    3 \0 S5 Z7 H5 F
  3. #include <sys/types.h>1 G9 W4 [" h3 n/ z% e
  4. #include <sys/stat.h>
    . X* H9 T( l6 N
  5. #include <sys/ioctl.h>
    3 q2 E! i' Q" P( W6 \: o
  6. #include <stdio.h>9 s: o+ E0 c/ E3 ~
  7. #include <string.h>. R: {  X/ i9 s! `

  8. - T, K& d1 L4 o
  9. typedef struct {, g/ s% G* C% z9 y; |
  10.         unsigned int        e2prom_cmd_sub_addr;0 C5 X# q& n$ S% f/ }4 [
  11.         unsigned int        sub_addr_count;
    6 f1 n3 u- V: s  a: B0 C8 O. g
  12.         unsigned char*        e2prom_cmd_data;
    " O" K3 M8 V* b/ B8 E4 S1 M4 s
  13.         unsigned int        data_count;
    9 F5 H- G  O& S3 j5 V
  14. } e2prom_s_cmd;$ d6 V3 a6 L' n$ j
  15. " `  G9 o# |5 O( h* w. p; U
  16. #define E2PROM_CMD_READ 1- e8 h6 i4 d0 R! V! M
  17. #define E2PROM_CMD_WRITE 2
    9 R! B  I4 u: q: q8 q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    & g% c4 {- @. p& g+ E3 r
  19. / G, n( ~9 b& e; q
  20. static int readparam(unsigned char *mac, unsigned char *stbid); w/ p) N! `1 Z) z
  21. {
    / L0 N' X# o; _$ @& ~+ p
  22.         int fd, ret;1 ~; f& n9 a1 g# r4 X8 Z
  23.         e2prom_s_cmd arg;
    5 K4 ^6 y1 m/ M2 b5 i" N
  24.         unsigned char buf[0x18];" }% [  A, N9 n9 y% f! T5 t

  25. 7 V4 O: ?$ W2 {% q; V) A, {
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , |2 B6 V- y7 _1 \9 `" r
  27.         if (fd  < 0) {
    & N% e9 o" m+ m2 C/ t5 T6 o9 M
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ p' ?$ w) c7 U4 ?/ f: r9 V
  29.                 return -1;8 f4 @% j4 D; L7 @8 Q; ?' s) F
  30.         }+ X% b: o2 q8 q+ U0 R% |
  31.         arg.sub_addr_count      = 2;
    " g5 ], |# ]/ y. \  j
  32.         arg.data_count          = 0x18;: c+ Y' W7 S) w3 V
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 a4 C" y  F2 u
  34.         arg.e2prom_cmd_data     = buf;
    ) x$ }8 i. K* i( s. u3 W/ I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 c3 U  v$ j; t% F
  36.         if (ret != 0) {7 b: {1 i* d. U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    5 i8 c$ {# R# I# w. n
  38.                 return -1;
    ; `/ \6 A5 {0 |3 ^+ a- H
  39.         }
    - C1 O9 R/ R* F/ r3 q
  40.         memcpy(mac, buf, 6);
    / @' G* ]3 h( d) `/ i
  41.         memcpy(stbid, &buf[6], 18);# P% s% R/ F. }4 O: S; a; C4 L
  42.         stbid[18] = '\0';; b( I  G0 p7 @* m5 V; Q
  43. 5 G( a3 Y/ V9 I
  44.         return 0;
    9 V3 `: a5 [% r# j' _
  45. }8 u6 F- X) G' @/ J* B& ?

  46. 1 f0 ^! E7 z) x2 D9 o" A8 v5 c
  47. static int writeparam(unsigned char *mac, unsigned char *stbid); c* {* S4 k( |& B
  48. {8 \, Z, {4 f0 Y. V5 H+ ?8 w5 m
  49.         int fd, ret;, t! @( a: x/ ?% {& L$ V( {' U
  50.         e2prom_s_cmd arg;
    8 M7 K& |  t2 ~5 T
  51.         unsigned char buf[0x18];: a; K' J5 \* S( L" ~, j

  52. " U) H6 k$ y4 B( G( e- @
  53.         memcpy(buf, mac, 6);
    , W9 M1 R& y9 P, Z/ I: z1 N
  54.         memcpy(&buf[6], stbid, 18);
      O$ X8 l4 R+ q: h, l: A# Z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 ^# d+ f2 Q; P3 i7 n5 D  B9 e
  56.         if (fd  < 0) {
    / K, w0 t% S! E; {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , y" A  c+ t  l3 ?
  58.                 return -1;$ N7 @0 K. H2 P3 {5 B
  59.         }, o9 q8 p5 V2 U+ q, ?' e! V
  60.         arg.sub_addr_count      = 2;
      d7 ^' C1 c& I8 E& T
  61.         arg.data_count          = 0x18;
    3 W" Y+ h! h$ u8 s# {" n! _- s) v6 {
  62.         arg.e2prom_cmd_sub_addr = 0x290;/ ^% z* Y$ S. U
  63.         arg.e2prom_cmd_data     = buf;" R2 r. b# k; X5 h; ^$ @/ C
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 J9 c7 v- o& e% d/ M* l7 y% d
  65.         if (ret != 0) {* ^% N4 w9 ]9 R7 h& g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 r6 M* u* d& M/ T; C
  67.                 return -1;0 o8 z& u4 V- u/ z. N
  68.         }8 z4 R: o4 `: i! J& ~1 n/ c

  69. & ?$ \5 r8 x- I5 g- k, G* a8 d
  70.         return 0;
    3 {& x" a1 |% r6 n
  71. }$ F$ F$ W3 A3 K7 d( f- y

  72. / J2 D8 \  F* ^7 B% B, L5 W
  73. int main()/ H6 k3 V# T8 ]) C+ U- F
  74. {
    & z' H3 k  s9 T" t/ C' Y( K' k
  75.         char c;
    8 Q* }, N* j! Z) F0 Z/ j
  76.         int i, macs[6];
      E" R' ?, |2 i7 `  a$ ^; b
  77.         unsigned char mac[6];0 [; ^# n) ?, l1 l8 f! A
  78.         unsigned char stbid[256];
    ; m+ t) D  Y2 R( k' f

  79. 2 X) J( F0 p  R4 ?
  80.         if (readparam(mac, stbid) < 0)* ~0 h4 F7 z/ O
  81.                 return 1;* I$ C3 `& g3 V+ I, _$ ]" `/ i

  82. 6 j0 S. n  v# L9 D% ?# e+ M
  83.         printf("Current parameters: \n");* P7 x$ S, F% Z+ f
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" {% j  d+ \- }4 s4 h$ W
  85.         printf("  STBID: %s\n", stbid);
    $ U. u9 v, y& B; a5 x# j. g* ?
  86.         ' o( X# V& [: n- U* X  t3 ]9 F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    0 h2 K" M7 R& t9 q7 i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; d. v0 T- W% P6 @9 Q9 F
  89.                 printf("Input MAC error\n");
    1 ^3 G- s6 w1 n
  90.                 return 1;$ p# j$ {' e( p3 J: E
  91.         }! L" ^" H& _# T7 J9 h
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 _% T. S3 {. z
  93.         printf("\nPlease input new STBID: ");, k2 R) \  M9 c# C
  94.         scanf("%s", stbid);
    , }$ b. i) J. l" T0 O: o
  95.         if (strlen(stbid) != 18) {
    # g( _" I5 C1 `: c- `( k4 q
  96.                 printf("Invalid stbid\n");
    & U! i! B$ N/ g9 F5 \
  97.                 return 1;: S6 n# U, g* H% r
  98.         }
    * U. s$ \1 n& m6 o# R
  99.         printf("\nNew parameters: \n");
    , @. e: T* [& k- g9 I9 H% O
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 L0 n: S3 N. D7 w  q  E4 N
  101.         printf("  STBID: %s\n", stbid);( U* L! ]( h  i& p) B

  102. - {, H  E1 ?; m0 \$ N
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    5 r; C2 X" w% r0 L: T
  104.         for (;;) {
    1 Z! S9 V3 o. \' W& \
  105.                 c = getchar();
    # D8 {4 }0 R% K$ f3 H; c
  106.                 if (c == 'y' || c == 'Y')
    & M5 M" l. K! H
  107.                         break;" i; g3 a* J& f; V
  108.                 if (c == 'n' || c == 'N') {
    $ Y& T* w/ ~' p& r. l% B' U
  109.                         printf("\nAborted.\n");
    4 v! c: S& C; s
  110.                         return 1;: d% H% T  [, w# v: H+ L# c, }
  111.                 }
    $ a: ^' H+ P/ \
  112.         }
    : o4 l1 J0 J( D; Y% h# I
  113.         if (writeparam(mac, stbid) == 0) ! O. M* b. s. u' |5 O
  114.                 printf("Parameters changed.\n");
    ( c" J3 C( Q7 Z

  115. % t$ n! k/ A! [3 N8 x0 E
  116.         return 0;1 s% x8 E) v3 H/ P+ K! q
  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 " P6 A& P) k2 Z2 r0 ]& R; V
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( B& b; L* V( p( q1 V. h7 @你用的编译命令行格式是什么?
, u' {; U, E7 Y! S# {& ]6 W
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

QQ|Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-19 21:34 , Processed in 0.032388 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表