查看: 17151|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    0 Z6 x' L7 ^' f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig8 v, d, c( N6 ?: B# D0 H- @
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
7 e2 E( e; p6 X7 N7 z$ B# y: vusage: himr <address> <value>. sample: himr 0x80040000 0x0
' F6 B. p/ e$ E- N% g, a* C$ I+ |$ Q/ u+ N5 l

( q# A' g- k9 l9 C+ F不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" j2 Z" Z' c& D
: a( Q' u. p- o8 Q% G5 [  y
补充内容 (2012-3-8 09:42):
3 J5 B% ?" M4 I3 dhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* H- J# Q+ c; `: p8 r+ ]这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。2 H7 u2 l, l7 G% }2 D

7 Y0 q$ c9 G8 Y) d% Zhimr <address> <value>. sample: himr 0x80040000 0x0
4 X  w7 J. a& A6 B6 m: Z5 O6 C: H1 @# k" N
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  p! r. P) F7 U5 B' |himr 0x80040000 0x00
5 D5 l7 N2 z' i- @3 A! ehimr 0x80040001 0x11
, U& O1 h, V* Y! |himr 0x80040002 0x22! o1 u  C  l% ?
himr 0x80040003 0x339 g9 \2 ^% f- e) ?* F4 D1 W
himr 0x80040004 0x44
$ E8 e; _- [1 g' j% {himr 0x80040005 0x55
% c! Z. U- b# p3 B( e; n
) ?) p; |$ w6 l3 R0 ^! ySN也是类似。
' J7 b: r4 o) F- ~: j
& B8 S1 h* \" G4 b( {现在主要是,谁告诉我们MAC和SN的地址?1 m8 `/ k9 b, X) @. X
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
6 x' X5 a! S* O9 ?5 w3 E一直想找到运程修改MAC和SN的办法,苦于无解啊
/ I- T* D' w, N. c8 `( c* v
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( Z- y  |/ Q; X7 i* ?( P* ]0 E6 C  y& i* l( S5 n
修改的代码早有了。到今天不会编译。
; @) |9 D! `) A: k4 Q1 m需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ Q, o  F9 k) M) s! S: }
  2. #include <malloc.h>* U3 u5 ^- v6 B0 q2 l5 F8 u! F
  3. #include <sys/types.h>
    & s3 `' F6 d# C) a8 V  Z% z
  4. #include <sys/stat.h>1 x% s+ K2 y* e: }3 ?
  5. #include <sys/ioctl.h>
    2 K$ p3 k9 b; q6 Z% y$ B
  6. #include <stdio.h>
    % F) P3 w0 w( a, ^
  7. #include <string.h>
    ' q% }' g) S( r( c/ h5 i

  8. 2 L& v1 s" _# w' V
  9. typedef struct {
    - D5 t, f' ~- B, l+ ?! O/ P
  10.         unsigned int        e2prom_cmd_sub_addr;& h& }: a# O, _) T! `
  11.         unsigned int        sub_addr_count;
    - t5 e) w: Q6 B6 H* x
  12.         unsigned char*        e2prom_cmd_data;
    " B/ g. v5 I6 X# D: J  O
  13.         unsigned int        data_count;
      T0 {8 c( s$ B3 D8 I
  14. } e2prom_s_cmd;
    , P  P+ b7 B% t# h8 N- ?% s2 f

  15. 4 A- r; M2 p6 x2 A6 ]
  16. #define E2PROM_CMD_READ 1
    0 n2 f, d1 y2 z5 F3 W3 B. }# q
  17. #define E2PROM_CMD_WRITE 2, H& ?) D) b5 q/ x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 T* ~1 d# |5 z; _
  19.   u/ u1 a4 J7 i9 {9 V* P+ t
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    5 p3 t7 I8 A& E- O9 T2 t5 }
  21. {- o9 A: i5 U5 c' q* j
  22.         int fd, ret;
    " ?2 ]8 d1 P! A
  23.         e2prom_s_cmd arg;; [4 o! ^9 @* G; H) I
  24.         unsigned char buf[0x18];5 A# p: F0 I5 ]0 W0 Z2 v1 Y1 ^- [- j
  25. + q( o7 c. {+ o9 ]5 {0 M1 F9 A- Q! V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 ]1 b# n# E1 Z! O) A
  27.         if (fd  < 0) {" |" r0 ]* R( S1 F: w+ O* I' h# K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : U2 }; h& `- l! J# z' c% M
  29.                 return -1;
    " F- m- M9 f1 k& I, S- [& d& J
  30.         }1 x- W( a. L5 i3 O# E
  31.         arg.sub_addr_count      = 2;
    ; [7 }% }8 |$ v* i( W2 ~
  32.         arg.data_count          = 0x18;' D! O, Y6 `" u& X4 j0 F/ z  @
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    6 K4 E6 n. }6 X( x
  34.         arg.e2prom_cmd_data     = buf;
    9 Y5 n" ~! I" {4 k% i; J% u. y$ }2 u
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. v# r: s& b( s5 _$ H& `" f
  36.         if (ret != 0) {2 P, C+ ~% v. W3 ^& _
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);. s5 K& s5 ^) j" h: C1 B
  38.                 return -1;& @5 r% f2 Y2 U! h
  39.         }9 g* O- r* [- a0 q9 j1 x- V, O
  40.         memcpy(mac, buf, 6);
    # e6 s! J7 A- T$ x* [3 [! _0 k
  41.         memcpy(stbid, &buf[6], 18);# w; X! {/ ?" d$ u! \  ]
  42.         stbid[18] = '\0';& B4 T2 {# X5 ~, B
  43. 5 S8 L& m  Z8 c) c, u
  44.         return 0;4 B- p5 ~+ M3 y7 r; y7 C8 R9 p* v
  45. }
    ( i+ N! z0 S# ^4 V9 {

  46. ; G/ L8 [* T- D! t4 a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 ~0 [; y( S3 C5 z
  48. {' J* C# {. |/ _0 o2 P
  49.         int fd, ret;4 ~6 H# _8 L6 O# Z6 Q
  50.         e2prom_s_cmd arg;* \0 X4 n: [6 k8 y1 ?) S
  51.         unsigned char buf[0x18];. b# A' ]% p  ^
  52. / w4 ?$ P# @: l' u8 D1 ~
  53.         memcpy(buf, mac, 6);
    " z4 b7 T; n$ x! p7 D2 _
  54.         memcpy(&buf[6], stbid, 18);
    / @- H9 o/ e9 C( [* u0 Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' n1 R& r. W' Y- l
  56.         if (fd  < 0) {
    " w0 |7 B! B5 }
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 Z% p: P4 G/ V- i
  58.                 return -1;; |8 f' b$ I: }7 ^2 n
  59.         }
    1 r" p6 Y8 e- Z" F; f# X
  60.         arg.sub_addr_count      = 2;' G$ c  s, m; k  p6 t
  61.         arg.data_count          = 0x18;% u0 e7 }6 T" V4 z1 g
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 Y) ]; [( E, g; z8 G/ ^5 j. s6 D
  63.         arg.e2prom_cmd_data     = buf;8 L, B; o3 _/ i5 c
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);; n6 g- V- e5 R  {" D2 j/ Y
  65.         if (ret != 0) {2 {8 d0 ]: c0 E  `9 U6 a
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% n$ [; y  X: B3 J  W% ]
  67.                 return -1;' i8 G, _% \: l4 K/ A0 S
  68.         }; @$ ?) G3 S& u$ {

  69. 0 ^/ B2 j* L3 A! g% K! c2 H2 [0 ]
  70.         return 0;
    " V4 {: [' o1 X; R
  71. }+ K* J- h/ N# |4 Z8 c
  72. 6 L; t+ p0 {3 M. V5 y" I* V
  73. int main()
    , ^4 ^7 p- T7 D  W
  74. {+ t3 ]7 y! v6 j7 L0 _
  75.         char c;# W9 c+ T* T4 V, S
  76.         int i, macs[6];  b. r6 g/ \7 p4 c9 q
  77.         unsigned char mac[6];
    5 ]* |4 m) [7 i1 j
  78.         unsigned char stbid[256];
    5 E$ P8 ?7 J8 `% K; H5 ]

  79. & r& O; q8 v# K8 a
  80.         if (readparam(mac, stbid) < 0)
    , y, \+ t/ w4 J0 o& G
  81.                 return 1;
    ! V4 d$ X7 f$ q! Y

  82. ) Z- \) t, r4 _4 F, G: J9 m
  83.         printf("Current parameters: \n");
    9 @* n0 Z3 D/ A' `9 ~
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - g) ]/ R; j0 ?) M6 K8 J$ Q
  85.         printf("  STBID: %s\n", stbid);+ K  K6 h5 I; P  T% r5 Y2 n; N/ t+ S
  86.         , Q- z2 Z( z7 h: s6 e! C
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / I6 I# B1 E' ?3 m' v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 K& S2 z/ H& V' t  b) ^
  89.                 printf("Input MAC error\n");, o  ]/ P) L; x) j* O" C6 |3 t
  90.                 return 1;% o: r9 u* Z' {  \- [# k
  91.         }
    1 b1 P8 N9 [4 x1 `* D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 B3 E8 p0 r$ d6 {. F
  93.         printf("\nPlease input new STBID: ");' u4 p9 J. h! l0 M/ j# n0 U
  94.         scanf("%s", stbid);5 o- k& G( v( R1 H7 t, ^+ G
  95.         if (strlen(stbid) != 18) {" i9 m4 `; F. b& v
  96.                 printf("Invalid stbid\n");
    % e. @% A, x: Y: Q6 b
  97.                 return 1;- O. ?4 j8 S! e6 }6 K
  98.         }. Z5 u6 y; Z0 Q! `$ K: Z% G/ T* \7 `
  99.         printf("\nNew parameters: \n");
    & F2 U* {! J* x3 J: h6 ^" e7 f" f: X2 X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 A4 Y9 j2 G2 q% S4 G
  101.         printf("  STBID: %s\n", stbid);
    5 W/ [, z1 @1 {* x6 D, q

  102. 4 j  L8 ^7 B3 h
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    2 q2 `9 U1 H; T4 Z, v
  104.         for (;;) {' {. d) |" }) @  |! H
  105.                 c = getchar();. ~8 G! I  E7 `( k
  106.                 if (c == 'y' || c == 'Y')
    * t4 p3 e5 ]' A3 n4 Y: _
  107.                         break;
    3 Y# W: `4 _7 [
  108.                 if (c == 'n' || c == 'N') {
    6 D) \/ j4 X6 e1 g* f" l2 r) ^" l' M
  109.                         printf("\nAborted.\n");3 Z, z3 N% P; K3 U& R
  110.                         return 1;
    7 Q3 U( }% T: u( d  `
  111.                 }# p  z! M% J, L1 y7 D* \, y
  112.         }
    ; F5 q4 s. B2 u. R) e' `
  113.         if (writeparam(mac, stbid) == 0)
    1 h* a" D3 [  `
  114.                 printf("Parameters changed.\n");- L! F0 ~6 x  f  j0 r- u! j

  115. 3 I9 y5 e  Y! O" G- N. C
  116.         return 0;) S$ A3 r8 m6 F4 z
  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 # G& v  u% v3 N6 j
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 b( H' F+ D- G你用的编译命令行格式是什么?
0 V7 l8 z5 B, s3 `& ~
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部