找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15486|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    / b+ E9 d0 F; L# ?. U, a
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 g0 ^$ G% K2 a! i0 a! ^! U- l4 ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! }! x( A- C; _4 B2 w9 Pusage: himr <address> <value>. sample: himr 0x80040000 0x0& g# G$ h' z% o9 V

9 M% ~! e" ^- r* r! S' g- }: z/ z2 g4 l1 T
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: |& ?& f: s2 L# D5 I* N

% {2 M. V3 A  _7 _补充内容 (2012-3-8 09:42):8 r8 E/ N" t& Y+ K# P9 t1 Z4 o1 n
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( c; [. x2 e; e% X/ Z! x
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
9 ^0 B1 K, Y$ g' D; F
) I. U+ s6 \$ q% w4 e: ghimr <address> <value>. sample: himr 0x80040000 0x0
. d; F$ v8 y: Q; O
2 g6 {4 a8 i. H" {4 b例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; n9 ]% e0 J7 b0 I. }himr 0x80040000 0x00
  _& \% I! e; whimr 0x80040001 0x11
; s3 O, M$ U5 A9 jhimr 0x80040002 0x22# w/ f; b' i4 C* k3 D" V
himr 0x80040003 0x33
  O9 n! d0 m7 S; l+ L4 \( Fhimr 0x80040004 0x445 \- b: e- r$ F- {# O4 F4 z
himr 0x80040005 0x55
$ [* ~$ |' ]" }2 ^
! c3 ^) L2 O# xSN也是类似。
. O% H1 }" F8 l* U2 T# i4 B
% J5 G* m! H0 K6 Q' K1 y$ Q. S现在主要是,谁告诉我们MAC和SN的地址?
: a1 P) O5 I# x1 Y' ]! W, i
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 2 _  @- O) v. k6 Y7 G* Y( m) {) l
一直想找到运程修改MAC和SN的办法,苦于无解啊

- O; C7 m9 U1 }) A5 }3 K源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 k8 x  f5 _9 H+ i. z
! x3 y6 i- {- I修改的代码早有了。到今天不会编译。( U3 i7 X. \" o, f
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ' {) ?/ n. d4 m2 M. d
  2. #include <malloc.h># l9 {. ^# d0 B6 F6 ^6 x0 s( ?
  3. #include <sys/types.h>
    0 L$ `; w6 d/ _( U
  4. #include <sys/stat.h>) A- i. b' ^+ e: Q4 }  g
  5. #include <sys/ioctl.h>5 f/ G, _2 O5 M. J8 v+ z2 X6 u
  6. #include <stdio.h>' ]6 r- |9 h2 e/ e% N
  7. #include <string.h>: {  b% h! T5 j5 a

  8. 6 k' J& p9 S8 R( t
  9. typedef struct {
      t5 n& V% S9 h5 U" n
  10.         unsigned int        e2prom_cmd_sub_addr;2 {9 R$ U& a( N# Y0 f: e- Y
  11.         unsigned int        sub_addr_count;+ S; ]; J2 b& q/ a
  12.         unsigned char*        e2prom_cmd_data;
    2 k, H5 e1 V2 I* s6 j
  13.         unsigned int        data_count;3 n- r1 F) C8 f, `6 `0 Z
  14. } e2prom_s_cmd;; R0 L" S% {" }; r6 j1 z

  15. 7 f0 z# C- t/ k  U% D  ^7 U
  16. #define E2PROM_CMD_READ 1
    % ]. q: f/ Y7 F1 `; U" d
  17. #define E2PROM_CMD_WRITE 2- V7 l9 U6 U, a* j. {5 {6 J
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"& i4 S! H9 O/ _% r

  19. ! a" N- Y6 L; V5 b
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : y& d3 p" V5 Q5 h7 j; a
  21. {! b# s7 p0 T* O* X1 N% c7 w  v
  22.         int fd, ret;
    % M" Q6 z( t( V+ M
  23.         e2prom_s_cmd arg;
    9 v; H: t+ X# {" O; p
  24.         unsigned char buf[0x18];
    % H( i  I5 l; E. g2 n
  25. / {- |1 S- L0 ?9 b- a' H; \* O8 W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % x" O$ h7 ]5 `( z$ ]
  27.         if (fd  < 0) {2 j% E1 R. I' N# S! L( S6 P3 M
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. e6 L* V+ L6 y4 s
  29.                 return -1;& U3 B: d* R/ M/ v/ ?. F
  30.         }8 j7 Q, x* e: T  o5 w# z; Y/ q
  31.         arg.sub_addr_count      = 2;8 i$ k- Z9 b( D
  32.         arg.data_count          = 0x18;/ W( s, ~0 Y) S, t$ t6 j+ C( [
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    : v. I3 F7 z4 f
  34.         arg.e2prom_cmd_data     = buf;6 q; ]9 Q; \' ]2 E- z0 |
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 \6 v+ Z. F3 F/ J
  36.         if (ret != 0) {
    0 f: y' \  I( S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & y5 ~0 J  T) Q0 n2 o
  38.                 return -1;, w. |% t* q( j1 d
  39.         }
    + v2 K- S7 b  W
  40.         memcpy(mac, buf, 6);) x; {$ b7 B: G5 N) `. l# o  ?
  41.         memcpy(stbid, &buf[6], 18);
    3 V% c! Y! @1 x+ v8 V9 Q' [
  42.         stbid[18] = '\0';
    9 ]' T  E( E3 p5 }- |7 f3 V
  43. / q+ I( K+ U% W* S
  44.         return 0;& N) D+ @* L2 d9 J2 c5 Q
  45. }% B: B% W- R. N

  46. 4 C& h5 {6 ~1 w1 z+ v
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 q0 C# L, Y2 |' T0 L* v- r
  48. {4 V) o4 z! X0 m: j4 a% e( e
  49.         int fd, ret;7 j. O; C* E# k" \) a# i# u
  50.         e2prom_s_cmd arg;
    8 `& e& T/ u, D2 G5 E
  51.         unsigned char buf[0x18];
    % C. C: Y1 O4 Y2 @6 c4 x

  52. 7 Q, E2 H( n. P  W$ f' H7 z
  53.         memcpy(buf, mac, 6);
    5 ^7 z6 \5 B4 y- v6 V2 ~2 V) C
  54.         memcpy(&buf[6], stbid, 18);
    ) s8 N. ~5 ~0 }$ C! A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( h! V! \1 Q/ h' C0 R/ a5 f7 `
  56.         if (fd  < 0) {
    - t+ H( z+ s& i" P5 }% L
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 L4 @" S+ t& p" Q; V
  58.                 return -1;5 u' G. s: ]# c. F
  59.         }
    , V, n  A$ ^6 t3 Y
  60.         arg.sub_addr_count      = 2;" S7 Y4 S- v; C  l5 p
  61.         arg.data_count          = 0x18;4 j8 ?3 r/ q* V# q: u2 {9 M( J
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    0 Y( u9 b: L: C, m+ d, q9 ]7 t
  63.         arg.e2prom_cmd_data     = buf;
    8 e* w  ?1 n  {$ F1 K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ( H! R  Q! H$ u; f: {
  65.         if (ret != 0) {! g! W4 `; h9 C3 ^
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    + [# l3 n$ a4 h2 q/ G
  67.                 return -1;  Q) G- o2 N" Y7 ^8 `8 D& h
  68.         }
    5 H  l' U( y% X2 M1 k9 Y
  69. * w) H5 _0 v& [5 L6 Z
  70.         return 0;0 K% l5 J7 U* D/ x1 D2 R+ A& o
  71. }
    % j3 o  q, p2 C5 P' ^

  72. : Y4 z) S, I$ q' v( Q, c: O
  73. int main()
    + u) E7 R( ~: L% b$ G( L( C
  74. {
    . r# [' X. f. h7 k5 x* ~% T
  75.         char c;+ C) s9 h% }1 T4 p* a" W, j$ ~
  76.         int i, macs[6];
    ; F; m6 c- n& I7 N( A' i8 q
  77.         unsigned char mac[6];
    / n. L! J$ ?# [% T. |" [
  78.         unsigned char stbid[256];" k" e# o% M# T; _# R

  79. 9 l( J+ b& O; p( m
  80.         if (readparam(mac, stbid) < 0)" y- E/ d0 [; }! L: J  B; M& O( ]0 l
  81.                 return 1;
    ) t0 t/ f+ u# x4 \
  82. ; w! }* x. J' f6 k) r
  83.         printf("Current parameters: \n");
    ) f( ~$ E$ y7 m) U# F$ X, K4 f- b6 X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 @  B7 \4 U. m, U+ a) r: P8 V! |/ d
  85.         printf("  STBID: %s\n", stbid);
    7 p" p9 _2 O: Y8 a: c  @/ A( a3 r
  86.        
    3 ~* x; ]7 a+ X/ I! D3 V
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");' [8 {$ I+ X+ \& d
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {( r! a( ^( @/ m( u
  89.                 printf("Input MAC error\n");" I; J$ r! l, \$ t$ A
  90.                 return 1;1 Y4 q9 V) t. z) v- L: P- g  C
  91.         }$ d% U, z5 o9 `9 q0 E/ q$ q! b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( A6 y$ x2 Q& x1 \! i
  93.         printf("\nPlease input new STBID: ");7 R9 i4 }5 ^9 U* I1 l! I
  94.         scanf("%s", stbid);
    ( k& Y  ?5 U. f1 U% d4 R
  95.         if (strlen(stbid) != 18) {
    & n# }# ^  ^! U" L9 v
  96.                 printf("Invalid stbid\n");
    , e$ c4 i1 K. N, k/ x
  97.                 return 1;- e  v4 o/ w" T- `. z/ ^- `
  98.         }2 q( M! [; H- {
  99.         printf("\nNew parameters: \n");" a# C$ V. C1 P! w- P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# n/ P( j( w: z* B
  101.         printf("  STBID: %s\n", stbid);6 J" [7 c& C( R/ g

  102. 6 O7 O: A. E8 _  t. z
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # D, H+ P; u  ~! g- x9 g! Y) x
  104.         for (;;) {& d4 U+ h9 S0 \# t
  105.                 c = getchar();
    - n8 C: x3 B6 [9 L7 l$ J  W5 Q. x
  106.                 if (c == 'y' || c == 'Y')
    0 m$ K# q# c5 ]' [$ Y
  107.                         break;& j  w2 m9 M  r
  108.                 if (c == 'n' || c == 'N') {
    ; b/ U, W2 {; F( \5 K
  109.                         printf("\nAborted.\n");
    1 P0 h9 H, m, v2 ?. y
  110.                         return 1;
    : P7 L: ~* c" |/ R& {! v' W- N
  111.                 }; X: Q0 d) N- l9 P
  112.         }
    5 \7 N" _7 ~9 s8 \4 p
  113.         if (writeparam(mac, stbid) == 0) " q9 |( N) W' C" D! }, h" t1 c
  114.                 printf("Parameters changed.\n");0 H5 g* o/ c9 b, `5 }% p2 o& n/ \% P
  115. 0 D9 G; @6 L- V: w6 ]
  116.         return 0;
    , n8 M) Y3 r* t) U( T) T( C# [
  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 ; f+ T, R5 h3 |* X0 T) c8 l
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
! e( b: D  e/ b) Q1 T, d( x* U
你用的编译命令行格式是什么?
* b; u" R# H" y7 a) l- ]# W# |; S% I
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-10 16:58 , Processed in 0.028126 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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