找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15004|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
      Y" j* d# W% a  p3 G- t
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 z: x: t# g6 y1 b' O/ C
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 X" O3 t! u( Z! vusage: himr <address> <value>. sample: himr 0x80040000 0x0
2 O$ `* ^/ B. q8 ?2 N9 P- G6 F3 `% u0 [0 P) P5 k6 [; F
0 f# d1 e- u- V+ V
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 c; g0 f: \: ?6 h% w+ T  T/ s8 L
1 n2 ?0 G) X  B+ N) \' d$ c9 j补充内容 (2012-3-8 09:42):* s' Y4 y7 ?* w+ W7 J/ X' }
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 M( d2 p/ l( `& B9 l这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
- j0 d0 r0 x1 Z" ?/ `  l6 K
- U  X2 A+ K' @himr <address> <value>. sample: himr 0x80040000 0x0
3 j& `0 G8 u) u8 f+ B+ y1 L1 [- G: O; j" o( X
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) k8 D8 {6 M; |/ O  w5 ~4 y
himr 0x80040000 0x00
1 y. ~% i4 p) d/ e% h5 N5 x; Lhimr 0x80040001 0x11( s( ]* D; J$ q
himr 0x80040002 0x22
. D/ S3 w3 A4 z# n( W! B$ n8 g, Thimr 0x80040003 0x33
7 Z' w; L, Y9 x: @himr 0x80040004 0x44
" ~& w& a) X2 B$ o' [himr 0x80040005 0x55# j- k3 l9 G% Q3 z# D5 C; j

/ ]9 m7 ^7 @( _6 G, ASN也是类似。
9 b% a! b& {+ h! k. i9 t
& _4 v0 e4 L) c现在主要是,谁告诉我们MAC和SN的地址?  @- ~/ c, T) z1 ?/ W2 c2 T
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ( Y, z, v2 b/ K: s" C
一直想找到运程修改MAC和SN的办法,苦于无解啊
0 W0 m  @  j1 Y3 \/ x% \& a
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ M7 E- P7 G% r+ y# d
$ ~/ H5 N3 X' _/ l+ [0 [修改的代码早有了。到今天不会编译。
" E* V2 o  l) L& p6 y5 x  S& m需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>9 W9 \9 y( s! D0 U+ M
  2. #include <malloc.h>- N. j3 ^& T, d8 _4 v2 s  _
  3. #include <sys/types.h>
    * T: c* T. J! G4 k
  4. #include <sys/stat.h>
    % M( M$ ], p( m$ s+ Q# p% c0 Z/ M
  5. #include <sys/ioctl.h>, u/ v* l3 r2 ]" y# y3 [
  6. #include <stdio.h>
    $ H, _( c8 X0 G& `5 f/ \
  7. #include <string.h>
    " L' l. T0 g" D0 |- \2 L" x6 {

  8. * P  U6 W0 M2 v" ~6 ?) r, p5 Q
  9. typedef struct {
    , ~  @; j0 s' c+ \% `
  10.         unsigned int        e2prom_cmd_sub_addr;
    * t0 K2 j" x  L0 p) a: v
  11.         unsigned int        sub_addr_count;
    $ c1 F; V% b- a( |( h: {) u! ]2 K
  12.         unsigned char*        e2prom_cmd_data;  {& c- s/ Z2 [( J3 p( ~/ g
  13.         unsigned int        data_count;
    & B( X1 R$ H& H3 w
  14. } e2prom_s_cmd;
    2 H1 R; T1 J* U/ K" i

  15. $ J2 d( y4 \/ v" ^: B
  16. #define E2PROM_CMD_READ 19 ^  ~* j1 i8 F, u* |4 T" P
  17. #define E2PROM_CMD_WRITE 2
    & m. V  G4 ?- X2 K
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  q2 ^2 T: ?5 f/ a. j* G# [

  19. ' D# Q$ k$ c8 ]$ n- e+ g
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 G3 d% H! ]* l6 ~5 u# S, e
  21. {
    9 z! V, c) F; j& T* V
  22.         int fd, ret;
    + i4 z* z2 z: `9 I, D% L
  23.         e2prom_s_cmd arg;
    / Q, y( _. Z2 o, U2 J, D& @
  24.         unsigned char buf[0x18];' u. I2 Z+ s" V2 M& u

  25. 1 F) r+ m+ e5 M1 s
  26.         fd = open(E2PROM_DEVICE, O_RDWR);$ r% b- p- U: a: g6 J
  27.         if (fd  < 0) {$ q9 x: C" c1 i6 Q3 F
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 r. L" Y/ [+ H0 l; j
  29.                 return -1;
    7 f! H  u' X6 v' A9 ?% Z4 g
  30.         }. s' h6 v' L7 p
  31.         arg.sub_addr_count      = 2;3 g* n8 H  J) e9 f
  32.         arg.data_count          = 0x18;
    % e- [' S1 Z1 T% m. c8 K5 G2 L
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 K6 `" p. W' U& t- v- b7 J
  34.         arg.e2prom_cmd_data     = buf;
    9 w" B; S7 r! P1 _( o/ Q+ r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 D4 l; h+ z6 G% O
  36.         if (ret != 0) {
    6 g' \; {+ `* g" ]) F7 V  L. @5 {% r
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: I1 B- b5 @8 Z, I
  38.                 return -1;
    : Q; K% q1 \- i. ]- f% D
  39.         }: j. O8 r9 q' D2 S) c: {  S6 t
  40.         memcpy(mac, buf, 6);. _! p0 h& U, ]
  41.         memcpy(stbid, &buf[6], 18);& d$ B+ e# Q+ {- ?
  42.         stbid[18] = '\0';+ S8 E: ]+ u$ H& ?% T

  43.   p# B9 J$ {  p! t
  44.         return 0;
    # e8 ?% j/ O' V9 y' J  s
  45. }
    - C/ ]0 n# D% ?3 Y" e$ I
  46. " @1 x  v/ ?3 W& A
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    & Q) W# h/ r4 `' g& n/ L
  48. {, O" ^$ l( B  G" C  c
  49.         int fd, ret;* b, D! ~+ K' w$ [5 ]6 m& I1 f! _) k
  50.         e2prom_s_cmd arg;
    7 m! i; S) ^* ?) a3 J/ ^7 o& x6 c
  51.         unsigned char buf[0x18];/ |( Z2 l; l/ J1 j" F: Q

  52. & O3 J6 J' L6 G9 ^( P
  53.         memcpy(buf, mac, 6);
    7 o( j& q6 E! J3 e
  54.         memcpy(&buf[6], stbid, 18);: c" g- Y7 |1 P! q9 p0 m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);8 n8 W9 u# e8 u3 |
  56.         if (fd  < 0) {
    ' S. E# M0 P" d1 \1 W
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 H5 n* b* H; u. h, a. x/ J
  58.                 return -1;) W3 _- `2 i  r7 H
  59.         }* x& r! l+ ]4 _+ N0 k  F, O# I& P
  60.         arg.sub_addr_count      = 2;
    / X' j) f/ b  R  H
  61.         arg.data_count          = 0x18;
    8 _- d0 _) |% F9 s% f
  62.         arg.e2prom_cmd_sub_addr = 0x290;# E5 ~7 I4 c" W
  63.         arg.e2prom_cmd_data     = buf;
    ( N. i* T' u/ W4 h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ' B& r4 o& ]& x* }3 g% H
  65.         if (ret != 0) {: X8 G% `  B. j* B
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. a2 s! h( v* |9 j
  67.                 return -1;
    # t# f& I" `+ b+ A) m
  68.         }) _3 b4 Q2 P1 U: ^5 g2 y* o' ^: w
  69. 8 ^& u4 K! _' N+ E0 D4 [8 h* P
  70.         return 0;  x8 N% v6 ^1 a# p  @
  71. }- G! P# a1 o' Q

  72. ) {1 f: A8 u( z2 `
  73. int main()
    % E7 ]1 g: W# y- `9 R
  74. {1 d& I/ g' n% P9 ?! V1 N
  75.         char c;2 l6 N. J( E0 i- S7 k3 c
  76.         int i, macs[6];2 Q" @$ }- {% J$ b- }2 q6 K' \6 s
  77.         unsigned char mac[6];
    9 ^' d- x) j6 J
  78.         unsigned char stbid[256];- Y* ]3 r0 W9 r4 j9 B) q

  79. 7 ^5 q# z5 A5 ]- C; |7 x
  80.         if (readparam(mac, stbid) < 0)* K* v! ?! t/ q' T( Q
  81.                 return 1;
    # D( w6 W6 C2 j2 z  G
  82. 0 E9 R9 n1 i0 h& @; ]9 G
  83.         printf("Current parameters: \n");  `# y0 t5 A. K0 l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" O% V5 @5 l) y4 t& v' w- o
  85.         printf("  STBID: %s\n", stbid);
    8 t/ _3 Z7 b' l8 m3 E8 R8 P
  86.         ! {9 p6 O- u, w/ T2 \) L; G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    % m& G  b2 A! h1 b( X0 N
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * |% c9 y" n: h, k( x1 A6 V& X4 _- B
  89.                 printf("Input MAC error\n");
    2 {9 Z9 D' E$ Z7 i' h
  90.                 return 1;4 T4 s7 j8 F. C! a* n
  91.         }
    " G2 k% A' _4 O. e
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ; V8 e" _0 [2 ?' F9 I# d
  93.         printf("\nPlease input new STBID: ");/ R; r) X7 X& |% h% r0 L
  94.         scanf("%s", stbid);
    ' o7 s$ g( v" B
  95.         if (strlen(stbid) != 18) {
    2 V8 ]" @# t4 c' {) g, h8 X  [6 \
  96.                 printf("Invalid stbid\n");: e# |9 e3 ]# t+ l2 G! P
  97.                 return 1;
    ! G/ f) y4 [7 @; C( |
  98.         }; I: L2 M- V. O4 F
  99.         printf("\nNew parameters: \n");; [: D& o; C$ x  r; x1 Y$ x& q( N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! B7 \6 Y, L6 W
  101.         printf("  STBID: %s\n", stbid);
    $ k6 a! Q/ T- F, g/ S( J

  102. ( q4 f- s5 h* v7 ^9 A" C
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - W# R1 f0 \1 C+ o/ g
  104.         for (;;) {
    & N/ \' u8 }' D2 E; H  L
  105.                 c = getchar();
    1 F5 d0 M+ X( y6 O2 Z  j
  106.                 if (c == 'y' || c == 'Y')( r, F! p7 w, Q) \( E' c. e
  107.                         break;
    % l0 g; i& {- e
  108.                 if (c == 'n' || c == 'N') {5 k- j# j. {0 i; B
  109.                         printf("\nAborted.\n");5 A7 m: c+ j& U& a  f6 K5 }* _
  110.                         return 1;
    0 r4 \3 ^! ]( ~
  111.                 }
    . B' S9 B3 J5 I3 F3 e1 Q
  112.         }
    8 p4 |6 L# Q  u/ ?
  113.         if (writeparam(mac, stbid) == 0)
    1 M" [' c. R/ q4 F: p( ~8 \1 n
  114.                 printf("Parameters changed.\n");% C# D, E" j, V0 o2 L* t  _' V) m0 l

  115. ; t' E7 x( s4 ~0 G$ ]
  116.         return 0;
    1 r1 |" ]% D* ^, t( U
  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
" P9 X3 `0 D  W- n在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& ~. ?! j# \, r( X! u$ Q你用的编译命令行格式是什么?
+ m8 [7 _9 ~; C6 s( @4 L( B9 D
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-9 12:13 , Processed in 0.023525 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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