找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15782|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr4 @' h/ v; |) q8 D" k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig/ n( |5 O+ Q2 z' `8 C
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; q% q3 K3 y! f
usage: himr <address> <value>. sample: himr 0x80040000 0x0
; f& J( |! v1 G( F. s; I# p! ~, Y3 G8 E

+ `9 s0 [  P, J6 \0 z不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
% s  _: _% O+ J( E; J& i' E& q& Z9 ^
% A0 M# u% E: I- d2 J2 }' @7 G0 y补充内容 (2012-3-8 09:42):2 f0 I9 q# |& ?0 e/ O: m2 z9 [
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 O6 R* a' N! o这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
6 z6 d9 r4 u5 l8 l& N! {! {3 }: o; \. O! ]
himr <address> <value>. sample: himr 0x80040000 0x0
4 l  C- G0 E( G5 ?
- X5 H# ^" H  n3 K) J& F3 H+ q例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
+ \7 S3 N7 x! D. D2 _- {, X% Q$ Chimr 0x80040000 0x00
: w  B/ {& c8 ]$ X0 n* hhimr 0x80040001 0x11' n- h! F; Q* n" y
himr 0x80040002 0x22
: c: l7 h( S6 w* l: v8 y, }himr 0x80040003 0x33
0 v) S* N" X, ahimr 0x80040004 0x44
& N+ c( w7 e+ `" [himr 0x80040005 0x55
) S8 [  E3 N% D2 n1 o5 M: m
' t4 H- ?" f4 B7 bSN也是类似。5 Y7 g( u# L( }- n& ~! r6 ^
" p2 b5 `9 n$ m
现在主要是,谁告诉我们MAC和SN的地址?
5 V9 X5 t( D9 m0 [* S
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
# H- ?6 q/ ?. x) C$ L一直想找到运程修改MAC和SN的办法,苦于无解啊
# B! P' ~4 {  Q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) I/ E  ^6 k0 T3 S
' H; \. C  h  W! R/ w& q9 F2 j
修改的代码早有了。到今天不会编译。4 D% h7 _' s6 [& k7 y7 [# w6 Y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ! y9 b% x; |$ ?* g& t
  2. #include <malloc.h>
    ' `& _% z3 A% p) ]
  3. #include <sys/types.h>" h- E4 N, O  M  l4 s4 o
  4. #include <sys/stat.h>
    - U: P0 ^9 J2 p5 Y( d
  5. #include <sys/ioctl.h>$ ]0 K1 v1 ^2 H. u9 ?5 q
  6. #include <stdio.h>
    # P' d7 @; L; m, @
  7. #include <string.h>
    1 v& l7 b" l+ U; U) ~% ~, I7 ^. z
  8. 5 S2 q" W# l1 {7 k
  9. typedef struct {" e' }9 o7 f7 X- F  F- s
  10.         unsigned int        e2prom_cmd_sub_addr;) J* [! i: r. i' o5 ~
  11.         unsigned int        sub_addr_count;) V( V; }( f. {! e
  12.         unsigned char*        e2prom_cmd_data;
    3 v) T/ }0 j- j' d' B
  13.         unsigned int        data_count;
    ( D  j. A9 J" R, f- |
  14. } e2prom_s_cmd;6 g  A& f% `; ]# o' I9 I

  15. 8 }$ U; j- u! J9 s
  16. #define E2PROM_CMD_READ 1
    ' t6 q# k, L2 D0 D& f( F
  17. #define E2PROM_CMD_WRITE 2
      P0 A5 N& [9 J2 c7 l
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"1 y. K1 f# a  ~1 `- T0 E) y3 E( `" W/ l: P% f

  19. " o7 m- `9 Q* t
  20. static int readparam(unsigned char *mac, unsigned char *stbid); w& y" c' v% O
  21. {
    # }- d: n0 t* ?; ^  |
  22.         int fd, ret;
      y, l5 ^' q8 i
  23.         e2prom_s_cmd arg;
    # I' `$ d( F: B" P- m4 P
  24.         unsigned char buf[0x18];
    + c- {  r) o0 E( I, t4 t! T

  25. ! ]( w0 k" m* H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 N7 z9 m8 Y* H1 Q4 e
  27.         if (fd  < 0) {
    7 B+ H  {) r! l2 W
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( W  z: y4 h  w# P
  29.                 return -1;. j2 F) f# o) \
  30.         }
    0 u& E: ]# D/ s; q" v" w: Y
  31.         arg.sub_addr_count      = 2;, ^. T9 @! @7 v. P  F  }
  32.         arg.data_count          = 0x18;
    7 j. `; g0 E% u9 A% P
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) {7 l& k$ w2 Z! Z) @
  34.         arg.e2prom_cmd_data     = buf;
      S; M$ v9 Q0 }: U( D: {
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    . U& ^" `' Y" _
  36.         if (ret != 0) {
    ; d" s2 x0 @4 e' i  Z- C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);3 D9 U: s* o( v( f
  38.                 return -1;
    ! ~9 m3 }* p. |! P$ |! q2 z
  39.         }
    $ E! N9 O, @9 y
  40.         memcpy(mac, buf, 6);
    * q# s! _. c& y* ?0 b. x
  41.         memcpy(stbid, &buf[6], 18);
    / B: f7 R. O+ N
  42.         stbid[18] = '\0';
    4 u2 Z* D0 H2 r) I
  43. ' j1 `: H5 R( m  D
  44.         return 0;
    / P6 Z/ k( ~- F2 f2 Q3 B
  45. }) x( w& m0 T( n6 V# [# m) {5 `
  46. ; G; M- Z* O! c: I3 E2 e3 A
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    0 ^( y# U2 ?* P+ s/ e& I) Z
  48. {
    0 r' [3 H; N. s; }* d( {9 E- B
  49.         int fd, ret;* a5 h; h! {' [+ R# [6 c+ B6 s
  50.         e2prom_s_cmd arg;3 S: p9 R: ]; y  Y9 U8 T
  51.         unsigned char buf[0x18];  L8 c% }6 b, D# ~
  52. 5 A# ^, g1 Z* D  k* ^
  53.         memcpy(buf, mac, 6);3 c" c. j5 t6 O% _+ u" C& t" g
  54.         memcpy(&buf[6], stbid, 18);/ p5 U& ~  u& W  y8 J' i# {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 e$ H; s2 h( P, o. x
  56.         if (fd  < 0) {' n* [/ ]. E7 l  t2 ]! z% {3 M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , B/ D3 D& e& l! o' G  |
  58.                 return -1;! f9 }7 M: j# Z
  59.         }1 t  d2 E! i/ Z, J
  60.         arg.sub_addr_count      = 2;
    $ \; |: P, v' }! T4 K: o
  61.         arg.data_count          = 0x18;
    ) _7 J+ a6 Y. N0 k$ o
  62.         arg.e2prom_cmd_sub_addr = 0x290;' E2 M& v8 ]1 H4 ~; y& i% l/ R
  63.         arg.e2prom_cmd_data     = buf;2 k- G7 E" u. t! L9 d0 {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);5 ^- \6 Z; P3 M
  65.         if (ret != 0) {
    . ?( e) r! A, k4 w, x6 c% `
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * e$ a6 H# F1 m; C" I
  67.                 return -1;: x3 e8 g4 I- L$ k2 w( M6 c' O
  68.         }
    7 G6 Q+ v0 b! T& o

  69. ' G+ g6 j1 e& v3 R) v  p
  70.         return 0;
    4 u, ^5 i9 L8 m7 m! S* y: U+ Y
  71. }
    - |6 I( o. n* k! w# h# n# l" _! @  n9 r
  72. 3 u: }# z$ A$ c" R4 @9 D
  73. int main()" `/ p! v5 r9 U
  74. {
    9 E% F3 A! T1 l
  75.         char c;
    , L5 n- P9 p- w& |
  76.         int i, macs[6];
    0 D' ]2 U# N: F5 c# v
  77.         unsigned char mac[6];
    " e6 ?  v, R" }/ D! M
  78.         unsigned char stbid[256];' E  t; n8 t) V$ x- ~
  79. . I7 u& V9 S+ t: K
  80.         if (readparam(mac, stbid) < 0)6 P; U3 l+ K* W' b+ ?& W
  81.                 return 1;( @( ]5 [& `" Q% j% q0 k
  82. " D' C8 c# K. e
  83.         printf("Current parameters: \n");
    % p) ~( g! D9 [* J% I9 L
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, [9 K6 C+ q9 H7 o" \
  85.         printf("  STBID: %s\n", stbid);
    9 g/ H- ]$ j) V
  86.        
    7 D2 I9 S2 i. ?- O' ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# y3 Z/ S) L- g- t6 ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    # D" z2 H0 G' V+ i
  89.                 printf("Input MAC error\n");
    * P& b! I% _. _# m
  90.                 return 1;% f1 V7 C( E+ Y$ ]" T; {) ]9 X
  91.         }
    % h! s/ m  |0 W+ Z: f0 q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , ^5 I& S3 Y4 N+ W. b1 r2 a
  93.         printf("\nPlease input new STBID: ");! [& Y$ V7 p2 U6 w
  94.         scanf("%s", stbid);
    7 r8 y4 J3 u/ r0 h8 q% n
  95.         if (strlen(stbid) != 18) {
    ; w3 o+ h8 `  @1 Q7 B6 U- |8 m  V3 k7 `
  96.                 printf("Invalid stbid\n");) j( _1 d2 ]/ q% \
  97.                 return 1;* p: v' {  ^, S, l0 g$ Y( b
  98.         }
    " C* H+ Z9 k7 ?5 A
  99.         printf("\nNew parameters: \n");6 A7 g( ?/ o+ V5 L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 s' x6 T/ s; j
  101.         printf("  STBID: %s\n", stbid);- q2 u8 R# ^' E0 c* V. ^5 X$ {! \9 H. b

  102. $ u' K7 f) i, e5 N0 J, c; t
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / G6 e: d3 f, g7 [- Y; H
  104.         for (;;) {" H: O! X) L& S, @
  105.                 c = getchar();8 A3 i9 o/ Q& U7 [4 Z
  106.                 if (c == 'y' || c == 'Y'). D& d2 b% z# l9 C8 ~; Y, q
  107.                         break;
    " w  g% @! j2 Z7 G% [$ _
  108.                 if (c == 'n' || c == 'N') {$ @  I! Z! t8 @7 j# T2 {) W' M# N
  109.                         printf("\nAborted.\n");( I/ P  e# e5 W# J6 {0 P( S! r
  110.                         return 1;
    ) X- z6 \# ]$ u% Z8 U' Z
  111.                 }
    , w" E2 ]# E( |0 y3 j9 A
  112.         }
    / |6 T7 Q* t- Z/ v( {
  113.         if (writeparam(mac, stbid) == 0)
    # U2 H1 F/ d" K5 ]
  114.                 printf("Parameters changed.\n");1 F5 ]$ e& E1 W3 @
  115.   ?: I8 k! e7 G( R
  116.         return 0;! \# }0 ^3 E- W, ~$ }  Q
  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
- ^. f9 ?- [6 W在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

* u6 ^+ D0 i5 }你用的编译命令行格式是什么?
8 e6 D# G' c4 N7 U! L
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-17 17:22 , Processed in 0.089898 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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