找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15726|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    " V$ e: H; @& ]/ n. p5 a! v
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ m/ G' C' m) u6 b! q/ k% X' s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
" u* |; H- C. t- H+ J* _! Eusage: himr <address> <value>. sample: himr 0x80040000 0x0
, g; m# X& b$ q4 l* M4 H2 {) b
" G- L1 i3 P/ `- `; {$ R! |0 ^; X1 r' r- L1 l) x2 u
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" l6 r8 w. L) O
* H( g6 Q! a9 l6 p7 B
补充内容 (2012-3-8 09:42):5 _) ~  V1 V" Y' X
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数" S. h. ~# [- X' j8 j0 k" k/ e& m
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。$ X  T) f# @6 T8 S: k, ^4 B

* c9 S# S7 I; Qhimr <address> <value>. sample: himr 0x80040000 0x0& v7 \' R& x! X/ d7 t- M: q

; ?& {+ ?/ o* p9 N+ c例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
5 @/ p3 o. ~- H" I9 M+ [# rhimr 0x80040000 0x00' K. L- ^* h) I) D
himr 0x80040001 0x11
0 y- V4 D/ d1 j8 j+ G0 k2 fhimr 0x80040002 0x22; Y7 k5 [3 A% ^4 k. ^  a
himr 0x80040003 0x33& _, n! X6 t. c7 _9 q
himr 0x80040004 0x44
! A" Z, ]5 r. }6 e1 bhimr 0x80040005 0x55) w% ]' K2 T+ I% {
8 Z3 K! [# H2 J) r* v0 N1 E
SN也是类似。( b2 `" a0 Y- G, _$ ]
0 O. Q2 H8 Q! _7 N. Y
现在主要是,谁告诉我们MAC和SN的地址?
1 ^! Y+ R" f, }+ i' m
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( }9 T& ]1 |+ ?3 S: v6 _+ n2 R一直想找到运程修改MAC和SN的办法,苦于无解啊
) K3 f% G& l! b6 `/ {3 x
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & m6 H9 }$ x; {
% z7 H+ m9 ~' x5 b, E' ?
修改的代码早有了。到今天不会编译。# p" R* q4 Y5 N9 c/ Y; o9 C
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
      n) N5 d; M0 M9 @
  2. #include <malloc.h>
    5 e- W/ c- R* Y9 m1 n, K& f
  3. #include <sys/types.h>0 I7 [0 X6 G9 F2 O$ \3 C4 @' Q( N
  4. #include <sys/stat.h>
    $ S& f7 l$ w5 P1 t+ V
  5. #include <sys/ioctl.h>
    9 R6 Y' e) |; F, k0 m! W
  6. #include <stdio.h>! q0 l+ V" j7 G) S% {7 g: w- q( s
  7. #include <string.h>
    9 f) h  g& s5 u5 Z' `; r
  8. ' Z7 a6 Q  W# \: `
  9. typedef struct {
    9 @7 e  z1 b- E
  10.         unsigned int        e2prom_cmd_sub_addr;
    " t) P- O4 E1 ~3 f. x$ n% s
  11.         unsigned int        sub_addr_count;3 L6 x4 C5 L* N1 n$ i% B
  12.         unsigned char*        e2prom_cmd_data;1 t( L8 Q( D. P2 h: B
  13.         unsigned int        data_count;% x6 U* S, @! E+ m+ G. v2 B
  14. } e2prom_s_cmd;, y- I5 m1 ^; `
  15. ) J6 T, v! [: B; N" [0 Y5 w
  16. #define E2PROM_CMD_READ 1" `3 r0 Q' T1 D0 r- p# K
  17. #define E2PROM_CMD_WRITE 2
    : N* S8 f1 u# \7 B5 c$ b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    " g8 j' i4 r, }# r' {
  19. % Z9 h* T* u) h" h/ @
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ' R8 }, _: Y8 u" \* x$ J
  21. {* h  ^" t% {$ [+ y8 v! c
  22.         int fd, ret;2 d) k% b4 N4 j: W, s9 s7 F
  23.         e2prom_s_cmd arg;% h# R+ n! A6 b7 O, ^- d
  24.         unsigned char buf[0x18];  B# I  N$ v9 V" I
  25. : p. ^' s/ R( t- M( @8 d! P  }
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  X/ ]. {' L4 [; o  S) X2 R
  27.         if (fd  < 0) {
    , K) G# |$ d2 i4 f+ c. y# @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : Y$ u% M+ B: w7 X
  29.                 return -1;- |  \6 r" V5 ~9 L% \4 }6 U
  30.         }  @. }$ q1 [+ U. C( E
  31.         arg.sub_addr_count      = 2;7 ?5 l+ ]8 T7 W0 V% E
  32.         arg.data_count          = 0x18;+ @/ `8 }* t# ?$ V) a
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / ^, i9 t) a* @6 [# a6 x
  34.         arg.e2prom_cmd_data     = buf;( v: a8 Z+ o$ S2 N; c% |% W
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ! R+ E+ U3 \' [
  36.         if (ret != 0) {' H, B: q( B0 r3 S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- A" e9 r. ]" b1 D- q! |
  38.                 return -1;
    & F. |6 `/ G" D3 g8 f
  39.         }
    4 x; S! ~0 ~5 v
  40.         memcpy(mac, buf, 6);
    9 [1 s. }- y, s. o& f3 v5 l
  41.         memcpy(stbid, &buf[6], 18);
    $ |6 z! J- J0 b8 Q3 q/ ^
  42.         stbid[18] = '\0';+ {$ B! h# `5 x6 ^! b

  43. * f, B# p* ]/ @# W$ B
  44.         return 0;
    7 r7 P2 l: L) C; t6 L
  45. }
    " U: ^, t0 A# q% j4 d( L8 N

  46. : c) p2 C3 H# a- _& L  x& N! ?
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 q7 @8 S! y; O$ i( F: p* P; I
  48. {
    9 G4 B5 h5 u' J* K
  49.         int fd, ret;% z- ^1 s! ~( W7 j
  50.         e2prom_s_cmd arg;
    ) v& m/ W. T: Q! o2 f2 N
  51.         unsigned char buf[0x18];, K& \8 N( }4 d: y6 k: i! `& S

  52. " w/ P# I" K- J4 }0 V
  53.         memcpy(buf, mac, 6);
    * O+ W5 q$ f) ]" N* N
  54.         memcpy(&buf[6], stbid, 18);
    / M# \9 R: j0 J  s3 J$ K+ S
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / p# k; y& G, m0 T- \
  56.         if (fd  < 0) {( z3 s# e3 x; W! u' T7 n& A8 F
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 u+ O, A+ K! k4 o
  58.                 return -1;9 `- u9 H# M% {6 {% u* x2 |
  59.         }
    3 h) V1 L0 G8 @' J( J9 A6 ?
  60.         arg.sub_addr_count      = 2;% y  l$ `6 h4 g9 d. |( W. |; P7 ]
  61.         arg.data_count          = 0x18;
    3 p. r3 O! L3 ?& c& T
  62.         arg.e2prom_cmd_sub_addr = 0x290;  E! ^, x  {' k5 u/ l
  63.         arg.e2prom_cmd_data     = buf;
    $ Q  B1 M0 a/ @/ f8 j2 F
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ( o' |/ m* W) x1 |  Q$ A
  65.         if (ret != 0) {
    & a0 K' B8 Q; K. t& u4 {9 q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);) W; |) O( S4 ~, Y
  67.                 return -1;8 i( V4 C! x& W" H7 }* X
  68.         }2 b) U$ ?' H) u- J5 |

  69. % m& a/ S' A& I1 B# `
  70.         return 0;1 F! W, m! I' c9 x9 L
  71. }
    / }! V+ a1 p$ B9 {" D! J

  72. 1 z8 v0 [5 M# j; |2 U1 V! b9 h
  73. int main()! J4 T, A, e. ]
  74. {' g# c' e1 j( c) e& t
  75.         char c;
    " x  \. e. T# b5 {( t$ z
  76.         int i, macs[6];
    $ U5 `5 Q* W' L( x% g5 e
  77.         unsigned char mac[6];
    6 W. L$ d! y  w2 {
  78.         unsigned char stbid[256];
    . a) ]7 b$ R4 J2 {& e

  79. ' g) ?8 r: T0 q! d& |0 A
  80.         if (readparam(mac, stbid) < 0)
    8 G* g  I# o& O$ Y/ y7 V) h3 O
  81.                 return 1;: G" Z$ Y+ w! @6 V

  82. * {/ T2 ?) b- z. c7 a2 m/ F8 o
  83.         printf("Current parameters: \n");
    ' ?. I# Q; j1 C$ m
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  f* M: f5 X7 T. g3 z9 B1 V( y$ B
  85.         printf("  STBID: %s\n", stbid);9 ?% x1 o; b8 U- p1 p% p- o5 P
  86.        
    * S. K& h: i9 d, R! s7 h" l9 S
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 k$ G. Q( ]) f; D% Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ M6 m+ q( D( Y% _" S9 d$ {% H
  89.                 printf("Input MAC error\n");8 x+ ~0 l# x- P8 }+ Q) o: m% n
  90.                 return 1;1 T# K4 [/ U+ h' ~) b
  91.         }* E3 L" ~* i. {/ a! G
  92.         for (i=0; i<6; i++)mac[i] = macs[i];" G+ G( R# R6 z( @! a/ g
  93.         printf("\nPlease input new STBID: ");, |' b& L' f+ [! a' E: q- f$ \
  94.         scanf("%s", stbid);
    $ {! P; f+ V3 L
  95.         if (strlen(stbid) != 18) {
    1 P* d2 c3 E1 B- P+ m3 T
  96.                 printf("Invalid stbid\n");
    & Z& ^9 R" o& C0 O% I! _2 d
  97.                 return 1;
    0 `  {1 l# d7 `9 M! Y: c& [$ ~
  98.         }
    6 Z# X; q+ i* e3 i$ J; n% F
  99.         printf("\nNew parameters: \n");; ?+ R4 O* ^) x1 T+ Y+ `. U+ b0 T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) J0 g% u. U) j% t5 _- z6 q1 C' r. h! ]
  101.         printf("  STBID: %s\n", stbid);; s! t, h, B+ b$ r

  102. + b9 }0 X: C  ]% m! h% m; F! L0 @
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; t, h0 u  H) M8 d: S& e) i) g$ k
  104.         for (;;) {
    ! ?* W# J+ U( h/ o3 q2 d7 n
  105.                 c = getchar();9 K9 z- o: w+ J
  106.                 if (c == 'y' || c == 'Y')
    $ U, i2 |6 [) }
  107.                         break;
      C+ @) U& N0 m4 o9 c( l
  108.                 if (c == 'n' || c == 'N') {4 U& C2 N: M3 ~) n" a1 `# E& _
  109.                         printf("\nAborted.\n");' M- ~3 ]% R! X# [) V4 ?
  110.                         return 1;3 c9 B/ f7 S- h8 P
  111.                 }8 D; f5 R/ b- w  T
  112.         }$ ~1 L0 C0 L6 A0 X& R/ z+ A6 ]
  113.         if (writeparam(mac, stbid) == 0)
    4 S4 F3 [& M* f9 Y) y( U# i
  114.                 printf("Parameters changed.\n");
    8 p0 n7 @4 n  D) }

  115. 6 z. P9 x5 E6 c1 ~
  116.         return 0;% Y/ V; o: ]6 V1 g
  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 0 {6 |: B5 E2 {! j
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 d' r9 h# T6 {4 j你用的编译命令行格式是什么?
7 D2 ~0 Q- z" s( |. {( z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-5 19:40 , Processed in 0.024439 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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