查看: 17853|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr1 x7 M. v4 N8 l$ d0 e) q. I
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . u  h$ f" G7 ]' y: @+ F# [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 Z) d3 v- w; ^5 m' Z5 @) b
usage: himr <address> <value>. sample: himr 0x80040000 0x0
. }$ o+ x5 _9 u6 `# [7 d. K: n9 [1 t) H2 g3 M/ a

& Q' J! }% U2 S' J- u! r8 S不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
% c( `8 u7 |' B+ N( m7 U- _# `9 K. S) Q! o1 m
补充内容 (2012-3-8 09:42):, b8 M! U: ~' Z" T9 l; O
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 Y9 r$ C" F! w这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。( K7 g$ p1 B7 i7 C0 z
, k# I% O4 S8 S. d/ V$ X/ ?+ J5 L2 W3 ^# _
himr <address> <value>. sample: himr 0x80040000 0x0
; u( v: r) [( a5 g  m, J* V# p; Y1 X, T* x1 g
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* a: k) h6 _# a8 o3 g: v( q5 K
himr 0x80040000 0x00
. A+ M" q. Z5 N6 Yhimr 0x80040001 0x11
; }) w2 |  |  d' Y) Q0 s, whimr 0x80040002 0x22
9 m8 R2 \. W: qhimr 0x80040003 0x33
% G7 F$ X; T, i5 `6 k2 |' ?himr 0x80040004 0x44
1 r2 k5 A# ]+ Q8 Uhimr 0x80040005 0x559 e) x& M. R1 f
. V# Q. `0 W' `4 d2 l( a; L
SN也是类似。
! y" \! W0 I* ~2 T$ g/ f# p. ?9 a3 a& ~4 I- k4 T+ C3 C
现在主要是,谁告诉我们MAC和SN的地址?
+ Z6 q( w" P" ?8 W; B
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% l% A* h* T9 X( S  p3 N) s一直想找到运程修改MAC和SN的办法,苦于无解啊

" f8 g8 T4 C% j源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ L8 M7 r' L. q4 G1 M
2 S3 `4 u8 f; g修改的代码早有了。到今天不会编译。
4 C& w- L/ k; s8 D需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 Y" Z# |, g* e  W% w
  2. #include <malloc.h>% p; q+ @$ l5 u, Z2 c
  3. #include <sys/types.h>
    0 f- j1 s. g( F( `9 g
  4. #include <sys/stat.h>7 t' W& n0 y% l4 z. ?) h( L
  5. #include <sys/ioctl.h>! `0 T* `3 e, z2 B
  6. #include <stdio.h>4 s* U8 S: e1 M& d: S3 ?
  7. #include <string.h>4 q, V2 v  }; P$ w
  8. 3 \; k$ b+ r/ S2 Q. W2 Y& U
  9. typedef struct {
    , E5 h% f% t& ]" j$ Q
  10.         unsigned int        e2prom_cmd_sub_addr;9 `3 R/ L% z/ n2 T
  11.         unsigned int        sub_addr_count;6 e" F4 {5 L3 d/ u  V, _
  12.         unsigned char*        e2prom_cmd_data;) ?; Y$ f5 R* \6 v6 M* z
  13.         unsigned int        data_count;
    ( v' i0 i$ v% Y' l+ H& ^
  14. } e2prom_s_cmd;7 _5 x8 `- G/ F' ~' W7 l, ~
  15. & l" F8 ]' f3 K: R3 {
  16. #define E2PROM_CMD_READ 15 J9 m& _. n5 u7 m; R0 h5 d
  17. #define E2PROM_CMD_WRITE 2
    & W7 W" d6 B* e5 Q. O7 L
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( c, _: ~. d' ]) y$ a6 i! R
  19. # j2 m; c" F, N5 r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 i# F4 t5 \3 x
  21. {4 V$ r+ J% b8 E  i5 n
  22.         int fd, ret;$ L& K7 B8 @$ y4 M$ ^7 w
  23.         e2prom_s_cmd arg;
    $ y# J6 `. e( M1 ~4 {5 c6 X( J
  24.         unsigned char buf[0x18];
    ' K7 c- |, m4 |' `

  25. ! v" G8 T7 ]9 e) N3 z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( _1 v  p5 ?% {9 ~3 l
  27.         if (fd  < 0) {% B3 H/ |" F; p8 q- F! r2 p9 c" Z7 z( J1 m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# V3 ?% S$ {$ q4 }
  29.                 return -1;
    7 t3 A7 n2 {9 E% S  W0 |: [
  30.         }
    ) O- b0 v5 R" J3 N( ]
  31.         arg.sub_addr_count      = 2;
    9 ^/ n4 ]$ c$ l+ a
  32.         arg.data_count          = 0x18;% d. G' P% y/ v
  33.         arg.e2prom_cmd_sub_addr = 0x290;$ u+ H; \* J1 Y, i4 d
  34.         arg.e2prom_cmd_data     = buf;0 V/ w  f6 T8 C& ]) V( T) M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # {1 u0 k( q4 ~
  36.         if (ret != 0) {: w7 D/ H/ \; Y  H  K) R' h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 }  }" Y/ R7 @$ P4 H2 C( M
  38.                 return -1;
    1 T5 u' p& w6 j$ b
  39.         }
    ! \( M* Z& e* R  A' D% H% @0 R
  40.         memcpy(mac, buf, 6);
    $ ?  `9 @, ~5 Y. E# E/ v
  41.         memcpy(stbid, &buf[6], 18);
    ( f$ B$ Q+ r7 k$ ]! Z5 u, r: S! L0 g' B
  42.         stbid[18] = '\0';
    7 V! _" e4 {* v; L; g4 N

  43. 8 Z; Z( o& a4 ~; E$ E* v/ J
  44.         return 0;
    9 D6 g% x8 P& k. L/ y# [
  45. }; W' h0 j( w1 K3 q" f3 ]' Y, J
  46. : M3 M9 D4 h8 I* O5 T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / M/ U* T1 ^0 s0 j3 m
  48. {
    9 v' S5 u- o4 }* K* P* N& D
  49.         int fd, ret;
    & M1 }9 ?6 [# O1 Z$ N  {  N
  50.         e2prom_s_cmd arg;
    3 }; C" T$ P2 k" m6 z; h' k, t) g
  51.         unsigned char buf[0x18];/ T- k- B- I: b( L; w
  52. / ~4 r1 ^/ G, F8 q$ ~! \& O- R
  53.         memcpy(buf, mac, 6);
    ( i, N+ E  k( K
  54.         memcpy(&buf[6], stbid, 18);
    % ^! a! H" F$ R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 _& s2 ~( l6 b* S% ?; E6 o
  56.         if (fd  < 0) {
    + g, k! e' d8 i% `
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( N" M( P8 r" _" \! K; v2 A6 ~
  58.                 return -1;
    ) Z. E+ E2 A4 }8 d
  59.         }2 b1 ~" z- c, M/ m1 E
  60.         arg.sub_addr_count      = 2;
    4 a* H! g; l* @2 ^) [) g8 t8 A
  61.         arg.data_count          = 0x18;7 j' A- q3 c0 f
  62.         arg.e2prom_cmd_sub_addr = 0x290;: H# o6 b8 t4 N+ F* I( R
  63.         arg.e2prom_cmd_data     = buf;
    . U3 U1 R+ Y/ g  ]% X' M
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 g* ?- i0 ?% B1 j+ Y' h  p" [
  65.         if (ret != 0) {
    0 F" |+ g+ m8 l- Z. w9 n0 F3 h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! u& [; p" s8 R8 @& r. F" u2 t3 J
  67.                 return -1;$ }+ K* n/ u; Y1 C' a! s2 S  o
  68.         }* |, }' l6 d; ~! m3 ]4 l4 H- [# V% e
  69. 2 t) f* A+ q1 U/ C, b; C0 {1 c8 ]
  70.         return 0;
    1 Z$ ~: v0 n$ i. P
  71. }
    ' U/ u# e3 h, K7 Y# j5 N" I

  72.   Y+ m% Q  s' I5 p" [7 k* f
  73. int main()
    . t! Q6 M* q4 h7 G. A* K0 G
  74. {
    - }; H* r0 k% a' x* ?, [
  75.         char c;& b8 H! K9 Y1 L
  76.         int i, macs[6];0 z  \2 O& {$ [2 F/ J' M, [
  77.         unsigned char mac[6];
    # k* Y# p  M; S
  78.         unsigned char stbid[256];
    + ]$ c% m! |4 o" s% g1 l

  79. / V4 Y' P& G( v" ^3 H# S9 f! ]
  80.         if (readparam(mac, stbid) < 0)
    7 [0 X) R+ P* W4 b2 t
  81.                 return 1;9 Y. S4 u$ [7 w& l3 a
  82. ! X' j0 g0 V) b9 @8 g
  83.         printf("Current parameters: \n");8 |9 g. ~$ a1 j9 o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 v2 Z2 h3 K% b3 J$ t4 R
  85.         printf("  STBID: %s\n", stbid);
    - H* n, _7 U3 j
  86.         4 \7 f: V- Q6 n" I6 |
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ v5 h3 ?% N: y2 b
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * H0 m9 W% r9 u2 t; I/ F( k
  89.                 printf("Input MAC error\n");9 q5 T+ l; D/ M+ D% P5 Z& u5 A- R
  90.                 return 1;/ b6 t8 @) h2 i; q, p
  91.         }6 r, b7 |1 H! y6 @# c( [- z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # A4 q" A+ K/ z: I
  93.         printf("\nPlease input new STBID: ");9 W7 @; Q8 [4 L% o  q- ]7 K
  94.         scanf("%s", stbid);5 }; l4 o; M% ]1 s- s% q0 t3 P
  95.         if (strlen(stbid) != 18) {) p$ X4 o2 g& R7 ], V
  96.                 printf("Invalid stbid\n");: x! a" A  R6 v# f) j: J/ F
  97.                 return 1;5 G- j& N# z1 `" b
  98.         }
      L) K1 w3 F  G' N6 H5 B* \
  99.         printf("\nNew parameters: \n");! G( u$ D8 r, y: Y( w: N+ H
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 C8 _5 X+ @: i
  101.         printf("  STBID: %s\n", stbid);
    ' C) O9 l* G$ P. J% r

  102. : {. D: m6 `) p  ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");  B. ^9 J8 O0 ]
  104.         for (;;) {' p" l- X/ {0 `+ j6 N& `
  105.                 c = getchar();& ^4 M/ `6 W2 ?
  106.                 if (c == 'y' || c == 'Y')
    ; Q6 K2 h  W4 m, p5 p- g. k- J
  107.                         break;
    6 h$ B0 B+ f* ?0 A+ Y
  108.                 if (c == 'n' || c == 'N') {% N3 R% ~! l+ a' F* v( L
  109.                         printf("\nAborted.\n");
    / t$ h% D$ K7 A9 L
  110.                         return 1;
    ( ^4 |3 d! g4 H" r8 V7 s1 q( Z( s  y
  111.                 }
    7 m5 c8 H, D. c; }# S- ~3 @, ]3 h! N
  112.         }/ z$ y8 F5 A! S. T/ ^
  113.         if (writeparam(mac, stbid) == 0) . @  [; d6 k% B" H" H9 ^
  114.                 printf("Parameters changed.\n");* F0 a; Y* c9 I% e! B

  115. 2 m  X* l' s+ E2 B& ?
  116.         return 0;
      G* f+ Y+ r  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
) H0 s$ ~- L5 ~! ^6 l在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' h# g1 r( ^- Y
你用的编译命令行格式是什么?
3 s+ g0 C8 M8 H- ?, @8 {
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部