找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15650|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    % l/ E: |# M: X# R! ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! p3 I! [2 `8 H
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:7 p& H6 f5 K; {; K
usage: himr <address> <value>. sample: himr 0x80040000 0x0; A. n* C( R+ J; S/ D
; K# g' M$ I+ p( p+ _0 `

" I) K2 G4 ]2 ~; c0 {不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 @0 c$ C! m4 ?" e2 S1 E
# D4 F1 B$ R/ S5 I0 T$ W9 v补充内容 (2012-3-8 09:42):' Z$ c1 f- |5 u' C% w- C
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数4 @, v$ @9 [# G6 Y, U
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。* G) K2 W$ b/ B* e# s" p, a- o
7 J) c4 ]/ T0 ?- ]
himr <address> <value>. sample: himr 0x80040000 0x0
% w2 J3 W$ u: C& ?, K
* l( R! s) x' c' w, Y% j# t例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: b5 F# R6 q  e  m7 k4 N5 uhimr 0x80040000 0x00
4 D/ O7 D% h' b( ghimr 0x80040001 0x11
# C$ |6 F5 P' W% K9 @himr 0x80040002 0x22
4 i  r( {, j/ M) {& i; Jhimr 0x80040003 0x33
4 C' O6 Y) N8 Chimr 0x80040004 0x44
8 ]. `8 t+ L, y0 yhimr 0x80040005 0x55. a  e  p! ?& C4 P4 }2 p% a

+ t3 ?1 Q1 K: z3 bSN也是类似。
8 Y7 G! _4 G* A1 d% J' g4 \* q6 |( P6 l8 T4 F
现在主要是,谁告诉我们MAC和SN的地址?
# _  T0 U3 P( t; J7 P
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 `3 o! I9 X0 P: d一直想找到运程修改MAC和SN的办法,苦于无解啊

; M, @% `! p# {- Z6 [- a源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, n9 e4 ~* a* g' @2 E: w8 m1 O
修改的代码早有了。到今天不会编译。
, s* ~1 B; n! c1 d2 j+ ~) g! h需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 p. I6 e. i2 _" t4 X) D2 c) _% B
  2. #include <malloc.h>
    7 w' C; Q0 I4 S3 j
  3. #include <sys/types.h>
    1 O; h+ p! r9 M9 f
  4. #include <sys/stat.h>
    2 t) P; U2 R+ v1 K1 l- F' \
  5. #include <sys/ioctl.h>% \8 e6 q  Q& O9 L
  6. #include <stdio.h>' w8 s8 t# [( c4 t# n" ~1 y6 U
  7. #include <string.h>/ m. U3 ~* `; l4 [  d; G

  8. 4 ?! Z/ o* W# a/ N6 {/ b' r
  9. typedef struct {
    0 D8 d2 F" ^6 f; ?0 v' y
  10.         unsigned int        e2prom_cmd_sub_addr;( Y4 _: z- J3 N3 B3 R8 J0 ^
  11.         unsigned int        sub_addr_count;0 B$ o  \, ~6 y5 g, H5 C0 ~3 K
  12.         unsigned char*        e2prom_cmd_data;7 L) A0 ^& X: ~
  13.         unsigned int        data_count;+ p, |! |+ ]" c+ |$ t
  14. } e2prom_s_cmd;, j. C  V: ]  A3 C/ t: ?0 b$ C' Y

  15. 1 j# e1 V" B3 ^* x' x
  16. #define E2PROM_CMD_READ 17 D- c: y' ~  G
  17. #define E2PROM_CMD_WRITE 2$ r& f; P2 D/ A) `5 H
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    4 M: `5 |( O7 w7 M

  19. 0 ^. M6 J  _; E! f
  20. static int readparam(unsigned char *mac, unsigned char *stbid)' O" P/ Z" ?( `% W
  21. {
    ; l1 H# H0 r: r) L- g
  22.         int fd, ret;+ I' H/ r; D: d* I, {0 g6 O! `
  23.         e2prom_s_cmd arg;7 E) x* S1 D* b
  24.         unsigned char buf[0x18];
    0 _8 |: i1 G" O  F
  25. + i6 y% G# ]+ o
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 H, s/ M+ ^  Z; Z& W% h2 r. ?
  27.         if (fd  < 0) {* x9 m- u7 a# v- @! _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( e$ P5 S. a3 z# S: S* U
  29.                 return -1;
    7 D4 I; H* \" S) ]& ~7 M7 K
  30.         }
    ) e/ J/ u$ G: y  F
  31.         arg.sub_addr_count      = 2;
    # U, o7 l5 R7 N3 h# h) T
  32.         arg.data_count          = 0x18;
    9 q& W/ @* p, A2 [+ S6 H4 F7 u
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ! X; S8 t2 `) A0 }  q
  34.         arg.e2prom_cmd_data     = buf;$ H6 _  w3 {. g! }) J- @5 i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);  j2 i) U3 A( @% y  w8 H! L) m. A
  36.         if (ret != 0) {
    5 b- h# M$ c7 A* m, b; x3 R* i2 X
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 H. R2 ]2 o0 i. F$ v) J! j
  38.                 return -1;
    4 C/ b$ O1 x( O2 w. H& Z, i1 D
  39.         }
    9 V! {  k! \% K7 x8 }0 g4 |
  40.         memcpy(mac, buf, 6);
    2 S6 X' b, `$ F; p) K6 W
  41.         memcpy(stbid, &buf[6], 18);
    ; f9 n( p  r. m" t# `( D0 H
  42.         stbid[18] = '\0';
    ! U2 `  N2 f6 E' |6 ]" s$ D5 X

  43. ' y. k) r4 D  B4 ?/ g
  44.         return 0;
    4 E% O- ]5 ~' q6 t
  45. }
    & ]; v( K* A2 Q/ X/ }: g9 ]

  46. $ L- K" @8 a) W% l+ x: [, ]% B
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- q/ ~2 w, @# Q9 O1 W+ h2 ^* w8 i8 b
  48. {0 @# ]" v5 C2 k2 \. D% e0 e4 J
  49.         int fd, ret;5 [5 Y: n6 f2 [  C6 X( x
  50.         e2prom_s_cmd arg;
    8 m7 Y1 @# n. g$ H
  51.         unsigned char buf[0x18];! x$ H6 \" O' i- C0 l. z# @
  52. 8 ^  V. I- y2 l" E* p0 s
  53.         memcpy(buf, mac, 6);7 F" d8 o' i7 m2 E4 J4 v
  54.         memcpy(&buf[6], stbid, 18);
    5 L. c3 J8 T6 W  d; E7 x4 r
  55.         fd = open(E2PROM_DEVICE, O_RDWR);7 S6 a4 W+ r/ E( d
  56.         if (fd  < 0) {) H1 Z1 G6 B8 o1 \6 k6 [4 e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! {) R5 i  f! z( @- ~9 o0 n$ ^
  58.                 return -1;! h' a" E; K: f/ n% }1 u  c
  59.         }
    % S" f- k7 y# l! R
  60.         arg.sub_addr_count      = 2;. s7 n' ~, c4 F" n, @
  61.         arg.data_count          = 0x18;$ B: y' k# l0 }! _6 u$ P3 g
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 F8 \' y( h5 F4 X" {% r
  63.         arg.e2prom_cmd_data     = buf;
    2 ^# S! z/ ^; ~+ t, T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    6 z- L! w2 W) p
  65.         if (ret != 0) {2 d6 m) s0 v. x) x
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ' m( f4 D# R) l8 U, o: D, q5 W
  67.                 return -1;8 ^" r5 J* E* X' a4 ]
  68.         }& }% O8 o- p. X2 l$ g, x

  69. ' S/ J: F* M! y, Q
  70.         return 0;  p1 h* g7 C, z# ^4 q7 G+ [1 a
  71. }" y' ?( ]* B4 y) ^( V) q
  72. ) ~/ c& C* U/ U& z
  73. int main()
    + _/ Y5 x/ m, Q% R' {
  74. {/ b; }* Q! F2 N" R8 S/ \# b
  75.         char c;
    ; ]8 O4 K8 @2 d6 ?
  76.         int i, macs[6];
    - C& _( D$ E5 o# F" w
  77.         unsigned char mac[6];
    % j9 V+ S( Y0 Y' _( `, n6 m" F
  78.         unsigned char stbid[256];( g2 |/ u: I" A8 K1 U4 |! b. b  _/ ?1 T

  79. ; M+ r+ t5 _# \; g
  80.         if (readparam(mac, stbid) < 0)6 t4 H. ]8 d) b6 @, H
  81.                 return 1;
    9 V( G( [: O! q& C( A5 R
  82. 4 O# C8 V3 U* T5 g1 f7 \, R
  83.         printf("Current parameters: \n");, D# m$ i( v/ ~( b$ @
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 S) b% u5 D* r1 F  D/ x
  85.         printf("  STBID: %s\n", stbid);: Q# Z- t4 H8 n4 X! V4 v5 C: g' R
  86.        
    * G) Z* G" ?- j( Q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");4 k6 g3 o9 k0 A: O. q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. a+ B9 h- y; }; v
  89.                 printf("Input MAC error\n");
    & V/ M! q5 ?2 l* {
  90.                 return 1;* N2 a" R2 `* J' e  P* [
  91.         }
    7 y4 y% {5 }& F  d9 P) m* d
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' f6 h# Y& r% \7 d
  93.         printf("\nPlease input new STBID: ");
    7 _" m3 n" m8 ~6 s3 {7 G. a- }: X% W
  94.         scanf("%s", stbid);; x( n9 m1 i/ n5 Y0 k+ Y6 B7 Y
  95.         if (strlen(stbid) != 18) {+ B+ U1 K% _, \4 S' [7 G5 I
  96.                 printf("Invalid stbid\n");
    ; _8 h$ j! N$ Z+ v& Z
  97.                 return 1;: E9 f6 h1 x4 L3 z4 {
  98.         }' V1 s; H8 g! ]) l7 T& X
  99.         printf("\nNew parameters: \n");; J* j# g5 g/ i( ?  Z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 C- p7 j- y6 v$ N
  101.         printf("  STBID: %s\n", stbid);
    ; ?/ r# W/ H  J9 x7 A

  102. 7 ]6 r& s7 u  }. s: x0 |
  103.         printf("\nDo you want to change paramemters? (y/N) ");; a" k0 I! I4 W) A* g, k
  104.         for (;;) {" W! F/ d7 k$ ~. S- `, J
  105.                 c = getchar();
    ! N5 e  ~& b; @& A/ T1 r2 F
  106.                 if (c == 'y' || c == 'Y')
    8 \- c$ r. X$ W4 O% |
  107.                         break;
    & Q2 o+ ]6 q* O5 ]* |) m
  108.                 if (c == 'n' || c == 'N') {
    - |0 m, U  ^, E
  109.                         printf("\nAborted.\n");
    . }9 y" a5 M9 A4 P
  110.                         return 1;
    1 `2 w7 |, m" }
  111.                 }
    1 A/ f' t9 z( Q( M0 ]
  112.         }
    , x" S# J( z% b' H0 F  l3 u
  113.         if (writeparam(mac, stbid) == 0)
    . U1 e2 j( b! U7 n$ O
  114.                 printf("Parameters changed.\n");
    ! V- V% I( r6 {

  115. ; H  J, n7 v1 q
  116.         return 0;
    * q, E, @# }0 T
  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
8 r5 x- y# p( |! r在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ b" g$ J7 G* J( Y( Q& W$ X
你用的编译命令行格式是什么?9 {' v; h9 }9 w1 f1 c+ ~3 A& q. M
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-22 10:05 , Processed in 0.024362 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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