找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15057|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) G1 X+ f6 o. q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' H9 m  Z8 a9 c4 [0 y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
. v4 h" r% d+ a6 l7 |1 D4 \usage: himr <address> <value>. sample: himr 0x80040000 0x0; o$ a/ T) A5 h- s! ^: X+ B

+ n6 a3 c" U% X/ @$ r/ q2 v
  F9 Q  x% ]3 a; T2 e不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: w8 v& d9 V. h

. r' F' t' H( d2 E, A补充内容 (2012-3-8 09:42):9 N- O5 C, b& A! n9 q
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数0 t1 f* }2 a3 \+ t
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
& p' ]) k% p3 H, e) v. d* k; t( D* R6 V  h; y. T3 d
himr <address> <value>. sample: himr 0x80040000 0x0, s. `+ g( g, O3 M; s6 X/ R* Q8 k& D- B

' {6 z5 r5 V* L" ~3 H7 o; [! x例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; b5 I5 Z  V1 O$ D7 [) M( v' |himr 0x80040000 0x00
  T; |$ x0 H+ ~+ E6 L, Yhimr 0x80040001 0x11
- V8 m7 q) ?6 o& k/ i! c0 t: Jhimr 0x80040002 0x22
- v1 J& Z0 S* s5 J* phimr 0x80040003 0x33
& ]0 ?7 ^4 L8 X6 e9 Rhimr 0x80040004 0x44% k: v3 J& ^% j% B" g, w
himr 0x80040005 0x55/ r& V- E0 G" z# R: l+ R9 h

: Y6 B; D2 [" [! [SN也是类似。( i) R6 C; B; E. C

1 D+ _" K  t7 e! D现在主要是,谁告诉我们MAC和SN的地址?' W9 S9 @0 s( H9 ]- I) b
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
: f, ^6 i( b: |$ t" S3 K一直想找到运程修改MAC和SN的办法,苦于无解啊
0 j3 x( S+ T, J& S( D4 }
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; H  m, v* y" e/ _; T) v
' N$ o6 }9 p- p- T" b- [5 s8 H. m修改的代码早有了。到今天不会编译。
" J2 M2 o! n( x" Z; f3 V- M需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 x" t, U4 h% b' F2 Q* O
  2. #include <malloc.h>
    % @; Q/ C; a. G; N9 ~  \
  3. #include <sys/types.h>' d% t  n5 u7 T! F0 C9 a
  4. #include <sys/stat.h>/ ], @  ?" K4 S% _: M+ \( ?7 t
  5. #include <sys/ioctl.h>
    1 u8 U+ Y+ l/ T0 g
  6. #include <stdio.h>7 x$ m$ @0 {3 x: t
  7. #include <string.h>
    % u- D# m( x3 l# R. |0 ~  l

  8. 5 [# X& m3 g2 D/ J$ ~, w, P5 `
  9. typedef struct {
    0 S1 P* i6 `. y8 H  X
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! s" ]& {, s. }7 u" j* q9 y
  11.         unsigned int        sub_addr_count;
    * ^0 x: |, h- l. U$ B7 c% Q" g1 ]
  12.         unsigned char*        e2prom_cmd_data;
    # T& x& Z! N# e$ E
  13.         unsigned int        data_count;
    7 t6 n9 M5 l' q9 ^3 O; w% a
  14. } e2prom_s_cmd;
    7 C( ~2 s' E: C/ @" Z8 C
  15. 4 u5 `: E$ r  D. L, B
  16. #define E2PROM_CMD_READ 14 i9 S" [8 |6 v
  17. #define E2PROM_CMD_WRITE 2
    1 ~( E- O3 B- J& X, n6 n
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    9 ?: k! B) E4 o7 D1 n9 l" ^* g  L
  19. ) b/ I( @* `' @+ ?3 m& p4 y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 ]1 P6 A  y) ^6 V, a( k2 w* ]8 G+ i
  21. {) e' x1 L: i$ a7 q3 o2 I( r
  22.         int fd, ret;; n. l! ^' _2 s0 P) p8 s1 b* G: X5 V
  23.         e2prom_s_cmd arg;. }8 w1 g- r/ K6 Y' a/ F
  24.         unsigned char buf[0x18];% V& g! d8 Q. r1 L" Q* }
  25. 4 o: u! K  b) O, O1 T6 ]( A1 d' m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( A' ]- L7 T2 n: r: @
  27.         if (fd  < 0) {
    3 X$ N! I" A' P8 d
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 s( g% E& w) d7 j8 \" ^- T
  29.                 return -1;/ s7 g: s- o3 H! S+ R; H  `  N
  30.         }' D8 r% T2 }9 j/ z( e8 v( {
  31.         arg.sub_addr_count      = 2;! p, A7 [! b/ e/ b4 d
  32.         arg.data_count          = 0x18;' A' H: b+ v, O/ J
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 W7 z  ]' J! s6 J' w
  34.         arg.e2prom_cmd_data     = buf;% y7 z, G0 k% W, j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 ?% p, _" w! q4 _- O0 v
  36.         if (ret != 0) {
    ! L/ q) Q4 J' |1 U/ y7 O$ f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; L$ P" ~5 |2 N
  38.                 return -1;
    0 Y1 D8 t0 W) H
  39.         }
    0 K6 x0 U5 _7 V# Z$ b% W9 v9 j. N
  40.         memcpy(mac, buf, 6);
    $ O% }6 a: F, [0 l& J3 r
  41.         memcpy(stbid, &buf[6], 18);7 ?9 D' j+ L1 V# e0 L1 e
  42.         stbid[18] = '\0';+ v$ d7 f! e! E

  43. ; ~5 K/ @+ N& }+ K* B( H
  44.         return 0;
    6 l+ W$ ^- b) o8 Z# H5 {
  45. }
    8 t" ^, n! z" }  e( b; J( g& _
  46. 8 G0 h) @( V4 k8 ?$ ]3 v
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    2 h: n; l4 Z1 o7 c9 M& K
  48. {5 _2 a# Q1 n8 Z
  49.         int fd, ret;) r3 l3 a7 r/ `* T9 [5 J
  50.         e2prom_s_cmd arg;8 Z8 Q1 d6 @1 r5 x
  51.         unsigned char buf[0x18];
    0 u6 |% n$ L! }6 l7 ?& F" g: m

  52. : i  n& x6 _7 s4 g
  53.         memcpy(buf, mac, 6);9 N, j2 }  j4 M( y2 d, J2 z
  54.         memcpy(&buf[6], stbid, 18);% y' R& I8 @; f% Z4 i& u
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    * W' u4 L/ P3 }# T8 j
  56.         if (fd  < 0) {
    : Z# b, A' Z( ?# z. E8 D  K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ a/ p- ^5 G' G; M
  58.                 return -1;
    5 z8 ]  p5 K+ ^% c
  59.         }" R* n, q2 E) c; x9 t- @
  60.         arg.sub_addr_count      = 2;
      I+ e  e8 e/ \% T# {& }
  61.         arg.data_count          = 0x18;0 q0 @; q( ~6 }& k( t( h3 e
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( _: w, K6 c1 {8 L2 E$ [7 M9 S1 O, G
  63.         arg.e2prom_cmd_data     = buf;
    ' k, m5 M' W2 s6 N+ }2 @+ ]
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 M, S7 Y4 l6 O& K  ?5 U- _
  65.         if (ret != 0) {0 k" P- @3 H7 Y- u/ W; C- v
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. T( o4 ?4 U3 B" O; A7 @
  67.                 return -1;
    ! N3 I  r6 z: N1 k& F' s8 f% e9 X: d0 ~, P
  68.         }
    ) [* Z- e0 ^1 ]2 C3 N: ~5 L. o- E
  69. ) q$ b! l& t6 N& D" Z: I  ?% s
  70.         return 0;
    ; P: G5 b1 {( T0 i9 M& C$ F2 l
  71. }
    5 `% p. z4 |1 q3 e) I5 x0 U
  72. / n# D+ A) r6 F5 {. r
  73. int main()1 b! H& f% {5 [: \) F& h
  74. {
    - r- Z# h/ F# _, {3 E& |+ ~
  75.         char c;
    3 D  ^3 ^4 [2 q4 j
  76.         int i, macs[6];
    3 P& y  l$ D( J( g
  77.         unsigned char mac[6];
    ) i) ^9 ]- G5 x9 c+ J/ w( e
  78.         unsigned char stbid[256];
    5 i4 O  ]8 @( k& y( y( e

  79. 5 G; S+ T* Q: D4 [  k7 m
  80.         if (readparam(mac, stbid) < 0)
    9 P3 d+ R( i$ _2 k9 |  Q1 N7 {
  81.                 return 1;
    4 P- u9 t* N- u5 {
  82.   G, U- T5 B3 f2 z1 Q+ R4 \
  83.         printf("Current parameters: \n");
    " J% Q2 C7 c4 ~% B& ]0 u2 z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; q  w; M: Y% C) v
  85.         printf("  STBID: %s\n", stbid);# U8 i% K6 S. U8 l
  86.         0 W5 @# W' }* P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");4 n# |: u, Q: c- r
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 N! r* w. z2 q! h
  89.                 printf("Input MAC error\n");
    * ^# X3 F  t$ P; X- e2 {7 S
  90.                 return 1;
    : J  v( O2 ?- E3 T9 n  w; G5 \2 }
  91.         }- X% |$ B/ S1 I+ J/ N& Z. I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( U5 D! o3 }" k0 J
  93.         printf("\nPlease input new STBID: ");
    1 c* n* `4 z4 C# @
  94.         scanf("%s", stbid);1 r" Z  c- }1 F& b. ?+ P
  95.         if (strlen(stbid) != 18) {
    7 O  j+ O0 T- z/ b0 [
  96.                 printf("Invalid stbid\n");$ |) {3 Z8 @* M' W$ u$ u
  97.                 return 1;- w+ S! V; Q# N/ u% b- H1 N0 |/ t
  98.         }
    ) R- f( y6 P$ H
  99.         printf("\nNew parameters: \n");7 ~: C( B4 X% i1 S. p# z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 a& s3 Q# V9 \0 ~. ?: j
  101.         printf("  STBID: %s\n", stbid);( U' g$ u5 M% q- i

  102. 5 ^/ t( @* P+ C/ u8 e
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      j# E: }, P) S/ _
  104.         for (;;) {& Y/ a, G7 O5 b/ e. _4 ~: D- r
  105.                 c = getchar();
    4 q# N2 ^$ n6 B( }1 \2 ~( e" \
  106.                 if (c == 'y' || c == 'Y')
    6 N' e! _6 V, }( i0 W2 u
  107.                         break;
    % b6 ]6 |% y* ?
  108.                 if (c == 'n' || c == 'N') {
      I& ^1 a  g1 b8 b4 {5 L3 a
  109.                         printf("\nAborted.\n");1 f( Q; w$ W+ D1 X
  110.                         return 1;9 A) }- U2 y# P( y* M" s
  111.                 }
    7 @* P  [7 N% U: `* w3 B4 @+ y
  112.         }) O% p" X; w/ E5 T0 i% N& u4 w6 c$ j5 P
  113.         if (writeparam(mac, stbid) == 0) 7 X/ ^# U0 c5 }9 @3 u1 k% t
  114.                 printf("Parameters changed.\n");0 B% K# ]+ X' o6 J3 [* r! j& H
  115. # p) H. t$ @* S* x
  116.         return 0;
    ' b: s- S8 ?  r
  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
- m: Q7 f2 ~! R/ R# d在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

! P% h& y; ?/ t3 ~你用的编译命令行格式是什么?8 e- j' n) Q' X+ U& Y+ X
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-14 20:24 , Processed in 0.032418 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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