找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15123|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 _% L4 _" m. v( r
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ F$ ]) p3 I7 A6 h: L; m: ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:8 o: A9 D% R2 I! r7 `6 d
usage: himr <address> <value>. sample: himr 0x80040000 0x0  I0 X- \6 O: Y& F. S; z1 `+ o
: ^+ R, ^' P$ l6 i# [0 D+ G# n) J
! P' q$ R  l0 d4 D* k8 o8 A
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: P- f' R0 ~# m2 ^- g$ p; n; {& f; R# h
) R! K7 I! r1 V  ]: t, s& @补充内容 (2012-3-8 09:42):
3 B$ H% t- B  `; i. U' ^http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" E' U8 e+ H; x+ p* w6 o4 r这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。, Y3 Q. [1 ?( _+ _
% }! \7 K" N4 W, `- Y7 @
himr <address> <value>. sample: himr 0x80040000 0x0
& P* o' i& d5 X) |
; s9 T2 k6 M& m2 C例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
$ \' F7 Z6 m9 ehimr 0x80040000 0x00, x0 ~4 l$ f7 y* v4 `
himr 0x80040001 0x11) h: Y: i4 D# d6 o) G2 D5 Y: ?
himr 0x80040002 0x22
2 B7 u1 f% T! v9 v- ]himr 0x80040003 0x33) g) ]7 }" t+ O
himr 0x80040004 0x44  L: ^# `" X' `5 d% O
himr 0x80040005 0x55& H/ V3 S5 ^& {) t2 L+ e0 x
/ S' R0 b2 I1 S* `2 D
SN也是类似。6 |3 O9 K$ z) M4 R( P# D4 W
+ e5 \" g: }* Y5 }! P4 \9 s. w
现在主要是,谁告诉我们MAC和SN的地址?
" @, ^! v2 X! x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 " ~0 S1 d9 k+ J9 }
一直想找到运程修改MAC和SN的办法,苦于无解啊
. s8 @  S$ j" s! X* I8 D
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
) I; R5 Z* L& l4 a6 d' H$ R3 X$ M- I" l% {$ Z# ?; E
修改的代码早有了。到今天不会编译。; M* o0 e5 N/ s
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 s  t  R$ E) o1 }0 Y4 y% R
  2. #include <malloc.h>
    % Q: j0 w3 q, j0 v
  3. #include <sys/types.h>: [+ q, [# D  ~/ _( @
  4. #include <sys/stat.h>  ?+ G/ _9 |+ d. ~6 O" K+ V: d
  5. #include <sys/ioctl.h>
    , f& A+ s6 l5 o: X+ w
  6. #include <stdio.h>
    ) N: C. o. S7 G: d+ S$ W+ c4 R$ i
  7. #include <string.h>
    & i+ o) s$ x4 [% L* J8 G! G

  8. ) k" f1 \% k; S' Y* B5 W$ @
  9. typedef struct {  c; l6 @5 Q1 w- I- s) f
  10.         unsigned int        e2prom_cmd_sub_addr;) ]7 J! z$ R9 C8 v* b
  11.         unsigned int        sub_addr_count;
    1 Z( M' a* t8 X; g( {
  12.         unsigned char*        e2prom_cmd_data;
    9 V% s: |4 a8 `) L* A# C9 u
  13.         unsigned int        data_count;. t' F. d6 r. B0 z
  14. } e2prom_s_cmd;# c# T& _+ `" [! n0 O9 K- f
  15. # p. Q0 a# \: c4 z' H3 \* h
  16. #define E2PROM_CMD_READ 1" {3 Q! p0 C' v" @# }- l
  17. #define E2PROM_CMD_WRITE 2# s- s0 T/ Z$ o6 R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . H6 s& D+ z3 S% W0 A5 R/ e
  19. 7 C: {- z3 ^+ G- Y* k! F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! o5 q8 w' J" ~% H8 k# A
  21. {
    : U/ H, j& u+ h, d- n( W5 I
  22.         int fd, ret;
    ' j! v7 y) e. t4 U. r% m
  23.         e2prom_s_cmd arg;
    5 J4 y2 Z+ x0 B
  24.         unsigned char buf[0x18];
    * E3 c, k* x! d( Y3 {/ Y+ e

  25. : q( W5 s) Q. |' r+ k
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- Z0 R! d" ~8 R, X8 n; L
  27.         if (fd  < 0) {& U+ L' B9 R! H* \* t7 b  a
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ h0 ~# m) v: }( t$ ^
  29.                 return -1;0 S# v" N& |7 N+ P6 a0 O6 R8 [3 Y
  30.         }
    9 ^; K* H! i8 x/ z" \
  31.         arg.sub_addr_count      = 2;
    ' ~# a1 o% V. Y( J" h- h
  32.         arg.data_count          = 0x18;& U- ^  U# C9 [) s3 L  O
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    . y1 O9 E. F: S/ u6 e. \, h
  34.         arg.e2prom_cmd_data     = buf;
    ; q, s$ T! q/ E' M" P6 U1 ]0 ^
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 T2 \; P8 Y5 [: Z3 g
  36.         if (ret != 0) {5 }4 N2 I& l8 T" k8 k0 R0 v
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 E& s! T' j; O; b. b# N% o; `
  38.                 return -1;
    8 c2 V  F5 C: Y9 W
  39.         }+ R4 i7 E5 a' H& h
  40.         memcpy(mac, buf, 6);
    * f( ^, E. S5 u* m) e2 m
  41.         memcpy(stbid, &buf[6], 18);
    % q6 T8 G8 M& d. `5 C6 r8 i
  42.         stbid[18] = '\0';
    9 N/ e0 ~& g/ g. m
  43. 7 \1 L" t* J1 e
  44.         return 0;
    * \; X) s' u% h  I0 R; ?
  45. }
    . ]! _: @8 ?: G. F: d2 R

  46. + f$ J* a3 O. a. U  u+ Y* I$ b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 C8 c7 d. q3 H" V1 `5 l$ Z
  48. {# O; m1 R* o2 |, r  ~" a9 v) q
  49.         int fd, ret;
    9 _$ z; U! S; j1 L& d  d* }# A
  50.         e2prom_s_cmd arg;  J; }) X" o4 c
  51.         unsigned char buf[0x18];
    + o& z1 Q' g, _6 N7 S
  52. ; M! {& y4 a% s' ^2 A
  53.         memcpy(buf, mac, 6);
    . D- J% P( I$ g( ^. H7 b5 i
  54.         memcpy(&buf[6], stbid, 18);5 M; u' u/ ^- J' u% u/ R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    & [  D* r: B* C0 ^. `) O
  56.         if (fd  < 0) {
    + w  x. V! e% U7 j! D3 u. |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; L3 g8 R5 o- e, P  M4 k4 J
  58.                 return -1;1 a3 o. w" G  _6 v' p( _8 s: x: _
  59.         }
    * Z5 F, _7 B2 D
  60.         arg.sub_addr_count      = 2;0 @6 ~3 }3 P& E
  61.         arg.data_count          = 0x18;* B; Q7 g  \! _, E
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    0 Y: e0 {. C: j$ t1 E
  63.         arg.e2prom_cmd_data     = buf;" \. W: w! E: x) @. a5 t5 [% G  J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    & {4 X" W# x( V5 k5 ]4 }
  65.         if (ret != 0) {) k  k  O5 f- e$ c
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 m4 `: `. D, x6 K+ R  P
  67.                 return -1;+ N3 j# d9 x: n  w# Y
  68.         }, T, \: E$ B* Z4 Y( Z1 P: P2 c" e
  69. 2 K! S! o4 E' X: n. X
  70.         return 0;6 e5 z  p: p! L; S1 ?
  71. }
    % k- w7 c- K2 p: w0 h( T2 p% E
  72. ) I* ~7 B7 R: J) U
  73. int main(); a& o9 T6 N" z% S% \
  74. {1 H4 q$ L/ w! q% ]  r1 a3 n6 w, n* {/ A
  75.         char c;& g' w! l- O+ ~; E1 E$ a
  76.         int i, macs[6];, `0 B( u% x. l# ?4 v- H' S
  77.         unsigned char mac[6];
    3 e5 a& r+ Q, z, T5 e/ m. M/ k
  78.         unsigned char stbid[256];/ Q! K! e4 C3 s3 e

  79. 9 p: O/ f( D; ~- Q0 e1 F' [! m* ?3 Y
  80.         if (readparam(mac, stbid) < 0): u4 @8 J, z  U+ ]
  81.                 return 1;
    : L* @8 G3 q+ i* M; X. O6 X# Q+ m
  82. ; K5 O* v1 Z' A0 H
  83.         printf("Current parameters: \n");
    : {( P2 e' m- F, O& m# W
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , e: N' x* O' e+ c( {  Q% e
  85.         printf("  STBID: %s\n", stbid);. [9 u4 g. P  i: q) C
  86.        
    - H0 s2 H" h+ f2 p" N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");2 \0 E9 U2 V+ ~, J2 K3 k) k) c$ z# h
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ' l8 y) |0 h  u/ n; I/ b0 T2 f! |
  89.                 printf("Input MAC error\n");
    8 ^7 X3 v: \$ m4 \. v  V: M& q
  90.                 return 1;5 T/ Q: A9 E) _  C5 R
  91.         }% P( n) W6 S8 L/ S. {* e* G" V
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 H3 Q& C& F8 e% Z
  93.         printf("\nPlease input new STBID: ");
    9 ~; V( b6 s$ s2 o( f. o
  94.         scanf("%s", stbid);7 f3 b" Y; M: Q/ p; P
  95.         if (strlen(stbid) != 18) {
    7 I3 a/ L9 K0 ^% B
  96.                 printf("Invalid stbid\n");
    ! }) P" C% \  B5 H6 [
  97.                 return 1;
    ; I  q+ {, H# [
  98.         }/ o# w$ b8 z8 V9 b; R' V
  99.         printf("\nNew parameters: \n");. z6 H0 R9 O5 r9 ]% j6 ]+ ?0 P# T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 P" F* C" W6 [
  101.         printf("  STBID: %s\n", stbid);' L  c9 {# U4 `8 j! w
  102. $ C2 I; G# B" L& j; F* x' q
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    " I0 Z7 h$ n" _5 b0 h% X  ^
  104.         for (;;) {
    1 ?0 z: E6 o  S$ j/ W2 e. v+ e
  105.                 c = getchar();+ e0 E- c  h" Z& J( s! A* b
  106.                 if (c == 'y' || c == 'Y')
    2 j* m9 W% L( D
  107.                         break;4 r( S2 W% x6 q* T# C
  108.                 if (c == 'n' || c == 'N') {8 O. L1 n# q# R  M
  109.                         printf("\nAborted.\n");$ J0 U* V& N4 ]3 r1 T5 H
  110.                         return 1;
    + ^  o% h4 M/ x: M  a) n; \
  111.                 }# p, Y  p! a* }+ K# K
  112.         }
    7 {  g! M4 x# \% F
  113.         if (writeparam(mac, stbid) == 0)
    9 Y% p& X$ E( v
  114.                 printf("Parameters changed.\n");3 z: }8 C, I& `% h0 f
  115. 1 e7 K% C& u9 B
  116.         return 0;
    : w' x6 u) T! W" Y
  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
4 \3 f/ I; T. j/ \( y在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
( ?, S2 _& q4 E& H8 J; g; t
你用的编译命令行格式是什么?
: c* b3 I& K$ U
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 06:50 , Processed in 0.035192 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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