找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15281|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + A: J6 ?$ i5 p+ w* C4 `8 l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : q6 m: ^9 P1 O7 p0 S
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, N4 E: I8 ]* p6 nusage: himr <address> <value>. sample: himr 0x80040000 0x0
" I8 U) `" j2 G% d) y  |; H2 m
3 ?3 _9 Y8 W; Y
& O; }+ \8 W# T5 S+ o不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, J/ r1 g0 \6 ?. _- ~3 B
( V: d5 w4 \* N; i5 {
补充内容 (2012-3-8 09:42):
7 G( U. P% e" Z; J2 o* c2 Ehttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 Y. j, ^- X5 @- r# O7 T, l( S这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
) x9 \4 t" C: I. n* {& S
% R' F6 t8 v, d6 R# B$ Hhimr <address> <value>. sample: himr 0x80040000 0x0
4 K% O4 X4 h, P+ }" M* u: P1 b+ H% u' h  Z# Q) @! c# w4 k2 P* d1 [
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。& j3 s/ ~- T" v: @) n
himr 0x80040000 0x00" b$ z2 T" K, \- r  ]' u" |# F
himr 0x80040001 0x11- A2 h' k6 T! ?# N  y: P! o2 K
himr 0x80040002 0x22% D5 N8 X/ l5 o4 i$ U! M, h1 Y/ D
himr 0x80040003 0x33
$ F" @( m% `+ Z$ P; \himr 0x80040004 0x44
7 ]7 U3 [$ o7 t- M) P( A4 g, whimr 0x80040005 0x55
+ |8 y- w/ p% ]- j# S% J9 h
- X4 `; O6 s; c- ^( J5 ?/ }$ bSN也是类似。9 x) Z! k+ o  y1 E3 c

& F/ o/ k' q+ a: e3 o4 j" e现在主要是,谁告诉我们MAC和SN的地址?
- H9 t4 A! k& k) [0 }
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 2 ^3 }9 f6 p, i9 v
一直想找到运程修改MAC和SN的办法,苦于无解啊

/ I- h  c& B' m( U源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# ?/ h6 \  j8 r; \5 h
3 r$ Q, }# z1 F3 v* \4 C) g修改的代码早有了。到今天不会编译。# E9 L( G/ H- \( {2 A0 o; A9 _2 \
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' x$ f9 o" U" z$ {, Q! G5 s- A, U8 Q
  2. #include <malloc.h>
    : _! x$ [0 Y& R- ~* r" A$ K6 B
  3. #include <sys/types.h>
    . s( |2 Y# B; m  m- x  p5 c
  4. #include <sys/stat.h>
    , D; I1 Z' ~! c
  5. #include <sys/ioctl.h>
    5 M- y3 t% T2 r0 y7 r9 m
  6. #include <stdio.h>
    7 m/ A+ d* p* @! l5 M
  7. #include <string.h>' s& D) \/ t8 G6 F2 w' \
  8. . ?9 e4 h, T2 ]" @: b
  9. typedef struct {- Q: i1 G! K! g% E  R/ F# R
  10.         unsigned int        e2prom_cmd_sub_addr;
    ' R: ~4 q/ q  w; f( d% W
  11.         unsigned int        sub_addr_count;; |! N" ]0 p, \7 L
  12.         unsigned char*        e2prom_cmd_data;  r2 x4 }4 n2 ?9 ~  g
  13.         unsigned int        data_count;3 i8 v8 u. s) I) T' G8 M* V
  14. } e2prom_s_cmd;) Y( ~' R% s) f) X/ X

  15. : F! J7 d( ~3 s5 \
  16. #define E2PROM_CMD_READ 1" c6 Q) o. T7 ?0 S) {; ?6 x* V
  17. #define E2PROM_CMD_WRITE 2
    1 D- k% \. c, ]+ E$ W' p8 m! V
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 u1 y* F5 l' e: O
  19. 9 g/ `" m% \: |9 \' k1 u' k
  20. static int readparam(unsigned char *mac, unsigned char *stbid)3 o7 S$ x# u7 I" T# C6 p4 r
  21. {( j% W$ y: |( y$ D9 g" e) I: [- H
  22.         int fd, ret;
    ! c& W7 T- f; [  i2 |
  23.         e2prom_s_cmd arg;
    $ r4 S4 j( n! G; @
  24.         unsigned char buf[0x18];( k$ A, Y: t# a  r( R

  25. 6 ^. X  `7 P1 o  r5 e
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' ?/ u, B. ]6 \8 Z& M5 F# |2 l
  27.         if (fd  < 0) {
    * g8 e/ |' N: Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 ^0 {1 z8 g- N' r. c. k
  29.                 return -1;
    ' d3 T- {' ^$ [8 O& |
  30.         }1 h9 N& {4 g  I8 w2 h! k
  31.         arg.sub_addr_count      = 2;( J3 K# \/ g/ u5 J7 w* }
  32.         arg.data_count          = 0x18;
    - z9 m# B3 h5 z/ e( O4 S; D2 G
  33.         arg.e2prom_cmd_sub_addr = 0x290;# Y3 ?4 d  c4 J
  34.         arg.e2prom_cmd_data     = buf;
    7 \0 T8 S6 I/ l2 T4 g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* `: \- f0 b4 Q' b" E2 b7 M
  36.         if (ret != 0) {) U( m. F3 m, s- d- D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);0 S6 d( F8 y3 \5 e
  38.                 return -1;% |. o1 o. P" Z- ?( ]1 b) |
  39.         }; s# o2 S2 d3 ~* j
  40.         memcpy(mac, buf, 6);6 c2 E8 P4 p8 ^/ {! m( o* a
  41.         memcpy(stbid, &buf[6], 18);
    * K0 k/ R$ o; `( z. @! q5 N/ h
  42.         stbid[18] = '\0';
    3 \# A! r2 M. H& C9 x

  43. 7 U% E% [# o, d' C  y6 X
  44.         return 0;( M% _8 H! n1 G' ]1 Q4 t9 u. C, s
  45. }& E3 U" ~; s+ t
  46. ) p7 n4 W2 [% E7 S! p3 G; O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)+ n: n6 _8 S) [, X6 j
  48. {
    2 b1 Z7 h& R- T. _5 H
  49.         int fd, ret;
    + u0 _& }+ X9 Y1 `" B
  50.         e2prom_s_cmd arg;) Y. ~: w8 {- K0 z
  51.         unsigned char buf[0x18];, Y( a: U; O2 Y% w+ F7 E- B" k

  52. $ a' `9 a- D. {1 D$ `
  53.         memcpy(buf, mac, 6);1 n1 A& h$ l8 R( h
  54.         memcpy(&buf[6], stbid, 18);% j) N. ]4 L: _  f$ d9 S
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  I0 J% F8 z1 A8 b' ^! L- ?
  56.         if (fd  < 0) {9 _2 H+ L+ K( j2 r
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 {& D3 O4 a* w
  58.                 return -1;
    : a8 I2 V  R. H  q; ]: n
  59.         }
      \, ]; |! x- J% @8 G
  60.         arg.sub_addr_count      = 2;
    9 i8 ^+ I, A: ~1 o- U8 f+ W
  61.         arg.data_count          = 0x18;* e% y4 k( |: L( _8 L! Q% b
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    0 m6 v( N( X0 c( c4 R- b
  63.         arg.e2prom_cmd_data     = buf;% Z  `! M8 e: M( y* L7 `5 {/ b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 ~0 p0 x7 L# m1 B
  65.         if (ret != 0) {
    % l6 \! L7 K7 {$ b. V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 K+ i' k; I6 h! r) }
  67.                 return -1;
    1 z6 i' N+ l0 l0 [) u2 U3 f: N
  68.         }
    ) @4 _0 a- [9 C7 a( e
  69. / D4 b. [4 S" o7 j8 s" [
  70.         return 0;
    2 V; i" R/ Z3 N) ~4 Y: K
  71. }6 g3 J( E( e* C: v/ u- h3 V7 B

  72.   F* N" R; {. [- R* U
  73. int main()
    4 S2 _# M* X# ~& `* a( }; P% i
  74. {6 Q6 a$ h+ b# g4 h
  75.         char c;0 W0 W! R& @4 F3 |
  76.         int i, macs[6];
    % e* K( {  H$ f8 A0 T8 |$ G
  77.         unsigned char mac[6];
    2 U7 T- M: d; o" A& Y/ H; O# Z
  78.         unsigned char stbid[256];- ?# {2 ]% \( _6 A5 l( ^. `
  79. 7 V9 c( d6 M( q- E; l) E
  80.         if (readparam(mac, stbid) < 0)
    $ m  x0 N: p4 O# c6 z0 g
  81.                 return 1;
    3 `2 Q- Q$ S) v+ c0 z3 L& d* r) K
  82. , P8 h+ ]! P& C
  83.         printf("Current parameters: \n");% \2 V% _) v9 {
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' ]# c- E: u; E2 Y' x& C3 B4 \" H
  85.         printf("  STBID: %s\n", stbid);) g" C! c1 w; K  x0 J6 G; f
  86.         6 c9 F2 N1 q* d) s% D( d2 U5 L+ |
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ; y  V/ {# ?( v2 [' X( V
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * W6 B4 R1 V% L5 E( m' Y
  89.                 printf("Input MAC error\n");1 N5 j- h% S( M) C3 h" ^5 p3 j
  90.                 return 1;
    ) X" J$ e" p# H, R% ^
  91.         }
    ' x& Q( `5 v: B+ Z: k" B6 R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) M/ r$ J: H. {6 T9 A. X& Q
  93.         printf("\nPlease input new STBID: ");
    0 m! {2 S- ]) V- m! V- @
  94.         scanf("%s", stbid);
    $ f: _# U/ @5 i6 B- n+ I" V
  95.         if (strlen(stbid) != 18) {
    / C/ u) Y1 \3 r
  96.                 printf("Invalid stbid\n");
    ) [# @( ~2 v- B5 v* ^" d
  97.                 return 1;0 }! f+ }) k9 Z1 i! M
  98.         }0 Q( a! L0 M- B+ ~5 d2 M8 b
  99.         printf("\nNew parameters: \n");
    1 e: m0 E- h5 s1 J
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ A1 j+ M, V" g2 v, m  T
  101.         printf("  STBID: %s\n", stbid);
    . B/ ^" ]2 f9 i$ _7 Y: `

  102. " k% }  v- x+ b0 k9 n
  103.         printf("\nDo you want to change paramemters? (y/N) ");- L3 z* Y+ S/ w/ b
  104.         for (;;) {
      d* k5 l8 v: _: s. l; I
  105.                 c = getchar();
    ; d* b9 h0 m  J
  106.                 if (c == 'y' || c == 'Y')4 Z5 K6 A* `/ K% a
  107.                         break;
    , N- e4 j; h) P3 `# D, [0 c3 p+ U
  108.                 if (c == 'n' || c == 'N') {
    * u. O. v' Q3 X2 t* I; G
  109.                         printf("\nAborted.\n");
    1 [: K* X8 z. {' d, }) _$ j
  110.                         return 1;9 q) `' u6 M% H; Y
  111.                 }
      f; X" p1 X0 S8 |+ H6 V
  112.         }3 h2 O6 e- N  a
  113.         if (writeparam(mac, stbid) == 0)
    0 _$ g, x5 b! _: V, q4 E' H' G- |$ G1 L
  114.                 printf("Parameters changed.\n");
    * h  x7 V% B6 @7 f7 ^* n: B3 i
  115. ) Z- ^- D9 B5 N$ R# b" L: @
  116.         return 0;" u) Q/ J+ {/ t5 u1 a( 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
( R5 v* r8 r: s) b$ f7 w. E1 z& ?在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

$ }& e( ?" C& ~8 q7 o# r你用的编译命令行格式是什么?
. y5 @, C5 W) ?9 J$ W3 C! s, [
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-15 18:46 , Processed in 0.024511 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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