查看: 17535|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    # d6 ~# D* C7 }/ N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( i, k- c8 _. ~# g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
  L. t: e+ O% R& a7 Jusage: himr <address> <value>. sample: himr 0x80040000 0x03 s. y% s- C* z( k2 s, g/ i5 I% g9 t
. |8 o; i% f2 Q6 ], t4 [; K2 F) p
7 C3 h$ M9 T  A! C9 E/ L0 X, f
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 m! z6 \6 S4 k/ D
# f* t4 P0 _' z. A8 v6 S8 F# S
补充内容 (2012-3-8 09:42):
* c2 s  o0 D" I, F, {http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  B) ~7 f8 C' d这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。8 r- C3 J; j8 O% L/ j

- O# o& @, i' o1 w4 m0 M  c8 Ehimr <address> <value>. sample: himr 0x80040000 0x0& T" e& h0 x- l
% a0 T/ {- h0 O- |& C3 g
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
8 v) M' m: L! q1 l6 O8 Q: n- }himr 0x80040000 0x00
: m4 a0 T- B5 r1 I7 Whimr 0x80040001 0x112 @0 H0 K8 o& ^" [9 `; h5 y
himr 0x80040002 0x22
- `- f/ H: P* H! Y" `1 T8 vhimr 0x80040003 0x33& E' H' f; t: k3 A* ]) F
himr 0x80040004 0x44
/ |/ b# |9 R: p2 ~% |" m- ihimr 0x80040005 0x55
: K. Q& h) ?9 Q* V
/ I7 k0 d  l( }% @) g- ~9 Z4 D8 uSN也是类似。0 X! w, a, l/ c' G5 U' @* e0 j/ _
: u3 x& ?- y4 P, n6 G
现在主要是,谁告诉我们MAC和SN的地址?
  b) W" h9 a& K+ z. g* F4 ]! P3 \1 ?
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ! g/ t5 \" H$ q! y2 g1 t: E0 m3 X
一直想找到运程修改MAC和SN的办法,苦于无解啊
$ K* p3 j1 A7 r, j
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 O0 P. a2 j0 w" L" ~4 J- {( @4 |

) F/ a4 P/ ]) F/ a( ]修改的代码早有了。到今天不会编译。
7 P# ^7 v- r/ T需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # z4 K9 ]7 ]0 w; L
  2. #include <malloc.h>
    $ l3 X4 A& n2 X" u/ \, c+ c3 ?
  3. #include <sys/types.h>$ d0 a, t: k5 p# z
  4. #include <sys/stat.h>3 m7 @, ~1 Q$ D, @7 L, o) v
  5. #include <sys/ioctl.h>' P! w  k5 N8 J+ R/ d
  6. #include <stdio.h>7 j) ]9 ?  ?9 A2 g# L! U9 |1 Z
  7. #include <string.h>) N, l- j7 ]0 W; v

  8. % ~2 `% x  L/ m! O; o+ y2 U
  9. typedef struct {: `, ]% w, r: b- K9 P: V' X
  10.         unsigned int        e2prom_cmd_sub_addr;
    # q# R8 r% b% t& d
  11.         unsigned int        sub_addr_count;5 z0 P" |) R! R0 c
  12.         unsigned char*        e2prom_cmd_data;! X$ N4 u3 g/ c- [% l$ {
  13.         unsigned int        data_count;. s- ]0 T( U' {" F
  14. } e2prom_s_cmd;. Q1 `8 b9 a. H5 K

  15. 0 P4 N, _8 L) ~* I
  16. #define E2PROM_CMD_READ 1. X- k' e" G9 W' r- D
  17. #define E2PROM_CMD_WRITE 2
    ( Y: k" N* c! c0 S3 R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' h# o, g9 k; D+ Y4 l+ I. }' i6 d" }) d

  19. $ k7 x. n5 ^* o1 M% T7 m: j! z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( k2 w- x. G3 G0 p) c' R
  21. {, T1 y: e3 d6 c
  22.         int fd, ret;( `( L1 I/ B( P, a' L
  23.         e2prom_s_cmd arg;  `8 o3 t- S" J8 t* w+ W; t# J0 t
  24.         unsigned char buf[0x18];
    * a3 D5 D7 u/ Z9 H* s
  25. 5 r$ Q) n- `2 [: B. S9 L' u. U7 b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# N7 L' a5 R  U2 }
  27.         if (fd  < 0) {' U- V. r2 g# t) e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 G% e( f$ T: m3 I
  29.                 return -1;, [& t* c* Z2 D' R
  30.         }! C5 C2 b* ~* Q: q6 i  ~0 w
  31.         arg.sub_addr_count      = 2;
    7 k; [0 {: `9 [9 w; \* T5 D8 g" ?
  32.         arg.data_count          = 0x18;+ ^5 \8 R9 i( k: o7 \, u: h
  33.         arg.e2prom_cmd_sub_addr = 0x290;5 J! s5 B7 c( J* [  {  Z6 s+ B
  34.         arg.e2prom_cmd_data     = buf;, z8 k) s4 l& q+ Y5 d
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);9 k8 h" S8 Y9 B8 e8 ^8 k$ }
  36.         if (ret != 0) {
    0 [$ ?' `  s# i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - @9 O! {1 h4 _/ O' {, C5 F' K
  38.                 return -1;* V. X7 B* T/ f; x* |5 {' g/ l
  39.         }
    - }* C2 {' i! J7 R4 U5 ]1 X
  40.         memcpy(mac, buf, 6);
    1 R/ O* q# o% L$ p/ \2 v
  41.         memcpy(stbid, &buf[6], 18);
    & l$ x0 @6 D1 o1 [
  42.         stbid[18] = '\0';4 ~7 p8 C3 Q7 a7 g
  43. 1 t8 c2 _! y( g% |0 ^
  44.         return 0;* o& s8 D: T: r! L) E. G' X5 ]/ e
  45. }4 o6 d  H) m( e2 Y2 H( h1 g5 x/ l

  46. ' e* d$ W7 A! z: E& q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : F3 i; W% W) ^/ }9 Z
  48. {
    - l+ S" h' J" @7 B
  49.         int fd, ret;5 _5 q5 H* ^( v, q+ ^
  50.         e2prom_s_cmd arg;8 L, ~3 W$ t9 ]& b
  51.         unsigned char buf[0x18];
    7 \7 s2 ~9 S7 I  P
  52. , f% M* f/ P4 [
  53.         memcpy(buf, mac, 6);
    6 y% D* L; d" D/ p
  54.         memcpy(&buf[6], stbid, 18);! V( T8 g: Z' Z; ~# m, b; ~
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# T: {  s0 ^+ w/ E3 U
  56.         if (fd  < 0) {% I; r  P6 r: [/ S. L: V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  x2 ?- o. \) v2 [
  58.                 return -1;
    " @# x. C4 w+ O3 y  J
  59.         }4 e3 i/ w1 e$ f+ w, }
  60.         arg.sub_addr_count      = 2;
    * I% x5 ]  Z) C
  61.         arg.data_count          = 0x18;
    9 R$ S7 c% T. M7 B
  62.         arg.e2prom_cmd_sub_addr = 0x290;; b9 |! o  c# Z4 i* h
  63.         arg.e2prom_cmd_data     = buf;
    ( z. ~% |* M  l/ y# Y: K* w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    # N. n6 q' B$ {( r+ o( k4 v/ ?& n- E
  65.         if (ret != 0) {! b  e8 X& z1 d! m5 n) A/ _
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . Y4 R0 D6 O8 W' a3 u
  67.                 return -1;
    & K; F# y4 a# x
  68.         }
    , K" u" z0 B3 ]* D$ g* M# h

  69. 7 y8 W0 }( p. g; }, _
  70.         return 0;( y6 m. H" \( y3 M- I0 p
  71. }: x' p; F* Z/ z. r7 e" C

  72. + J/ X% M3 d$ d; o: e6 x6 N$ }- Z
  73. int main(): k: g9 ^+ I: F  _9 O4 ^( k  p8 A; X
  74. {
    " w) e) l* |+ L. G( K8 B* l5 w5 Y
  75.         char c;
    # D/ ]' w# F8 m+ b8 j
  76.         int i, macs[6];0 _" c, x; E: s: R* s# _9 F
  77.         unsigned char mac[6];
    9 m/ w5 }5 O/ D; P! y9 d2 G4 S
  78.         unsigned char stbid[256];
    3 W: j4 H# U  o+ n, q) ?4 C
  79. ) Z8 d* l3 ~* u- b
  80.         if (readparam(mac, stbid) < 0). E# G  H+ p) W- b3 A4 S
  81.                 return 1;
    ) D; ~' i* e* B' j5 q

  82. . y1 s1 T, Y7 I% d% e. ]# B
  83.         printf("Current parameters: \n");  _7 P; ~5 T; f6 O+ n# v- e; v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 z3 ~! v1 P3 |6 {. C+ G4 k. O
  85.         printf("  STBID: %s\n", stbid);
    7 n7 e$ R/ |  D! Q) H6 x
  86.        
    9 D3 e4 D7 s0 c+ U
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ v% n+ I$ l# i- }  [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    , U' q' K& j( K7 j9 I( R# g" V
  89.                 printf("Input MAC error\n");
    + {2 C/ D( q- i, F  e  u
  90.                 return 1;
    * B) V2 p* {( ~- i  N9 a
  91.         }
      |" {' R* L9 i( O! H
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - Y( e9 ~  G+ ?7 z! o7 @
  93.         printf("\nPlease input new STBID: ");
    % c* R1 C& T1 }! ~* O5 j
  94.         scanf("%s", stbid);
    : l; \7 g& {) p  V
  95.         if (strlen(stbid) != 18) {
    6 Q* p: G, w7 x3 }0 R( N; t* n$ F
  96.                 printf("Invalid stbid\n");
    % H; ~4 I- u& G0 c) \
  97.                 return 1;6 v3 P( P5 k0 U8 |% o
  98.         }
    8 I6 p. c; E" g6 J* Q
  99.         printf("\nNew parameters: \n");
    # S9 J- i3 O  Q8 F9 D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + ]9 Q1 `5 }& ~$ Q1 g  k, G
  101.         printf("  STBID: %s\n", stbid);
    , B9 O3 ^/ P7 P

  102. " _* H3 L) o! G  \$ f
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 J# M4 }! q8 l$ [7 K' H
  104.         for (;;) {
    ( t( s3 j( S. d* ]! X% `$ }
  105.                 c = getchar();+ j. M: E; _, J4 p
  106.                 if (c == 'y' || c == 'Y')! \3 t; @& i+ x8 K% c0 u
  107.                         break;3 x$ y' _) P1 h) z( ]+ D+ R, J
  108.                 if (c == 'n' || c == 'N') {
    * V) ?) ~( Y" g
  109.                         printf("\nAborted.\n");, S( S8 M* ?* Z! R6 r% N
  110.                         return 1;
    - _  S% M9 i& c+ r8 h6 [7 Z3 ]7 G
  111.                 }/ u5 p! {- R* @  A: y
  112.         }% B5 Z/ {+ K7 @& S' [
  113.         if (writeparam(mac, stbid) == 0) # ^/ @+ M, C1 p# g
  114.                 printf("Parameters changed.\n");
    ' v5 R0 ^& E" x$ H; R+ `" p  c
  115. - j% P, B7 e* i+ {8 B, L. ?1 V
  116.         return 0;
    ( A) c# W; I# @9 i! w" W8 C! W( m
  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
' U& n7 J7 @( S9 `在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 _! ~: |8 K0 f- \你用的编译命令行格式是什么?
& W7 J$ I+ B) U7 P, j, g
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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