找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15612|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    % g) g$ y" U2 E, Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- e6 J; Z% M* c
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; d, D) _" L! ]' m# [/ V( r/ `5 nusage: himr <address> <value>. sample: himr 0x80040000 0x0
8 S8 c2 I* w) O2 S: |5 g7 R0 K1 G+ N& A  H0 ]5 Y
, E& F; c9 A* S% T9 ]. ^! y1 H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
2 y( k4 i# C  _+ c
& }! C' y% j& [7 ]# w' f7 F补充内容 (2012-3-8 09:42):1 T- j2 ~, n, b( [) z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
# C5 [+ a/ b8 [1 ~  q1 S这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。, g' J, |& w9 M; W8 i

0 z4 }% ^& }% P: lhimr <address> <value>. sample: himr 0x80040000 0x0* R0 L7 ?) t! C% p3 E/ T
4 @1 K4 p  ?" U( ^  N
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
! |3 Q* G; y8 N2 q" N, p* U% ihimr 0x80040000 0x001 i1 x; j, b9 q% ^" d* Z, o
himr 0x80040001 0x11; u; N  u9 \# H2 o
himr 0x80040002 0x22
/ v! x2 g9 C4 @( K- Rhimr 0x80040003 0x33: A- O' D  f' f" [0 v. c( @
himr 0x80040004 0x442 a7 p5 E; m, N" D9 _) l6 X/ c  T! n
himr 0x80040005 0x55- X8 Y; r$ r- Q5 e& ?6 J
0 w( c" S+ w, I) _
SN也是类似。. c% l5 E/ C8 w% _+ a# |

" k* V$ Y6 f! Z' O# j0 m现在主要是,谁告诉我们MAC和SN的地址?4 m! }" J* U9 L' ]
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
6 {0 k& |* @- D- l, L2 D; y9 ?一直想找到运程修改MAC和SN的办法,苦于无解啊

0 P/ p% b. V4 J6 K: h+ P" E源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
5 G1 m0 K* K. p( `7 A  r
# W3 A$ Q% d2 G3 v9 j& b5 @修改的代码早有了。到今天不会编译。1 i! ?9 L2 e" m- a' `" w' d
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , \: {( x: V; c' @
  2. #include <malloc.h>. z; q8 N# S9 y
  3. #include <sys/types.h>& h8 B7 ~' B4 `5 S1 @
  4. #include <sys/stat.h>
    ! T+ Q% f( {) q1 w/ s
  5. #include <sys/ioctl.h>7 s' e3 O) }6 {) m1 f
  6. #include <stdio.h>
    & K: K5 S2 S' t/ i+ r" ^/ O) X
  7. #include <string.h>' f8 x$ }; d& G; P% |
  8. - O; U! j0 \" ]% W& n" G8 F5 W
  9. typedef struct {: q5 m5 R% b8 r: ^
  10.         unsigned int        e2prom_cmd_sub_addr;3 ?( D3 R  G/ |1 _9 s0 h
  11.         unsigned int        sub_addr_count;* [" \$ i5 x, Y  F. k* U
  12.         unsigned char*        e2prom_cmd_data;* t1 D2 G% a& G0 [+ m% p2 N
  13.         unsigned int        data_count;
    * h0 K$ k* T+ n3 Q
  14. } e2prom_s_cmd;+ ~( x) J( ^% O* {+ m

  15. ) C# X& }0 q7 Y# @9 H9 o
  16. #define E2PROM_CMD_READ 1
    ; K- q4 s6 a' V! g) o
  17. #define E2PROM_CMD_WRITE 25 a8 H* G  ]3 a# U5 N$ c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"5 n1 a* m$ [9 y3 G

  19. . c! \9 a/ ~4 V. a9 m. P
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" A) H8 H3 H' ^  m! H/ R5 l
  21. {
    5 B2 C; C" D$ |1 U
  22.         int fd, ret;! q7 H* F3 b5 F" j
  23.         e2prom_s_cmd arg;  v! }9 f+ s; f" D
  24.         unsigned char buf[0x18];
    # U( Q% V7 H+ k" e( v  f2 i
  25. & C) f# @9 W5 J' e5 a6 {
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 ~) D% f- ?$ C& _. q, H0 R
  27.         if (fd  < 0) {. ^6 i( S  E4 A! A9 H* g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + f5 {. F; k5 F+ R
  29.                 return -1;+ d8 N$ Y# W) f: h. P
  30.         }% h3 @0 V  a) z, J
  31.         arg.sub_addr_count      = 2;
      l, r8 C, a+ V: l
  32.         arg.data_count          = 0x18;4 \% E: X& ]; G* Z
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    + {; j6 h1 }( h& c) b! u
  34.         arg.e2prom_cmd_data     = buf;
    2 G. b) P3 A  E5 Y; e1 T0 T+ j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. A/ ?% F  Q2 U2 Y3 }
  36.         if (ret != 0) {
    : t7 N4 L4 e+ P/ |1 v
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    / }- [0 [+ }3 G. Z7 D9 \4 M5 P
  38.                 return -1;! r  N# @3 O7 Q, F/ U8 S
  39.         }. d3 l- n8 J+ K. z- N' b
  40.         memcpy(mac, buf, 6);
    ( p6 j) C3 W1 y- a( H) V/ \
  41.         memcpy(stbid, &buf[6], 18);
    ! t9 z0 F8 `7 i$ E
  42.         stbid[18] = '\0';9 ]7 p5 s, W2 K& q3 K$ Z1 F' F

  43. - l6 ~+ O' r2 u5 ^  M
  44.         return 0;0 |* f) n% |) v8 U& ]5 |3 M
  45. }- k4 u( m! F+ n5 G

  46. 9 u, K, l# E+ R& A, y) `/ P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    1 C9 I* ~% U/ f- O- w: c5 o
  48. {
    / F4 Y2 ?1 Y' }8 N* ~" Y# q" T
  49.         int fd, ret;$ o- j' {- J) Z( m* I. O8 o( |/ b# }
  50.         e2prom_s_cmd arg;1 y' Y# U) t6 A6 B/ ^% ?5 H
  51.         unsigned char buf[0x18];* R, |" B2 Z( |4 {1 p
  52. 1 \; H( P3 r  b7 O
  53.         memcpy(buf, mac, 6);
    7 u! k7 k" w, d3 M
  54.         memcpy(&buf[6], stbid, 18);
    + U- @, L7 i4 _& a
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 h' C2 Y, U3 j* ^: _( g
  56.         if (fd  < 0) {. Y+ f7 b: {7 t+ K; X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; n" }# I4 g4 i5 ~
  58.                 return -1;
    * C* i; h) p; d7 x0 \# s
  59.         }
    1 W; D) [9 i9 C+ y
  60.         arg.sub_addr_count      = 2;: F. s' {3 t- y0 R% j) T( ?
  61.         arg.data_count          = 0x18;
    1 o$ z! R0 B7 C; [
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    0 Z8 E: O) B2 ?4 _+ U) C% c
  63.         arg.e2prom_cmd_data     = buf;- j! a- G- `/ p# _
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , U1 e& ~( f1 G+ n% t) P+ V9 L
  65.         if (ret != 0) {" `- ^2 Y, R) M, z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: H0 Q7 ~3 k- l/ I+ w6 G6 }# X% w8 T
  67.                 return -1;
      E- l8 X1 z: B- F  v3 l- r) B
  68.         }  F0 I3 Y* Q/ C9 B' E1 T) t

  69. 5 O0 ^, j+ ^4 v& \6 t
  70.         return 0;
    ( A6 I  b4 m$ w- O+ \
  71. }
    + [" T+ ~# b, |- C) G
  72. ' W1 B) S. K4 U7 A7 I6 I8 D; T
  73. int main()
    2 L9 n( {6 y8 h( {" V, X
  74. {4 ?  v+ Z# I# w; \: l" g( c
  75.         char c;
    & b5 V" V" N; |' J
  76.         int i, macs[6];
    ' w4 I5 ]* F; U2 N( w
  77.         unsigned char mac[6];8 l, A- F3 H1 P; h  t2 f
  78.         unsigned char stbid[256];
      g6 Y5 d2 a" k+ \$ a) i
  79. . j. \4 m- i  B# w4 s  O! G* W9 c$ L
  80.         if (readparam(mac, stbid) < 0)
    , Y9 M' M0 s. E# _% a
  81.                 return 1;! N4 Z8 E/ u, S

  82. " f; B" D/ p/ D
  83.         printf("Current parameters: \n");- H, R$ V& d; v# k
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 \& ~/ K7 z! k# k0 I5 j9 \( j" P9 k
  85.         printf("  STBID: %s\n", stbid);$ l! P5 F4 E% k( ?7 V; k9 r
  86.         0 J% {. n5 p: n# H+ z& G9 S
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; J6 _6 E( {8 Q. \7 T  M
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {# V7 T% X$ H$ |2 T2 e
  89.                 printf("Input MAC error\n");
    6 K3 \3 I$ [, N# n6 V# H
  90.                 return 1;. c# v5 n: e% {; A/ k
  91.         }
    . J& x$ H+ g. E( P2 `$ ]
  92.         for (i=0; i<6; i++)mac[i] = macs[i];; O, Z5 H  f/ W
  93.         printf("\nPlease input new STBID: ");
    3 K. A" Z- M& w$ s
  94.         scanf("%s", stbid);; g" s' D/ U9 e" M7 S
  95.         if (strlen(stbid) != 18) {
    ! U) @. X; I' \2 F
  96.                 printf("Invalid stbid\n");7 U8 @: O/ P7 E' m" _- N( l
  97.                 return 1;4 I5 f" H! ^6 S9 ~# }
  98.         }
    8 S# o' n4 i" P4 U1 `
  99.         printf("\nNew parameters: \n");/ l+ G* N2 N$ Z2 j# ?# ^: \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* |  i2 B5 C4 W: Q6 [
  101.         printf("  STBID: %s\n", stbid);
    + W: c7 w5 b$ u' A0 H! _- }' k% E
  102. + o( W8 S2 S: w0 r/ `7 a
  103.         printf("\nDo you want to change paramemters? (y/N) ");! ?3 Q7 A, Q' u& ^" }& s
  104.         for (;;) {
    7 l2 c9 M+ {) N& J8 Q/ y
  105.                 c = getchar();
    5 c5 n: d' F7 U0 V8 g! n
  106.                 if (c == 'y' || c == 'Y')
    ; X# I! ]4 p: s: m: e7 W5 t
  107.                         break;
    + _$ N( \( B/ _' w7 t7 {7 \& J) t
  108.                 if (c == 'n' || c == 'N') {
    4 i4 {  x3 N0 Q2 I; y: A0 B
  109.                         printf("\nAborted.\n");
    4 k4 [# q0 j% K3 n  Y6 V
  110.                         return 1;! v, H! O* A0 A, U
  111.                 }
    0 A' \7 O$ C5 @4 ?
  112.         }* X/ ?# i' }0 |  _/ h& A
  113.         if (writeparam(mac, stbid) == 0)
    " r- ~/ i, _, z! s. M. Q# O
  114.                 printf("Parameters changed.\n");! `! K% f6 @5 e+ `7 E/ g

  115. # C, y- V5 C/ |7 H" h' U
  116.         return 0;
    . i6 |# \4 C/ A. n& d9 T: R: a
  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
6 V  g# Y9 D+ z$ f) Q$ i在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
- K! J- k; L+ W( P7 y* t
你用的编译命令行格式是什么?
5 c( W% u2 n; g$ H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-17 23:07 , Processed in 0.024079 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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