查看: 17129|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr, n3 A1 j( m. c( O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - f( P5 a, X. d
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% K' Q8 ?; x" W* @2 ]
usage: himr <address> <value>. sample: himr 0x80040000 0x04 v; P* _4 g4 t' ^4 `" f

2 Y) C4 y5 f8 Y) ]$ e& y3 p$ U; o; a: a! E) y
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ _+ }) ^5 v1 c3 L. [+ X
; [* O, O3 ?* E1 @补充内容 (2012-3-8 09:42):% K5 t; H% A7 E- h7 {9 h) ]2 X
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 n2 H" U7 {; n- k  r( ^这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
6 K$ o9 U$ }( A; T7 b
: @" j: X% s( c6 c/ Xhimr <address> <value>. sample: himr 0x80040000 0x0
; {! t! }$ [: r4 i8 S. i6 q" g3 w
$ f2 W9 ~  }) T0 B% t例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
) ?! ], S2 R: xhimr 0x80040000 0x00
$ H" U+ ^! R) k8 b. \% hhimr 0x80040001 0x11
$ `# k; J7 `4 `2 ihimr 0x80040002 0x22
7 d. w, q7 L9 s) s. Shimr 0x80040003 0x331 f( c4 N) F+ G5 w
himr 0x80040004 0x442 W4 C0 l3 V' T* k" g  |  D* ?
himr 0x80040005 0x55- A0 X9 m% Y+ E6 h% _9 Q$ E
- u) W* s- `. T, C  V4 j5 p) m
SN也是类似。
- J0 ^: i5 p! H3 i  k. l( |9 G4 m* o3 [( G& W, v" V
现在主要是,谁告诉我们MAC和SN的地址?
# Z5 Q9 m! q$ I- J( V# a& Y) G
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / j2 U2 W2 ~' n7 ?5 d0 w7 C
一直想找到运程修改MAC和SN的办法,苦于无解啊
) Y- b1 H3 V0 n' K+ [8 `
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; Y! D9 T* K$ g9 l5 n) Q3 j) O8 e/ c, _: b- q6 B
修改的代码早有了。到今天不会编译。$ b6 v9 t2 X+ R' d2 C6 I& r7 _
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    & {, s: k- n6 O  v# w% B
  2. #include <malloc.h>1 h' P  X& Z8 s: P- T# P
  3. #include <sys/types.h>
    3 |0 y/ }* h% ^# S7 i
  4. #include <sys/stat.h>/ i+ Z- U) [) o% f
  5. #include <sys/ioctl.h>
    4 y- n6 U9 g. q( j( |7 G
  6. #include <stdio.h>
    ; m& c0 k( Y. n- Z: q
  7. #include <string.h>
    " ~( j+ J0 p, d
  8. 3 _5 F* _- Y/ d
  9. typedef struct {3 U. L2 d& g/ m- L/ [6 t: W6 i
  10.         unsigned int        e2prom_cmd_sub_addr;
    ( U  L4 \8 i" z2 E7 ?  S/ s
  11.         unsigned int        sub_addr_count;
    : j" E9 E1 M; L5 w6 y9 H! M7 Y/ o
  12.         unsigned char*        e2prom_cmd_data;
    3 \. Y- ?# X& U/ J$ v
  13.         unsigned int        data_count;
    # J# h5 j; j+ a' w( r
  14. } e2prom_s_cmd;' {2 ]% F  z; Y
  15. 7 k  b4 x' d& H8 d* v* S& I
  16. #define E2PROM_CMD_READ 1
      }$ t0 c" V( j  F
  17. #define E2PROM_CMD_WRITE 22 m; _1 x7 g. B' Y2 m
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' O: P" d# M3 T2 f* K3 V
  19. / q6 }% C# D" q) `4 |$ P1 y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 w' T& C  E$ P6 [  C+ m
  21. {
    - I# X, Q7 P8 [+ [+ _+ G0 Y
  22.         int fd, ret;4 ^8 L  {- R) i8 p( v# w- v
  23.         e2prom_s_cmd arg;0 f1 _% s! |. F$ [! A
  24.         unsigned char buf[0x18];% b" R$ p  j: l/ S0 ?) K: T

  25. 2 }2 D8 V" t9 T( _; R
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 A. N5 X! A( Z" D+ s
  27.         if (fd  < 0) {, h" `- ]+ t: B/ b
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) ~0 A% _; h: l2 `& U5 l% ^
  29.                 return -1;
    ) _4 x. O) Z' p
  30.         }
    + _' s8 R5 Y' z+ r5 g/ X0 e
  31.         arg.sub_addr_count      = 2;
    " B& s+ _5 P0 ^
  32.         arg.data_count          = 0x18;
    8 D7 q5 V" W+ C1 G" J/ n( {1 n
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( ~( ?# P- T. z& `' Q) W
  34.         arg.e2prom_cmd_data     = buf;: [. \+ P9 D  m8 O/ v5 k4 {1 |1 ?4 o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    . s6 P, K/ b0 b' R; m( y% V
  36.         if (ret != 0) {+ K" [8 |5 }5 k5 w0 G5 m
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; |6 b; T: `& a, S+ d
  38.                 return -1;3 V4 @7 @; x* l, a
  39.         }& G# g+ m6 |8 _) ]4 i  Z
  40.         memcpy(mac, buf, 6);7 |. _0 u! s( @3 k! W0 V
  41.         memcpy(stbid, &buf[6], 18);& P+ R+ ~/ r& n
  42.         stbid[18] = '\0';' U3 m4 {  }0 f' h

  43. : X% r8 f. H) c3 E$ ^0 h1 O+ e% P
  44.         return 0;# k' M. e& n" r8 Q! ^1 [* ~3 z( z
  45. }3 m- Q% {* R( h' k3 {
  46. 1 W$ i+ d0 h6 [5 W7 b* b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : ?9 I7 g" }0 Y7 o
  48. {1 c/ Y/ X* U: k* W  Z7 _4 I
  49.         int fd, ret;
    : r- |  _8 k- `0 X' r& ]+ J
  50.         e2prom_s_cmd arg;
    0 F7 h2 m! `' N2 V; q7 S
  51.         unsigned char buf[0x18];" L; }) h% L7 @9 v2 g! m) x1 m$ E
  52. * p5 j, T) h. U4 H+ P% t
  53.         memcpy(buf, mac, 6);
    ; R/ V8 a0 O5 e$ ?
  54.         memcpy(&buf[6], stbid, 18);  Q. V8 _  t9 ~) h# H) `8 [! M( [
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# [9 P4 F4 n. ]
  56.         if (fd  < 0) {( b5 W8 i6 ~3 I3 Y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# s; k  B  H+ V! X+ K
  58.                 return -1;
    ) }+ a1 O3 ^6 a5 b
  59.         }
    , k0 T; e9 H' J. R8 Y
  60.         arg.sub_addr_count      = 2;, z: r2 {6 ^8 o- t; B: ~
  61.         arg.data_count          = 0x18;0 U, Y; s8 R) u
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 R; d/ G# X+ B6 C1 ^
  63.         arg.e2prom_cmd_data     = buf;
    - r2 j6 i1 L4 f8 W: w" O, K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' O4 [% p2 l/ H. r
  65.         if (ret != 0) {& X0 H  z. X% k3 q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);+ Q; |/ d* C" O8 g- y) y7 C
  67.                 return -1;& N5 I+ w2 n, e/ w/ e+ V
  68.         }
    7 z& h) t1 U' g' G

  69. # H, J( ?$ g1 H5 [4 ~' J
  70.         return 0;# D- t. O& b% r1 k& ]
  71. }$ q, X# I( e- I0 O9 n/ @& R0 t5 y, o
  72. 0 O% D- w7 n. T; K1 ^
  73. int main()8 P9 Q7 M  b0 ?$ @, y5 m
  74. {2 K1 H5 ?9 }/ ?/ y: b
  75.         char c;
    / [" l  b; ]' T6 y: i
  76.         int i, macs[6];8 W. x2 K1 u) x4 u
  77.         unsigned char mac[6];
    1 L: C" }9 E! t
  78.         unsigned char stbid[256];; J5 I0 f2 a" h2 m1 p2 L

  79. ( O; `/ ?" r* m/ s+ p$ C/ H
  80.         if (readparam(mac, stbid) < 0)
    ; b& t: O4 P0 l4 V. r
  81.                 return 1;
    4 {( l" @. i1 ]! O: c0 a" p5 C
  82.   Q0 f% Z8 p9 T; x- y( C
  83.         printf("Current parameters: \n");5 D7 C7 k% ^# z" k, P; _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , r# n. _+ |! @- C
  85.         printf("  STBID: %s\n", stbid);; `6 g& x4 k$ ?) @
  86.        
    7 P2 ]4 y4 w, @( G# f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% o3 E" m, c: z+ v4 d$ D0 T
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - ]& N8 j8 b7 _; Z- n
  89.                 printf("Input MAC error\n");, |  J$ B: {4 Y8 U; g
  90.                 return 1;
    ! T6 R; \/ I" b: m6 ?  s
  91.         }2 ~1 B7 o0 ]. R0 L4 T- \+ A
  92.         for (i=0; i<6; i++)mac[i] = macs[i];. W6 P3 S. l" J7 E4 h
  93.         printf("\nPlease input new STBID: ");
    1 u9 u  P, v: i/ b
  94.         scanf("%s", stbid);- j8 N6 K6 s% ~$ ~, f. F$ W
  95.         if (strlen(stbid) != 18) {
    4 Q7 ?4 T$ B1 D% g) z! j0 E
  96.                 printf("Invalid stbid\n");
    ! e4 j9 e5 O% m  y# x1 [
  97.                 return 1;
    ) s  [* [2 V& ^5 T5 c
  98.         }5 v- s: G+ `# V# V" P; ^: c; N% G
  99.         printf("\nNew parameters: \n");5 N% f( s% s+ I5 M- u! r
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 Q2 q& n3 }, \# H! k5 d
  101.         printf("  STBID: %s\n", stbid);5 O9 |4 j! m- n- O) V5 D( ^
  102. # i$ s6 ]! X  M
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 l  O4 K3 m4 p7 @$ u  b% [4 R+ i
  104.         for (;;) {& ]: }' \" p5 l$ h. |
  105.                 c = getchar();# W* W. |( [: R0 b, {1 ?3 h
  106.                 if (c == 'y' || c == 'Y')2 n/ v+ B' u2 ]% U
  107.                         break;
    ; @) E4 V$ K# W$ ?$ [; K  R8 C/ S
  108.                 if (c == 'n' || c == 'N') {& v, T% G- v8 k  [- G9 U2 r9 u( B
  109.                         printf("\nAborted.\n");5 b% \7 Y/ J, L8 b* \) d. D& J! M
  110.                         return 1;
    * z. u  s: m/ F  ^  Z( d
  111.                 }
    5 j5 ]: u3 D1 _; V' _& F$ N
  112.         }, N4 ?& f2 x* Y5 Z6 b% ]& n+ u
  113.         if (writeparam(mac, stbid) == 0)
    . Q. s8 t6 F6 h# {+ n% Z
  114.                 printf("Parameters changed.\n");
    " x7 n1 w+ h. j2 o) W

  115. % i$ U. X6 o# o9 j$ n" u
  116.         return 0;
    5 E; C! [; M8 r$ y3 O, }
  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 ; q$ h/ n8 Y5 g7 t3 V4 P
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 S8 @8 j# j3 S* |- _' D你用的编译命令行格式是什么?
3 a. l- T$ e0 g- h# q. ]0 C( \
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部