找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15745|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + J; r2 e' F( D: w) I
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) E, ~  R1 ?% a& j8 r) q) {9 I0 ~
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 A" G* @; H2 p" X' v& t/ Musage: himr <address> <value>. sample: himr 0x80040000 0x0
% g# N1 E9 G. z2 g0 S- W, I! z" ^! f5 {9 O( T1 b; u! y7 v
" E) b) S& |/ j5 u4 l
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
! H9 B8 r1 Q3 p/ b
/ @! ^5 c" @. V( r( L补充内容 (2012-3-8 09:42):
# z: A! i7 z9 Y9 |  h  phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! i7 h0 ~6 {! h# x9 W5 |0 \3 d这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。! O% w4 f. S2 j' |7 |) |' f' ^4 a. w
/ g7 u. ~# X4 m4 h& d
himr <address> <value>. sample: himr 0x80040000 0x0
4 z" ^) E) R" G, h& R" |$ Q# V. e3 A% _- X* c8 [! r! k4 p  p3 B% |
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。. c9 [, q; Q& ?* \
himr 0x80040000 0x00
1 I0 f) u0 `" c* Lhimr 0x80040001 0x11
4 f+ l$ q- G  b( Q0 ~himr 0x80040002 0x221 r/ X- k; c- D. c4 _2 M9 e; E4 {
himr 0x80040003 0x332 }: |- u  H" T' ]* }
himr 0x80040004 0x446 a/ e: q, E2 p* B8 y8 w' Z9 _& y% d
himr 0x80040005 0x55
! G! J, l& Z; @9 M# q* z! t% X
+ d+ z- ^" l! E3 {% qSN也是类似。
) ]: d9 c: Z. M2 Y( E) b2 x6 s2 N: V; m
现在主要是,谁告诉我们MAC和SN的地址?
  p1 j0 E$ E. c6 V) g
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- P$ C  f* ?$ w7 e2 x5 r$ ^3 ]一直想找到运程修改MAC和SN的办法,苦于无解啊

) P2 `- x3 j) n4 S6 W5 s' U3 q5 R$ E源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
- H3 t$ ^7 j; u" E0 `" w; c1 W( A5 K1 Y' M
修改的代码早有了。到今天不会编译。# z6 d# e, ~( l
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>% p- ]8 R" E; P: ~$ q0 u6 v0 Q
  2. #include <malloc.h>
    / K, I& l# S# G5 H( J
  3. #include <sys/types.h>
    : s7 H: z$ J+ R1 E9 Z/ Z8 s0 X/ I( Z
  4. #include <sys/stat.h>* p+ w* H2 K  m! V& }# I
  5. #include <sys/ioctl.h>7 J) M( x  a% M1 X, h( q" ^3 u
  6. #include <stdio.h>
    ' D# N1 Y7 |  @) Y+ c2 I7 y
  7. #include <string.h>
    ' }! D4 Y" ?5 V8 b& x8 T  ~5 Y2 Y) {
  8. 2 B# ]& @$ @5 F9 S
  9. typedef struct {
    $ s1 A+ r3 Q- t) o0 G
  10.         unsigned int        e2prom_cmd_sub_addr;# {& f; D# ^2 g' n
  11.         unsigned int        sub_addr_count;! C, b* Y) S5 V
  12.         unsigned char*        e2prom_cmd_data;2 E0 b& J5 _9 S7 U$ e' Q& o2 F
  13.         unsigned int        data_count;
    1 j! v5 \, G* [5 |7 v1 k
  14. } e2prom_s_cmd;6 k9 J6 r+ V. @; ?

  15. 7 P  k  w7 H# s, ~3 i
  16. #define E2PROM_CMD_READ 1
    : c* ]0 u4 ~, d& Q5 D0 L2 z# o
  17. #define E2PROM_CMD_WRITE 2
    9 e" O5 Y* u( A2 z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"5 ]& [% q3 n+ y' F# w& p
  19. $ v% c3 e5 O3 r  ^7 X
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( A& P, ]) Y3 O& c
  21. {
    3 J+ q' Q% i, m  N% a5 W7 C0 g. Q
  22.         int fd, ret;7 [# h0 k* U4 S% {$ k0 X
  23.         e2prom_s_cmd arg;) `- f, e* ~% k; Z3 p- ]* P
  24.         unsigned char buf[0x18];0 D9 m$ m  N5 ]! ]* P9 @
  25. * w$ }" i  h5 g7 L6 W1 S6 y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 }  Z% ]; q  |3 \, T$ U1 I
  27.         if (fd  < 0) {9 f' p  c, |/ e( V7 P" @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ e9 B0 ?) h7 i6 J+ ]
  29.                 return -1;1 I: L! _' B: y
  30.         }
    3 W- P3 z/ U* q  m7 Y- `7 @
  31.         arg.sub_addr_count      = 2;% G+ m5 T4 b( A3 e: i
  32.         arg.data_count          = 0x18;7 O+ G/ o  T( S/ R
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / B; v6 h5 H7 I" r4 S+ `3 |. M/ m4 t
  34.         arg.e2prom_cmd_data     = buf;$ z7 t" O+ n  i) m3 }% g. f8 B6 K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 y- ~: ?0 n3 {$ F4 M3 a
  36.         if (ret != 0) {" Y$ s6 J. m+ O4 b9 q( N0 \
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 D! A$ P* v, K5 Q4 S" N4 i
  38.                 return -1;5 @( t3 E- t4 x
  39.         }
    5 K! A  B! ^4 L( \$ v# n( ]# y
  40.         memcpy(mac, buf, 6);' \3 F; ]6 {5 J) q$ U/ T% i( S
  41.         memcpy(stbid, &buf[6], 18);
    ! p" ~# V* P" R  Z
  42.         stbid[18] = '\0';# R  t$ K; G/ O) B3 j5 O

  43. 0 ]# a' D8 @1 d, T" ~
  44.         return 0;" t* b# a1 _7 y) f2 C3 y
  45. }% X; s4 ^( S- J$ X- w

  46. ' E  _& M  ~7 o- F7 ]/ j, N
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : R9 {7 A1 X) O4 D
  48. {
    / R4 j  s. b% T9 S5 s
  49.         int fd, ret;$ g4 V) o8 w# f1 U* m2 Z
  50.         e2prom_s_cmd arg;
    + v5 T& }- Y3 }) d) b) ?
  51.         unsigned char buf[0x18];2 o* `( y& ]. ^( B* v# J

  52. 6 F; r6 ]" l( b- n
  53.         memcpy(buf, mac, 6);
    2 E" z, N# m5 c" w
  54.         memcpy(&buf[6], stbid, 18);
    5 p" u9 E6 O4 F% r) O
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    + i/ K0 n6 b0 R- f
  56.         if (fd  < 0) {
      W! U) Y! }( ^
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - c) f$ u) r7 [3 h
  58.                 return -1;9 B6 j1 q8 N6 H. |9 B* d* P
  59.         }; C) P& v3 Z+ u$ x4 T& Q1 f* y
  60.         arg.sub_addr_count      = 2;1 C* s4 x! y1 ]
  61.         arg.data_count          = 0x18;1 I, ]# ~3 `, P8 k. \, T/ O# }( f
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 {3 D6 x8 `- U' _% R! `$ i- F6 `" ^
  63.         arg.e2prom_cmd_data     = buf;
    # p0 O% R  |& z, Z& Q1 a) b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);) [5 E6 B2 q, \( a) s7 J4 A
  65.         if (ret != 0) {
    , U  A) _0 ~0 X% {
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 C9 N& |8 q5 x0 p5 F) I: Z
  67.                 return -1;7 g3 u' B$ r7 i5 l2 m5 P& M  l& \
  68.         }4 |" O1 ~: Y  g4 {( J& \) ?& f
  69. , G+ L9 Z0 u# Q/ r+ t" h/ m
  70.         return 0;
    * Y# ^( h1 j7 a6 b2 H
  71. }/ N! k( m4 \) z& [  X% g1 e+ E
  72. " }. D& f$ B; c0 C+ O$ ]
  73. int main()  g8 F% e/ l8 m/ @7 k7 m- @3 {- r
  74. {
    ! ^8 o: w, n+ n3 r7 Y
  75.         char c;; X: a$ z" V) A7 z$ L2 q6 D
  76.         int i, macs[6];
    % U1 X1 C6 q+ Y+ B9 y. ]
  77.         unsigned char mac[6];
    0 P( }2 Z+ H7 t$ Q8 b! e- g
  78.         unsigned char stbid[256];
    & S3 ^( H- R- A5 C/ z/ T/ ^

  79. $ r) O  c1 x' U8 P  G5 L8 h
  80.         if (readparam(mac, stbid) < 0)
    ) ~) S6 I/ _9 E- I
  81.                 return 1;
    2 M* ?8 w5 o8 T( g5 T. b
  82. / J  y1 [$ H4 M' D% U0 c" p" a
  83.         printf("Current parameters: \n");9 H+ P( |( G6 }8 G; t
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. G% ?( t/ F: H% k
  85.         printf("  STBID: %s\n", stbid);
    ) [4 e8 L, H1 I1 j! V
  86.        
    + o3 g( T2 k+ f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    % i2 G7 c5 d9 p, N% Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    " C5 G6 }/ Y- \
  89.                 printf("Input MAC error\n");
    ; @& C2 x! c' `) s5 r7 Q
  90.                 return 1;
    / Y+ f" w1 r6 o  F: q, O
  91.         }7 n$ e+ j* A. O1 b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 v! b5 u( D2 R  i3 }8 U
  93.         printf("\nPlease input new STBID: ");
    $ Y1 R9 ^6 |1 H7 Z' ^7 ?: B3 E
  94.         scanf("%s", stbid);
    4 `8 a1 j" }  Q; z1 O5 o5 m
  95.         if (strlen(stbid) != 18) {9 d% L. w2 b, D5 z: e
  96.                 printf("Invalid stbid\n");7 x& a7 H' ~, B, w, y
  97.                 return 1;/ x6 d# e3 U- u
  98.         }
    3 O, s2 D, r6 F3 B
  99.         printf("\nNew parameters: \n");. |4 [- \7 L# R) a' o9 _$ f6 P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( _" _: i1 B4 a2 J' C8 y
  101.         printf("  STBID: %s\n", stbid);: F7 p7 y+ i9 O
  102. 4 _/ w% l$ J8 I3 D7 P5 Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");, W/ j7 o3 {7 R3 N
  104.         for (;;) {2 N" e$ B9 g; h4 `" o
  105.                 c = getchar();
    ) z0 X& h: o& S% m
  106.                 if (c == 'y' || c == 'Y')
    ) L" h6 R! I) H/ I/ R- ]. L
  107.                         break;
    ( e$ x5 i) @/ ^! N& e6 X
  108.                 if (c == 'n' || c == 'N') {
    0 a/ |  h$ M  s- W1 e
  109.                         printf("\nAborted.\n");
    ! @8 F. g6 S& x& T/ c
  110.                         return 1;
    0 Y8 T- |6 x1 k+ R& }  i1 H3 S7 g
  111.                 }
    / Y8 r+ R" Y1 I( ]
  112.         }2 A# k4 c, z  ?
  113.         if (writeparam(mac, stbid) == 0) , H8 S+ N; f- {5 B4 w. s% o, z- T
  114.                 printf("Parameters changed.\n");
    6 ?7 G/ H! i! `+ n) A3 [* o
  115. : R5 I/ n, s4 j7 C: y; [% P
  116.         return 0;
    ) K; u- k  X5 z- L- F
  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
& I. x; e  T* o6 N: {, `% E8 a在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 M+ T' Z  E/ j8 U) n& B你用的编译命令行格式是什么?
( c7 k4 n+ \1 R9 g/ J% F# `
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-8 09:38 , Processed in 0.026309 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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