找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15635|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    / i% `- h/ @9 Q9 f2 K, x
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig2 M7 s9 g- b6 j2 G! D8 o7 v
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
* n" T6 ^3 i) B  {4 H& w$ `usage: himr <address> <value>. sample: himr 0x80040000 0x0
; G5 _/ T9 p5 M4 J& u
9 P% U: |6 i( ]; Z; y; h
( o5 J- @) d  [1 Q# H& Z5 |3 z不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; _9 }* P/ i$ z% w5 I0 k
% w& @" {. B" I
补充内容 (2012-3-8 09:42):1 r6 d5 F3 c9 `/ [: m& ]
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数3 r- C( [; O3 D8 M; J
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
' m  o5 E1 l; C1 `
* E$ ^8 g, k. Z" a4 whimr <address> <value>. sample: himr 0x80040000 0x0
" O# f% \+ K/ ?, R$ A
: V$ O: l, \) @例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 }, `* ?" G1 T5 ^* W! ghimr 0x80040000 0x001 O3 v  Q# ^/ |$ K$ @. {/ ?
himr 0x80040001 0x11! Z! W. F( n+ Z9 o+ W, U
himr 0x80040002 0x22
& j! o+ U% z- Y- Q! D% hhimr 0x80040003 0x331 b8 X9 i8 S3 F7 x2 c: Y
himr 0x80040004 0x445 s2 M6 h5 ~$ ]; l8 T  z
himr 0x80040005 0x554 j, Q, T* n. j4 c' E) S: t  E
$ X+ \5 ~2 z3 ?; Y& u% }+ O
SN也是类似。* e3 Z! A+ }) K0 ~

- ~9 ~' i7 v5 ?  Y( v1 t. Z- k现在主要是,谁告诉我们MAC和SN的地址?5 W4 F6 F! @' T' N
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 a4 p4 j2 v( b) ?$ F一直想找到运程修改MAC和SN的办法,苦于无解啊
8 F3 {# F9 h& |
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 % t3 {) `6 B: L& E7 i, j/ t, N
1 Y# O( T, L; n4 Q6 K% `
修改的代码早有了。到今天不会编译。7 N  d* x; ]; n. x1 ?
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    2 g( F9 \! |1 K. P6 X2 |
  2. #include <malloc.h>8 ]3 j: z9 a; r' a) a
  3. #include <sys/types.h>
    9 B# ^3 l4 N% _! V) ?# m. S# K- D
  4. #include <sys/stat.h>
    6 H4 i1 R" a  h
  5. #include <sys/ioctl.h>  Z8 e; C" e  V& ^$ S
  6. #include <stdio.h>
    8 r8 f/ F  k" @8 @/ u* E2 E
  7. #include <string.h>
    * Q' V% }$ `0 Z8 u
  8. 8 g+ l2 a9 y- R. p, {- y
  9. typedef struct {
    # ~7 W( K+ ^% a4 X
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 j* n; c9 R% H6 b: g
  11.         unsigned int        sub_addr_count;
    7 M' L7 _8 v* B! I" d6 Q5 \7 {
  12.         unsigned char*        e2prom_cmd_data;4 v1 ]% W; m4 p! Z8 W. h
  13.         unsigned int        data_count;
    & b3 J/ f- F) A' u8 ^* V" y
  14. } e2prom_s_cmd;- e( C* b, w6 S! {& s$ N% r: F9 m- T

  15. % I8 u" B# {3 K2 \
  16. #define E2PROM_CMD_READ 19 Q! E% _4 U2 j" f; ?
  17. #define E2PROM_CMD_WRITE 2
      y) u0 v: z: l$ I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"9 T9 Y& t( M% z+ G
  19. , n3 y8 f, M0 N, v4 D: `* m
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ @) E5 ?9 i; G  S: w7 o8 \( Y8 H
  21. {8 @3 T+ d& G7 y) k: G
  22.         int fd, ret;
    6 H/ j2 Z8 z5 o+ r
  23.         e2prom_s_cmd arg;6 G, M$ c2 U8 {  n  y; u0 u8 u2 f
  24.         unsigned char buf[0x18];
    0 I1 \/ s5 j2 f
  25. 4 ?1 I$ D* b1 E" K
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 n+ ]/ k! d# }7 B
  27.         if (fd  < 0) {7 J  I3 \) W6 m( k, ^; z' e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 b* W! q3 M  C- Q2 |
  29.                 return -1;
    4 A0 z: L6 U8 T# c
  30.         }& z' q. T: x8 g- ?
  31.         arg.sub_addr_count      = 2;* t5 J, c) l, D# ^
  32.         arg.data_count          = 0x18;3 i6 R1 E& k# O2 Z1 {- S4 _
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    3 q. p/ b5 s7 {2 a( K
  34.         arg.e2prom_cmd_data     = buf;
    ( D0 v' Q( B4 a( {) R- n" H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);  A/ G) Y1 C0 T
  36.         if (ret != 0) {
    : ]: ?/ r$ e. u9 Q, h6 o
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    $ D2 N. A% _  n: Y; M
  38.                 return -1;, ]  r) S/ ?; `; G, ?  u1 ^% }
  39.         }
    ( ]: g0 o/ F$ Q# U' E7 |; _4 B
  40.         memcpy(mac, buf, 6);5 i" m. O0 R3 b  b- G+ i
  41.         memcpy(stbid, &buf[6], 18);$ I1 K1 x: z. |0 k7 r
  42.         stbid[18] = '\0';
    # e* |1 }% k% C4 V! _
  43. 6 `0 g: g& b4 R
  44.         return 0;3 a+ Y$ V$ s' o, D
  45. }
    & T( a( G/ K% `+ i/ d

  46. : g+ _7 R6 z: }( p. G/ a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  `# G* Z- e7 _1 h( Y
  48. {
    ) G, |& i3 ~0 I
  49.         int fd, ret;
    3 c3 H6 V! e- {* ?
  50.         e2prom_s_cmd arg;
    # U# i: G$ b* I# S; H, k
  51.         unsigned char buf[0x18];4 A6 o* ~: B, j' Z$ P4 s  A* ~

  52. ; W! y" a, ?+ w+ I# V3 ~
  53.         memcpy(buf, mac, 6);% U! s  T8 U4 z
  54.         memcpy(&buf[6], stbid, 18);
    ' [$ |* A+ W: G) J, F4 _
  55.         fd = open(E2PROM_DEVICE, O_RDWR);) a0 Z: g, X) \5 H6 C
  56.         if (fd  < 0) {
    $ O! R' z- X* S' f$ [( ~/ z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & {, n+ O: C) @
  58.                 return -1;5 S) O; s8 x9 I$ Z, e
  59.         }) g! ^5 i: ~. K4 p4 f/ z, a
  60.         arg.sub_addr_count      = 2;
    ; A5 y" V# ^5 C& Z( g+ D+ j
  61.         arg.data_count          = 0x18;
    - e. p# d1 ^- Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 }: p/ P% `3 f% o, }3 Y
  63.         arg.e2prom_cmd_data     = buf;8 T+ m: C  _5 m' p
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);. ]. N  i2 I. [9 N
  65.         if (ret != 0) {; \) V6 b8 u1 H. ]/ M
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);' ~/ u0 g8 o, o1 H8 x( ?, k
  67.                 return -1;
    - w9 V% s- f0 P  f% d3 ^, h2 n
  68.         }
    # o) p/ b* ?7 T2 T4 m

  69. $ E. d8 ~' m# b
  70.         return 0;0 @4 f* j. ]) Y
  71. }
    0 i5 z: N* e! Z( |( Z$ A: {3 Q+ L
  72. 9 X6 F  X3 I9 i
  73. int main()" E! q4 V- \. t, U1 |& [7 ]* G
  74. {# L0 w# ?1 z6 l& X  W# X
  75.         char c;
    # X7 G1 q' N3 L4 Z0 p: z9 z
  76.         int i, macs[6];
    4 _4 @' m; }6 o* `- u
  77.         unsigned char mac[6];
    0 @. Y' Y  Q; H1 \1 H; _" y; R
  78.         unsigned char stbid[256];
    5 X( ~$ o) G0 L( m

  79. 4 X: _, F  N6 ^- E3 }/ G8 \
  80.         if (readparam(mac, stbid) < 0)3 }" b; b1 K1 q1 t
  81.                 return 1;, p9 V/ z: X6 w

  82. ; J3 r) c+ Q0 E# @
  83.         printf("Current parameters: \n");
    * F8 F0 w- ^! a+ t/ n; a
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! n6 A2 b; e8 L, I5 A! P+ U+ N
  85.         printf("  STBID: %s\n", stbid);
    2 ]3 M' d( y* ~4 o  H  e
  86.        
    / }5 X5 T- ^6 p( \' r3 N4 X- t
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 O$ z" l  b3 I( T' Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 `; p( M" Q5 z: }2 J
  89.                 printf("Input MAC error\n");
    5 w' D) c+ @+ q; |1 W! s
  90.                 return 1;
      L2 z4 m! s0 R4 G! g
  91.         }* p' g8 b+ V  X& v4 `8 p4 ]
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    9 j6 L- R9 ?& v+ X. z1 j
  93.         printf("\nPlease input new STBID: ");
    3 D7 z7 x2 c" K# [
  94.         scanf("%s", stbid);3 x; k; H. A3 m4 j5 {, n
  95.         if (strlen(stbid) != 18) {
    + G3 W# |% P( {4 \6 P
  96.                 printf("Invalid stbid\n");: a8 I" L5 c( S$ B
  97.                 return 1;
      w7 x1 I/ r  K8 |6 _+ Q
  98.         }+ g4 L$ Z4 p+ M
  99.         printf("\nNew parameters: \n");9 ?( b4 F+ p, f. l! T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* w5 ?3 q0 l1 G- ?
  101.         printf("  STBID: %s\n", stbid);% v! h  w) m8 c  W

  102. 9 v" i3 A& ^6 c5 x7 o
  103.         printf("\nDo you want to change paramemters? (y/N) ");5 ?' c5 Y* z7 i+ I* i
  104.         for (;;) {  B, k8 ?/ w$ c, F2 a# Y
  105.                 c = getchar();
    0 I% O9 y0 ^$ v! T
  106.                 if (c == 'y' || c == 'Y')) M/ l  n1 W7 d. w
  107.                         break;: ~/ M8 o% U) K. ~8 w, U$ t4 j
  108.                 if (c == 'n' || c == 'N') {, d# Q3 h6 B  }3 f# d# C# m9 |0 G8 b
  109.                         printf("\nAborted.\n");" D4 d& d  K$ o% e
  110.                         return 1;0 M, {7 A) }* `- n$ G- V
  111.                 }* p+ C# N. ]5 N, u+ @
  112.         }
    & g1 j0 N: K9 z& |$ N: n& U; |
  113.         if (writeparam(mac, stbid) == 0)
    # m% W3 {+ N4 x9 a* o7 m3 z$ J
  114.                 printf("Parameters changed.\n");- K2 o  h" J- B
  115. 3 U, J3 {8 J: @( [3 I
  116.         return 0;3 G& G9 q; L1 j# b, ~; G
  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" j: q! ?) g+ H3 c2 u. K5 S" R# q
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" A9 d) [4 k: z& \4 J你用的编译命令行格式是什么?7 V1 P" w  t0 B
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-20 16:36 , Processed in 0.032802 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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