找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14961|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ s  ^6 @: r) u$ t- n1 C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : z( h/ ^- n5 T2 f
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 Z% ?; _' K& V/ _9 m# V
usage: himr <address> <value>. sample: himr 0x80040000 0x0
% z, Y5 l* l8 C% W/ z% H1 i" P: E4 b
, |8 }6 L5 M& x! n
2 c1 N3 x! b5 x* N# K2 M$ U! o2 Q2 B不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?) E8 p/ j( e0 F" q- r" S
9 s  a6 {; }0 K- D* z3 |8 _1 D
补充内容 (2012-3-8 09:42):- a$ L  c$ |$ ~7 {1 I! k
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* ~* J8 g% p) X5 H) i( r9 ^这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
3 h1 r- {2 u5 `
' `5 J  x2 v: w% q6 ~8 ]himr <address> <value>. sample: himr 0x80040000 0x0
2 e# M1 w2 \% T2 }  C- r8 X( X! Y
. V4 ?1 b1 H; u. X# o例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: @- w# X3 ]( t/ }himr 0x80040000 0x002 B8 Q, u& D4 O- p0 d" Q  U
himr 0x80040001 0x11
3 _( n; E8 e- E3 k9 S5 Ehimr 0x80040002 0x22$ J6 Z2 V4 p+ D
himr 0x80040003 0x33- R0 r0 T6 V# Y. |# O3 f
himr 0x80040004 0x44
$ A/ S5 o3 }" m( ]/ W6 M; Thimr 0x80040005 0x556 [; Y4 y1 M: X* a- Q

5 n1 g: L/ ?4 P2 MSN也是类似。/ j/ Y$ G( n! G! P$ j  V& i" C
0 `* v/ S; A7 J* Y, c5 S
现在主要是,谁告诉我们MAC和SN的地址?7 Z& k7 w  h, z! z% k6 I  m
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 2 [  T$ p& Z4 }* ?" \/ |, f# Z& i+ ?0 ]
一直想找到运程修改MAC和SN的办法,苦于无解啊
: G; ]3 ]* m% Q) ~# o
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' n- d/ j7 G! O* F% Q) f* K9 u$ l% F) C: i& O* n& U" p
修改的代码早有了。到今天不会编译。/ k: V1 k' r! O3 J; `
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % r% S. n( }, |
  2. #include <malloc.h>( \  L- y: v3 J% l( l: u
  3. #include <sys/types.h>
      b; t4 S$ S, H% J! r6 _
  4. #include <sys/stat.h>
    6 ?: _: o* ^6 g8 f+ f3 }3 v
  5. #include <sys/ioctl.h>( e4 O- e  N. L' c
  6. #include <stdio.h>0 A3 |% i& n4 }+ H' [0 j  g( L2 O% ^
  7. #include <string.h>
    0 a- ]+ s# g, S  P4 c' O) a

  8. 4 n! j* S% g" q; N" @, J
  9. typedef struct {- }" P; t6 }& R2 X# p, h6 a
  10.         unsigned int        e2prom_cmd_sub_addr;
    7 [* b1 j0 W' g" Q+ H* r3 N
  11.         unsigned int        sub_addr_count;
    * n0 W) P, M" I, [' _
  12.         unsigned char*        e2prom_cmd_data;3 T3 E7 m' {/ B5 V6 F7 @$ F3 A' W
  13.         unsigned int        data_count;
    + P( [1 T/ D4 t. Z, k( H
  14. } e2prom_s_cmd;# P# R. {8 U) ]  M8 _

  15. % [0 j; J# s, i1 c2 w# M
  16. #define E2PROM_CMD_READ 1
    2 n5 I8 L/ P3 ?
  17. #define E2PROM_CMD_WRITE 2
    - x0 |- a5 E. N3 f4 p2 E8 `# n4 O2 w
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16") ~6 [0 j/ e" N: |

  19. + g5 K. h$ N$ A1 L: P: u
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( K: U9 G  f4 w( r
  21. {( [) O# d! ^: l7 `: r
  22.         int fd, ret;  e: e& K8 D6 y7 g0 s- t: V
  23.         e2prom_s_cmd arg;& U0 d/ X# }6 G# N. r2 m" K8 D( ^
  24.         unsigned char buf[0x18];3 F& G. o( a; p" B- L1 p/ p
  25. - h6 k4 F/ A4 M2 r$ R$ U
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. Z- U6 |/ V* e# }
  27.         if (fd  < 0) {3 Z1 M. @+ s) m, f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);' I  _  T- K, g: V
  29.                 return -1;
    0 |5 ?% v1 `9 u; S* A
  30.         }! A; ], ]+ ^; r
  31.         arg.sub_addr_count      = 2;
    . i* b1 h0 u0 |
  32.         arg.data_count          = 0x18;; o/ O- h2 V' L1 N% g/ b3 h
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 n- a) }' ^$ |2 P, o9 f4 l! g
  34.         arg.e2prom_cmd_data     = buf;
    1 ^9 R; E2 b& R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' i" D' Q3 O5 G/ G' }1 l
  36.         if (ret != 0) {
    0 G2 w4 p$ k3 v# L) Q" D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 Q% o7 F  L& o/ n, B
  38.                 return -1;
    * ~) J! A. F9 Y! r( f+ h
  39.         }9 n; H+ A* f3 ?4 Y( i
  40.         memcpy(mac, buf, 6);) }4 z- i! U5 j
  41.         memcpy(stbid, &buf[6], 18);% J4 H) V6 w, F: I2 ]
  42.         stbid[18] = '\0';
    9 G$ s7 Y& V) T* f* @& O

  43. ! _0 a1 \7 E: x/ s
  44.         return 0;) [& f4 G8 e8 }: F) A. E8 ]
  45. }
      q0 S- T! T# h" n- N7 u0 g3 [" j% t
  46.   V! g4 b8 u# G; e
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 n. b- @2 a- P# C  u- T0 _. r
  48. {
    6 u% M7 X, b/ a7 v% ~
  49.         int fd, ret;
    % K; k- W4 [% h, K
  50.         e2prom_s_cmd arg;% ?1 F) W9 @; n& |/ A: j
  51.         unsigned char buf[0x18];
    6 Q& C( X2 Z  ~
  52. ' B' |& J  V4 g' o6 r5 v: h7 d
  53.         memcpy(buf, mac, 6);* w! T; }+ z" K; L  t0 `8 y
  54.         memcpy(&buf[6], stbid, 18);
    6 s5 F  a% Y* |2 u
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 L9 x1 k* P# O" m9 M* c& Z3 L
  56.         if (fd  < 0) {
    / \  |, B7 y- G! ^4 m' R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      c7 ~3 _$ j. h, l% M& V. b- O
  58.                 return -1;' ]) m4 o5 h" w7 p9 @* T$ T
  59.         }
    % f" ]) i  K8 V% W3 |
  60.         arg.sub_addr_count      = 2;+ Y( W, y7 U$ F! R2 F" n' U7 A
  61.         arg.data_count          = 0x18;
    / S' d( o8 G9 p$ l+ j* }
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    , W" n7 E2 \6 W
  63.         arg.e2prom_cmd_data     = buf;
    ' n' V' p% p$ S# N. H
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . f- J) Z# A# c0 K2 J7 v) U
  65.         if (ret != 0) {3 ~- v- z+ |' w0 e" ^2 g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
      ^* ^. E: \$ g  x4 F# t
  67.                 return -1;/ K  B' @6 \8 w! u/ l" t( h9 O4 h! m
  68.         }/ ?. s5 \4 a7 A  }0 h! Q0 [2 s

  69.   P1 A+ A/ {' h- H. e& F$ g
  70.         return 0;: {0 C/ v* }# \1 g; ~- K! H3 Q
  71. }) X% X" U) i, W- i* e1 B
  72. + |7 O* z* ~/ U% [1 D; i
  73. int main()
    , U2 |9 T! B$ N
  74. {
    $ @8 d0 M# [% {$ S
  75.         char c;
    9 B& ?  A4 F  ~& C
  76.         int i, macs[6];
    ; P7 w) T! h* L& B
  77.         unsigned char mac[6];. f- q& L# A5 m
  78.         unsigned char stbid[256];. a6 S6 i2 |2 z. f3 [& d6 D
  79. 2 d( B$ L$ \$ a0 h; R0 q7 t% p
  80.         if (readparam(mac, stbid) < 0)9 ~7 `& Y5 G. F7 @5 S
  81.                 return 1;/ ?& i8 O/ S6 Y( h1 G

  82. , e7 O0 m0 d9 p4 E+ L/ R: U
  83.         printf("Current parameters: \n");
    ' f% e% [4 X8 U% ~7 Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) g' t3 w- U0 \: y: |  X- t3 y
  85.         printf("  STBID: %s\n", stbid);
    3 c8 \" M9 @, b  H
  86.        
    8 A# e( U  F" i7 q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ V9 j. t2 M& ^1 h1 I/ |6 [$ k+ C
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + E4 w6 O' S( q* [. ]) e( V
  89.                 printf("Input MAC error\n");# m2 F5 |' P8 U* L
  90.                 return 1;8 c- @/ U/ W+ X1 x, Y3 g7 G" {  f
  91.         }
    6 s+ Q* e! V; W/ I9 b5 ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 O1 i$ Y4 s9 F
  93.         printf("\nPlease input new STBID: ");
    : H7 x% X0 Y: W& M- z0 U
  94.         scanf("%s", stbid);. ]) M9 z6 ~* `: E
  95.         if (strlen(stbid) != 18) {6 O; j/ \+ m0 x" a: X
  96.                 printf("Invalid stbid\n");
    ( T' ~* y+ s" d) |. \8 r
  97.                 return 1;, V! o( A6 I1 [& F# r0 o8 l9 m
  98.         }' B2 w6 |: l( r+ W$ E0 P
  99.         printf("\nNew parameters: \n");
    - s- q( \: b9 _; y6 m
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- s* B- C) x1 Q& S0 m9 W
  101.         printf("  STBID: %s\n", stbid);
    " F1 W" u& {' ?' V4 N: d4 J8 t- y
  102. ! X1 x, }) s9 Z; K7 X4 W
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    2 _# b% v# r& h, l- }$ ^
  104.         for (;;) {# G0 Z6 |" @. ~$ G
  105.                 c = getchar();% F  P# h# B8 q8 @$ M/ b
  106.                 if (c == 'y' || c == 'Y'): F1 D) {7 R2 ]8 R! U
  107.                         break;, @; }  L  h0 E; ~6 z% r
  108.                 if (c == 'n' || c == 'N') {
      ?4 m7 p/ @; j" T0 p" |  S: A
  109.                         printf("\nAborted.\n");  _. Y1 i2 W. ?2 |1 l" j7 N
  110.                         return 1;
    ! _! J' l" t7 w
  111.                 }
    ) B& m% s) O8 {' I0 _
  112.         }
    # k1 [  }: h, j5 i& s% D( M/ Z) c
  113.         if (writeparam(mac, stbid) == 0)
    # U9 c: o% h' H4 _7 }
  114.                 printf("Parameters changed.\n");
    ; S- Y% x! v& U. T& B0 N

  115. 6 H( @6 z% B! w: P2 i2 Y8 R0 K7 F
  116.         return 0;( c6 P7 ?* Z8 s% ?+ y) l
  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
# B2 ?7 ^( j/ t* ^' f6 B! {在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
& J) _8 I! m. ]6 P  a
你用的编译命令行格式是什么?
1 R9 u8 P# r* X
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-4 14:19 , Processed in 0.025169 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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