找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15015|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . ^: i7 M6 \( u: r1 b+ q8 h% n
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 c+ G  \  d, b2 ?; [8 |
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% P. Y+ G/ A$ X, w0 U3 y
usage: himr <address> <value>. sample: himr 0x80040000 0x0
6 D2 V+ V8 H1 H7 c* h7 U1 D6 T& X: E' p) U) i4 s, S
& b$ w; {3 V$ m/ W$ y5 e
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
% I/ q$ |: t9 b3 g
" O  _* L& s7 T补充内容 (2012-3-8 09:42):
1 R! V! p# r/ Nhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" c1 m( n1 t: Q8 k这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
' n- n1 R; v! W8 A( t
9 r+ x  s9 q) l( Y0 c1 qhimr <address> <value>. sample: himr 0x80040000 0x08 m+ {. n$ J, Y7 |
7 Y. w  r: F  m# S5 W2 Y
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  n+ S0 d$ ~0 c
himr 0x80040000 0x00
$ e( C- Z% ]& B3 B0 P$ lhimr 0x80040001 0x11
  E3 u) o/ ^1 C7 W' I7 nhimr 0x80040002 0x22
8 x* M: z4 A/ `, e( k1 i+ c" f. g+ ^himr 0x80040003 0x33
/ a( s0 K1 h5 b) c0 D3 Dhimr 0x80040004 0x44
' ~0 J" o6 n2 o9 P% D1 Ihimr 0x80040005 0x55
1 d1 F$ g* g  R) e! o8 p2 j- u- _* A( e' ]* Z
SN也是类似。
8 n- j2 _: G6 l% T) s3 s# s0 }: [4 d  z$ g+ o/ B  U
现在主要是,谁告诉我们MAC和SN的地址?4 a6 d9 _9 C. Y) I' N
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ b) d! i( w2 g8 w一直想找到运程修改MAC和SN的办法,苦于无解啊

& e1 [2 |; X7 I9 W源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + Y/ _4 ]1 s6 |2 b2 h1 j

8 ?( c; N5 f6 {修改的代码早有了。到今天不会编译。: j2 ^# n  A  x( z7 Y5 g$ l
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( l# e3 X9 e+ ]" S" h# C
  2. #include <malloc.h>
    8 `/ K4 p8 |4 T2 k
  3. #include <sys/types.h>
    0 T# x& z/ p7 V+ K
  4. #include <sys/stat.h>
    + Y  ~9 _# N$ r4 L2 F+ k; w
  5. #include <sys/ioctl.h>
    7 T. F- W5 a$ w3 f
  6. #include <stdio.h>' ^+ K+ }  Q+ x- M% `/ f
  7. #include <string.h>9 b6 ]( N- ]6 _- O+ I- P7 Q
  8. # X0 J5 P) }( ^6 p# w6 M3 ?* `" X  j) ]
  9. typedef struct {
    6 W' z3 @' q- ~" i
  10.         unsigned int        e2prom_cmd_sub_addr;3 z3 k9 l0 F( l" E& T4 o
  11.         unsigned int        sub_addr_count;* ^3 l1 c1 f# f  X  V: |1 D% ?
  12.         unsigned char*        e2prom_cmd_data;9 F" z0 \" m- N* Z
  13.         unsigned int        data_count;
    9 J/ s# j3 S. f5 v  @  t' s
  14. } e2prom_s_cmd;% b0 @( F1 H; D4 p! s
  15. * c! S# g/ R, g. i6 x7 P8 [* M* W* H
  16. #define E2PROM_CMD_READ 1
    ' Y! x8 @0 R" ^/ G
  17. #define E2PROM_CMD_WRITE 2
    ; X5 m) U* R6 W1 \) N2 X0 `1 ~
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% B5 _+ a- ]% [  x# i9 x: D6 P

  19. ; E0 n% X& D! i4 f
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ Q; ~. o" L, w3 v+ e9 `9 C
  21. {
    3 K, j. t0 T8 v& T9 l9 O
  22.         int fd, ret;! v! U" }& T1 d5 o  t
  23.         e2prom_s_cmd arg;4 ~, f' n+ R# C5 Q
  24.         unsigned char buf[0x18];; x5 P0 U6 @9 m8 b7 w' p+ q4 G* O

  25. $ V& D9 X" E3 O2 ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 F- W: C$ V, a6 [2 k3 l8 d
  27.         if (fd  < 0) {1 v+ I  k' C) |2 D% }
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ L, z$ M2 V7 |& G9 v
  29.                 return -1;% n0 m8 I- K) k% l4 U
  30.         }
    + W7 R& z2 S% T$ O1 C! K! j
  31.         arg.sub_addr_count      = 2;; h3 J! f3 g- z2 F0 d
  32.         arg.data_count          = 0x18;! d) R2 l! L8 S6 ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ `2 i/ A$ Y! U5 H. ?; W
  34.         arg.e2prom_cmd_data     = buf;3 _( Y0 M) {* L- G) X
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# {+ s# p9 c* D% i! I2 ~- \0 D) z3 c; P
  36.         if (ret != 0) {# ]- h2 {3 u. t3 {- |# j1 o* a
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # j; @! n" H1 W) q+ P
  38.                 return -1;
    ! |2 Z8 Q  o! p: @) J- q# E
  39.         }8 c( r' ?( A& j
  40.         memcpy(mac, buf, 6);# d* w7 [. ^6 z; q0 p9 B* W: S
  41.         memcpy(stbid, &buf[6], 18);
    7 ^1 q8 v6 i* z
  42.         stbid[18] = '\0';8 O. r& x) @$ F7 c+ L4 f% j/ e% \) Q

  43. ( s) X/ V7 k+ s& L, h7 F
  44.         return 0;; a, o& V' v/ C4 F* y
  45. }
    ) z( r! e: h1 l
  46. ( c6 y! Z. x$ T9 m
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # a. {% e  E* h2 h8 s5 |
  48. {
    3 x& K+ U6 e& t5 q: [
  49.         int fd, ret;+ [" x6 @' F' g
  50.         e2prom_s_cmd arg;! ^; k; j- A. h5 I5 S, [; O# C' r+ B
  51.         unsigned char buf[0x18];0 U6 T8 ]$ d" E9 T1 U1 g

  52.   l8 G( ]/ b8 l; c* }
  53.         memcpy(buf, mac, 6);
    4 G& i2 _, H. M& a# W6 ^8 l( ]
  54.         memcpy(&buf[6], stbid, 18);7 n0 m5 n4 a, H( ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);8 p8 J$ o& H) ?" B0 n
  56.         if (fd  < 0) {5 e" s; Y% [/ ?  t# W8 b
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , h( E) |. g3 f
  58.                 return -1;( Q/ {( O$ q: }, m3 g2 i) _! I
  59.         }8 M, V+ [' p* R1 ~$ b
  60.         arg.sub_addr_count      = 2;7 T- l/ e4 K0 l+ U
  61.         arg.data_count          = 0x18;
    2 D; [3 U% M) j. P* \
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 y5 ?. F  R$ M. {  ^- R
  63.         arg.e2prom_cmd_data     = buf;
    5 ^( L5 ?5 n0 e( y9 h, A
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);, \/ {5 U7 `9 K% F# P% G+ X5 ?0 z
  65.         if (ret != 0) {
    $ }9 `1 O( m' {' F* x2 u6 x. b
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# p- l& ?$ a/ S; f6 `/ M
  67.                 return -1;
    3 ]0 r$ r; G' q0 a$ [; ^# q. p% U
  68.         }
    & S, d% r" [& x. Z# M+ m1 c0 `

  69. % i$ {. R& S/ }* R( c) [8 d
  70.         return 0;! l; E. y; r3 A$ a
  71. }
    ! N0 p$ T) k: G1 ^
  72. . f# Y( Q) u! r( o: b4 S
  73. int main()
    . t" r/ w, Y5 @6 V+ [2 E
  74. {- z( z4 _3 H9 c& V
  75.         char c;
    3 B% y, d/ @3 f4 _
  76.         int i, macs[6];6 Q9 F  q% A8 W/ W5 b
  77.         unsigned char mac[6];/ L  n4 p5 H& Y, V9 g
  78.         unsigned char stbid[256];
    $ J+ M7 D7 u' t: [6 G2 S6 [
  79. + k& \' k3 n* F1 w$ o. }7 ^4 Z- l: X
  80.         if (readparam(mac, stbid) < 0)
    : O8 m( |3 q! l% c8 U
  81.                 return 1;
    5 i7 n' V  i  {7 \. P1 i
  82. ' s4 `1 \% b) V' \4 |/ t
  83.         printf("Current parameters: \n");' z) V$ @; @$ L2 _! Z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * @* F/ c1 D: e% j/ w2 j! [3 d
  85.         printf("  STBID: %s\n", stbid);
    : i9 T  m' o% h
  86.         * p3 X3 c$ t! [# H1 D
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");) @: ~5 D% }4 f  t' H7 h
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ! W: d# E- r. }8 N3 G& Q6 u
  89.                 printf("Input MAC error\n");
    # l5 o2 {0 v) E  L, A+ H
  90.                 return 1;/ e2 h( q8 r4 G" T: ~/ k" k
  91.         }
    # b! o, W) {$ K# U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 `0 t) i- P' P! [" ~2 l5 e
  93.         printf("\nPlease input new STBID: ");' T! W8 ^7 |& |1 @0 |- J# v  @
  94.         scanf("%s", stbid);
    " s2 ]0 m5 K& C0 P2 d3 y
  95.         if (strlen(stbid) != 18) {
    + |( S1 A! r# j+ a
  96.                 printf("Invalid stbid\n");
    8 W9 S( m. x" {9 j0 S
  97.                 return 1;7 H! m- V4 H2 a/ M% Y! b- Y
  98.         }& |! E- j- P9 B% O
  99.         printf("\nNew parameters: \n");
    4 S$ g0 o" O, K5 p) X# b0 U8 `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! _* ~0 @( P1 N3 O" L
  101.         printf("  STBID: %s\n", stbid);8 r$ G+ ]9 O6 @' y' P" L
  102. 2 O2 h- G' N' J! J# K3 x$ h
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( k* b8 G8 n) _: z6 h2 q
  104.         for (;;) {
    4 B% ^1 ]: A( d* s
  105.                 c = getchar();% G2 l  \3 m/ i/ x
  106.                 if (c == 'y' || c == 'Y')* J$ A/ W  N; w0 _! l
  107.                         break;
    . k% @0 K8 n& [- x/ @8 i' s
  108.                 if (c == 'n' || c == 'N') {4 N" _# k) M; s8 \" G! r! l
  109.                         printf("\nAborted.\n");
    7 u5 o, S8 X) [: E+ m1 k. m
  110.                         return 1;, Q! O& f& Q/ Y# _
  111.                 }6 g( C! N6 K) ^0 b1 K
  112.         }, E) }5 ~% F" A7 y+ \: _& G
  113.         if (writeparam(mac, stbid) == 0) ) Z8 \, x& D6 {6 Y8 c
  114.                 printf("Parameters changed.\n");$ p8 E" w$ [, o( Y9 f4 H% V
  115. . ~- O4 ~# v  O8 ?  H" L6 C4 Y
  116.         return 0;. k' n3 ]( 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 : l+ S3 Z5 N$ Z" M: V! I6 [# k' m4 U
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 K' r/ F  r0 N! w0 R
你用的编译命令行格式是什么?4 {. u% J, ^) f/ H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-10 13:05 , Processed in 0.027921 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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