找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15291|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; k9 d& D+ r2 D" l5 N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig& I, b. Y8 {$ I* ^( V. d/ a% x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
6 ]3 B# P% l! |9 b8 tusage: himr <address> <value>. sample: himr 0x80040000 0x0* m3 {" M9 o( f' O6 U4 m2 N) O2 \
" \3 G) m, j8 G* d' z
: \. n, g) y% s. p! Q
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& J. c. \" ~7 a" s: h" D7 F% L: c2 Y% a

. }( ~7 q5 e" Z5 }6 N补充内容 (2012-3-8 09:42):
3 u1 B4 X* J  n9 \9 g3 Z2 Q' {. Fhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 b( n% N; a- t5 b! Q( k这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- u. Y2 i' m1 u: ?% i9 e7 {

1 O5 N% X) r. ghimr <address> <value>. sample: himr 0x80040000 0x07 ^1 X0 d& p" |3 f' u: d
8 _: T0 U. d3 n! x' E& [/ y
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  g, p0 V8 b3 o" l6 Yhimr 0x80040000 0x00
$ f9 R$ e2 f% e+ w4 L1 ~himr 0x80040001 0x11
' B+ g5 k" ~5 \4 w; uhimr 0x80040002 0x22
4 i" f  g- [: Q* l6 whimr 0x80040003 0x33
+ M" W6 T# W3 Z" U& \! ihimr 0x80040004 0x44
7 Z/ i; q, K1 L' H) t/ L1 Uhimr 0x80040005 0x55+ E+ D- \; J. `$ y$ Q

* i, K& T2 m8 ^  tSN也是类似。# U& b* s" D* ]* |

$ Q8 X, f& \0 H+ b现在主要是,谁告诉我们MAC和SN的地址?8 e6 E$ B; A2 V& e8 e& e% h% l$ }
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 y6 t. w, P$ H0 r1 G2 Z5 Y3 [
一直想找到运程修改MAC和SN的办法,苦于无解啊
2 l9 B) D  E0 j  Y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - A# F4 K4 X  R$ h: m$ U/ r* Z8 i
2 |. R! B' j' Z' m- u
修改的代码早有了。到今天不会编译。
7 |; a- k* B8 P" _! L需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - C# l4 ^9 p6 j8 U0 Z9 B3 T
  2. #include <malloc.h>
    ) l6 {$ N$ k  l
  3. #include <sys/types.h>
    3 y5 \7 b. V' R: M! O  q
  4. #include <sys/stat.h>9 _5 U( G- i/ b
  5. #include <sys/ioctl.h>
    7 b+ @, d3 I% m! O6 j0 v
  6. #include <stdio.h>
    ; i8 f7 Q7 c' u+ x8 x; Z, @  i
  7. #include <string.h>* N( e$ a1 F' r: Q

  8. 1 V& m3 B" D$ f; t" {! K& K" a7 w
  9. typedef struct {
    3 e7 j+ D! _4 h, F9 C
  10.         unsigned int        e2prom_cmd_sub_addr;- c! K% X5 u& V" u
  11.         unsigned int        sub_addr_count;
    9 C0 B1 z4 Y% Y) X
  12.         unsigned char*        e2prom_cmd_data;
    9 S' K4 [2 f2 V# X
  13.         unsigned int        data_count;
    7 q! x: {" y: ?3 f
  14. } e2prom_s_cmd;! f' s3 |' ~3 ^: O6 q

  15. 5 U$ z8 [, s" B4 C* i
  16. #define E2PROM_CMD_READ 1
    * j7 {& F; G) ^) V3 N2 r  P
  17. #define E2PROM_CMD_WRITE 2. P9 R; P! s. E: n+ ]! v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      o# d- m& i  d0 s; x

  19. " {' I3 M* C& o$ Y, z+ K9 H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( |1 B4 ]$ x( ?: ~: g$ f- Z
  21. {
    - s/ k. a  c$ A4 A) m
  22.         int fd, ret;
    9 }  H1 [; \# k! m1 K- ]) I
  23.         e2prom_s_cmd arg;8 o) ]% N4 Y7 s' p6 }) u3 ?
  24.         unsigned char buf[0x18];
    , L- ~: G  {# h$ `& {
  25. $ U$ v$ p. Q6 n3 Z3 ]- X( u2 ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / `0 p0 {, n- L, s" o% x
  27.         if (fd  < 0) {9 l' _( z2 R0 K8 z, S3 x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- B2 p- U/ L" F& i) U
  29.                 return -1;
    / {  [  G8 q- U4 Z5 ^+ T# ^" K/ z, b+ v6 T& ?
  30.         }
    5 e( F* c" r5 X2 c5 a% t; t# P  T
  31.         arg.sub_addr_count      = 2;
    & f2 v# [; ]$ u9 d! d4 v
  32.         arg.data_count          = 0x18;
    . E: A2 ?: B4 w6 a( h
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    6 W6 x* g# _# z/ \/ N5 \
  34.         arg.e2prom_cmd_data     = buf;
    % Y5 A0 @" t9 b# R: Y2 C
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 A7 q0 `) Q! C7 w
  36.         if (ret != 0) {: }& E1 d( ?6 w$ Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ' _/ X" B! j* T) u; E+ q
  38.                 return -1;
    ! i$ c6 i' d+ p4 N2 k  S' E
  39.         }
    0 e7 z- o8 Z& S% [
  40.         memcpy(mac, buf, 6);$ d8 ~, d0 ?8 M) Q
  41.         memcpy(stbid, &buf[6], 18);3 |% G6 x& h- C8 S/ g
  42.         stbid[18] = '\0';
    * c4 n4 \- |$ ~3 y0 k! Y. X
  43. ( k! M! o# {3 \
  44.         return 0;
    - @- F- G2 [% I# f! M
  45. }7 o3 w; u; b& k, k- V; a

  46. 6 A0 p/ }2 t) {- P3 U# d4 a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , k9 g9 k6 K& c# M0 S4 _
  48. {
    4 e3 R! D; d4 @: U7 k
  49.         int fd, ret;
    , q- @8 a( _5 o6 q# b6 W& P5 h0 @
  50.         e2prom_s_cmd arg;: y! w5 z& o8 E: o
  51.         unsigned char buf[0x18];
    ! v( {9 [' R/ r1 q( K0 Q* u

  52. , G' a& d' @; G) h  x8 b
  53.         memcpy(buf, mac, 6);- K4 T. S! p% C: q- z$ c  v
  54.         memcpy(&buf[6], stbid, 18);9 [; w) `, H  M4 |
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 w* X3 n" H  @$ h! ~2 p
  56.         if (fd  < 0) {
    " ~& }9 I* O1 n2 q7 @
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& G& I" |3 [$ J8 {" U. r' ?7 `
  58.                 return -1;, o7 f1 j1 ?* h
  59.         }
    % r5 g/ ^2 x" f5 B5 V2 z- s
  60.         arg.sub_addr_count      = 2;. r  y1 k2 p3 N. X8 l" ]: I& D
  61.         arg.data_count          = 0x18;! V( f0 L' q1 {& l& w3 p
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 o$ m. X% L( O/ o' Q
  63.         arg.e2prom_cmd_data     = buf;# u# O& s; t' T; }
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" B. Y/ q6 N# H+ A/ `9 H7 e& }
  65.         if (ret != 0) {8 |" P4 U- [, U1 [) ~7 m2 W1 z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. n' `7 c# U  N7 L7 u+ F
  67.                 return -1;! x" y& m. H7 X
  68.         }
    ' |+ R( T+ ~3 X( r( N4 t

  69. 3 u- d; C( R3 g9 ]$ @7 Z
  70.         return 0;) J5 f+ U" g& ^) `$ m) s, ~, K: Y
  71. }
    . r! A# a* t3 s$ Y- X! u1 t2 P3 F- K; p

  72.   ^& h( L7 X5 d% s1 b4 W* ~; U
  73. int main()
    4 D8 a* U- x8 a6 g! K7 i
  74. {7 i' d' E: ]* q* U8 ~
  75.         char c;; ?; Y+ Q; q: m2 w+ ]' h' w
  76.         int i, macs[6];0 `) d% A. m0 F5 S  n
  77.         unsigned char mac[6];
    ' X6 `1 U6 \8 H
  78.         unsigned char stbid[256];
    * _! K# J. ]: D! g/ a
  79. 6 b7 }" j$ L, W  c
  80.         if (readparam(mac, stbid) < 0)0 T; w* ~: Q. z# T
  81.                 return 1;7 [( a4 Z9 Q. `4 M: X/ a9 w
  82. * [0 R2 D. N5 x9 b3 ^% o  ?
  83.         printf("Current parameters: \n");
    ' L6 T: q& e% l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " n7 c& e' h; V* C! i6 d0 L
  85.         printf("  STBID: %s\n", stbid);
    . {+ B& `8 y9 @3 ?5 h
  86.         5 b/ X5 x2 q9 C8 n: ~, p& T
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      y7 B9 d) \( y6 s; E. [! i3 \9 B/ w
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : F, z6 I( C) W0 o
  89.                 printf("Input MAC error\n");
    3 a8 G5 {1 D: [9 L
  90.                 return 1;9 {4 T  H( W) _9 N0 ~
  91.         }5 Q$ ?) d4 b' R# B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - V3 }# ^8 l/ S" k+ I+ t/ ]
  93.         printf("\nPlease input new STBID: ");/ W! c, x. H4 z) Z
  94.         scanf("%s", stbid);0 d" _  h/ ^. {, h/ v
  95.         if (strlen(stbid) != 18) {, Z6 N3 s) H1 M! g$ J4 F
  96.                 printf("Invalid stbid\n");
    + p$ Y, ^/ ^! o9 M4 ^, D! ]* s* ^5 C
  97.                 return 1;  W, {( e5 T( m
  98.         }) b# f! z$ N% j5 e
  99.         printf("\nNew parameters: \n");
    " d* j6 I5 E2 p" h
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / W/ `! q. N$ Y! }+ o/ g
  101.         printf("  STBID: %s\n", stbid);
    $ e1 i7 C$ r9 n5 z0 c
  102. 7 a( i4 r: d0 S! K8 \
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % s+ H3 k3 G. B& L' m' P
  104.         for (;;) {
    . ?: M1 X5 s! A
  105.                 c = getchar();
    ) E4 v$ k' {9 u2 A' o1 D
  106.                 if (c == 'y' || c == 'Y')' p6 V5 `, h0 M- T* `$ ~: F* F
  107.                         break;; N& r. k& k" I/ F8 q! N& {
  108.                 if (c == 'n' || c == 'N') {& I3 R; q( N3 e! |+ `0 y, S
  109.                         printf("\nAborted.\n");
    2 T+ \6 {: r& K  j% b
  110.                         return 1;
    % ]( v3 ~% Z( a+ Y) }3 ?7 E# [+ V
  111.                 }
    2 k' A; N9 _/ L! [( W. U
  112.         }
    ; r& H( i& B1 K- O6 f: F
  113.         if (writeparam(mac, stbid) == 0) . F) W0 I0 K% W# q$ x1 l$ ]
  114.                 printf("Parameters changed.\n");
    : G8 W- Q5 G: Q! ^7 P

  115. 9 R) i* Q% Z. s, W" X3 W2 Y( r
  116.         return 0;9 D( \9 [5 n0 B% ~
  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
2 `; v6 |* \& o8 _在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 T" @7 Q  V+ s1 n) J3 T你用的编译命令行格式是什么?# R, @: Q* j' v4 Y2 W$ r
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-17 11:49 , Processed in 0.029280 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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