查看: 17860|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- ^$ S; D2 Z" [% Y, y: W* Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / I  R" V; T0 `4 B7 u* f' v9 e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
1 e, k6 C% n. W$ musage: himr <address> <value>. sample: himr 0x80040000 0x0
+ ?0 a0 x3 y9 Q5 S5 l. ^$ N; J, j" a0 A( z" ~4 C

: d% U6 r7 j$ w4 M" {不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& E( {! w. _- ?/ q6 h7 _) m
8 r' }# j" ^: I0 p, ~6 p
补充内容 (2012-3-8 09:42):8 E# d" c2 A$ A! o+ _3 X
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 R! o" n( q- T这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
0 c6 j' z  E  l, b. E) w$ u9 l9 C" e; L
himr <address> <value>. sample: himr 0x80040000 0x0: i) K0 `$ R3 d( F- G- l4 h% ], z( }* q0 V
% @+ E. P$ @* \* Z- p8 |. I7 q: i$ \
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 {! V/ u9 A6 k
himr 0x80040000 0x009 s' x" V4 E9 E1 o1 P
himr 0x80040001 0x11
  n/ v# ?( {6 U6 [' o2 v9 Z' L# qhimr 0x80040002 0x22
2 ?- j& [7 W& Yhimr 0x80040003 0x338 {1 |6 p6 Q# B" x0 h
himr 0x80040004 0x44
; Q, s7 _. p# i' {3 S  hhimr 0x80040005 0x55  t1 u! @4 u" N

' ^$ F' m6 R' x4 I" k! `SN也是类似。
2 J: X6 V& W) A' r. q2 n9 D7 I
: n- Y$ M4 f' R  r9 G) A3 O8 j现在主要是,谁告诉我们MAC和SN的地址?0 c" ^: V2 h( M2 G) ?
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - }2 M0 N; l( I
一直想找到运程修改MAC和SN的办法,苦于无解啊

8 k# z0 i3 z9 {源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 C3 {; j1 M0 l9 {/ `# n# A% K- W% B: h/ l6 v/ \5 Z3 g  G
修改的代码早有了。到今天不会编译。/ ]. |1 z: T0 \+ y4 r2 s# R
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + h. S7 H' Z7 u, p8 @
  2. #include <malloc.h>
    * n$ g' k, z' W8 W! h* m+ t
  3. #include <sys/types.h>& ]* \' }5 g7 I' \( I* `8 Q7 k
  4. #include <sys/stat.h>
    9 Q# A+ P7 r5 B0 N
  5. #include <sys/ioctl.h>$ |2 w- y9 u- [# I4 l
  6. #include <stdio.h>1 N8 P6 U8 o8 r! n. G  _0 i
  7. #include <string.h>  E7 F) A; |( l, V
  8. $ N, K* l( i" }, Q3 |4 R6 W
  9. typedef struct {, e( v, a, }$ f2 K0 u8 k& t
  10.         unsigned int        e2prom_cmd_sub_addr;, s. d& |$ _9 p
  11.         unsigned int        sub_addr_count;
    : ?% q9 _. W2 ^( t9 p( _1 Y5 I* _
  12.         unsigned char*        e2prom_cmd_data;( r7 x7 N& @7 K9 r1 j  O" F# ]& g
  13.         unsigned int        data_count;& n) q; ^- W9 t6 L  k* s
  14. } e2prom_s_cmd;
    " y, e" \8 @( Z5 z  q
  15. 4 W2 c6 K) {1 e7 _# {5 b* V# k7 A
  16. #define E2PROM_CMD_READ 1
    ( Z- E* z% V: U
  17. #define E2PROM_CMD_WRITE 2
    . C. q" e/ K7 w5 b* B; r
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 M( [% ]6 \2 _) |3 R
  19. & C* [# e* p3 i& ?9 B& N/ p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)% R& Q  Y" ]$ b5 O6 Q
  21. {
    3 h* F2 o# E6 K/ e6 T9 P* f0 i
  22.         int fd, ret;
    ( p( A( y  X6 t/ d& X. B
  23.         e2prom_s_cmd arg;
    4 u1 X7 w+ `5 p+ t
  24.         unsigned char buf[0x18];
    + S" ^. b# \& R$ C% @+ l: C
  25. " I2 ?2 A+ i3 _8 S6 Y# Z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; r( K8 k& ?* s+ k) w
  27.         if (fd  < 0) {- m5 ]% t4 D  b* z4 l1 V; v9 Q2 ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 l  |5 v+ \( D8 j. c4 @
  29.                 return -1;
    , ~& K3 X( |7 b/ o2 B' I( Z; w( g+ M
  30.         }7 E, o/ H, d8 D9 N$ r
  31.         arg.sub_addr_count      = 2;
    " y0 T: W3 g3 l" J9 `2 Y/ s/ o
  32.         arg.data_count          = 0x18;4 e+ B: W2 u6 M. ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;5 D& G3 f" E- m& l2 T  K9 ?* o
  34.         arg.e2prom_cmd_data     = buf;& \4 p- a3 s* ]- W
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % h+ B9 m1 P; Z1 t, h' E7 h
  36.         if (ret != 0) {
    # w2 p# i3 O2 m! O, y: u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 h4 c2 x9 C- i: D
  38.                 return -1;, I) K- v) ~, \/ A) V
  39.         }. G# ^$ K, B# ^: W
  40.         memcpy(mac, buf, 6);
    7 H5 q6 s% o5 S; Z! O6 Q
  41.         memcpy(stbid, &buf[6], 18);( P( P  l8 }# b* d1 q+ ?- p/ ]" J) a
  42.         stbid[18] = '\0';2 w" ~6 n( ]6 [8 K

  43. " ?2 j9 l! _  h# o2 R/ T( z
  44.         return 0;
    % Y/ w. X2 E5 j0 I
  45. }: ^  }* b0 G  G- n

  46. & T: K3 S( B! F# \8 D* t
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    5 n. C; F+ A: P
  48. {
    & q7 r5 q/ u6 ^7 ]; a1 p* [
  49.         int fd, ret;) L7 C% e  ^) y3 a% G
  50.         e2prom_s_cmd arg;
    1 t" J9 z' J- Q3 k
  51.         unsigned char buf[0x18];
    $ Y2 Q5 \/ K: ~  P9 J
  52. 8 s- r5 x% D9 e" B! H
  53.         memcpy(buf, mac, 6);
    & S: f* N  y: R4 A# J5 Z9 H
  54.         memcpy(&buf[6], stbid, 18);
    9 ]; \; ?' R7 s1 M6 k8 G$ D4 J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! B5 l2 A% Q9 Y. u7 Z9 t7 E; X
  56.         if (fd  < 0) {2 Z$ d' t; D. w% q$ v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, z3 i* P. ]  d$ l+ f
  58.                 return -1;! y  b* v( r4 f! A7 |0 l1 T
  59.         }
    8 {9 X& F. @2 X" N
  60.         arg.sub_addr_count      = 2;
    % M% I6 z; M7 Z$ D) D
  61.         arg.data_count          = 0x18;/ V4 b* _! n$ [6 B" U
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 l5 I+ g  }5 E' {$ X/ r2 s. \* s; B
  63.         arg.e2prom_cmd_data     = buf;
    2 \$ J3 _& k4 {# e/ A# t- X7 ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# G$ Q% w& a% |" X
  65.         if (ret != 0) {
    " k- i$ ]: `) p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, X! I4 _2 R9 }* {9 N$ r
  67.                 return -1;
    ' Y/ `, h/ Z$ F9 o+ b5 ~5 r% ~' S
  68.         }
    . B" |* W4 A+ V/ S$ E! e
  69. , G, l& X2 h6 W2 a# B
  70.         return 0;/ d$ O- \) O0 E6 T' P( o$ }, l& g$ Z
  71. }
    * z2 \) e% U3 Q* B: w3 X0 ]8 D

  72. 3 m5 V" z9 B: N% j) c# ^4 X) @4 v8 a
  73. int main()
    9 {; m$ q( [- r+ N0 Y
  74. {
    - E4 f% y! q9 z1 |# i/ R
  75.         char c;
      ?6 J" F% H2 i  Y
  76.         int i, macs[6];
    ; g$ U- C; e- C9 X
  77.         unsigned char mac[6];
    4 Q! v0 Y- z1 {. i. T5 S( _
  78.         unsigned char stbid[256];
    + r! U( T! q. h- l8 g1 |6 s
  79. : p: l" ~2 O- b
  80.         if (readparam(mac, stbid) < 0)* L0 ?1 D# ^. e
  81.                 return 1;
    - P% S* l8 [4 u' F2 k/ J
  82. 3 C& b& q3 ^1 G( E, N: w" Z2 s
  83.         printf("Current parameters: \n");
    9 n+ \( c) Z  q) L( h" |& t1 P
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 Q, i0 a2 W& D: @
  85.         printf("  STBID: %s\n", stbid);* B9 }8 \0 Y8 U% v
  86.         - y7 ~) d5 r: x( l, R" |! W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    1 G' g) L8 C% t2 S; [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {& F& W. |% d5 k" X" v: ~4 V9 ?9 `3 B
  89.                 printf("Input MAC error\n");
    3 i2 e: s" D* [( Z2 f" [* d5 A! {3 S
  90.                 return 1;
    ' y, K$ H7 K0 q
  91.         }6 r- x4 l! p0 t/ W! G$ H) ?6 T7 |
  92.         for (i=0; i<6; i++)mac[i] = macs[i];3 `7 K2 a, c" c+ j& m  r
  93.         printf("\nPlease input new STBID: ");
    ! N- ~) a. F. M# S) A1 u/ |
  94.         scanf("%s", stbid);0 H6 P3 c/ v% |- w; d8 A3 n
  95.         if (strlen(stbid) != 18) {4 u* @$ g# o- c
  96.                 printf("Invalid stbid\n");8 P$ }% F" k' B( R' L' r
  97.                 return 1;
      ~) J# \) |6 P. C% W8 W
  98.         }$ M. I" B9 @2 g1 n& [# u6 P4 V: P
  99.         printf("\nNew parameters: \n");
    - D* p  P' `. ]  Y! i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; V( i* [$ Q8 ^0 p7 W2 F) ^
  101.         printf("  STBID: %s\n", stbid);) [) f2 q* U- P% @

  102. ' E" q) p6 {! h# Z2 l+ g
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 ^' X6 t& }- d; F
  104.         for (;;) {
    4 U8 V8 H* c' S/ h- G1 Q
  105.                 c = getchar();
    & N/ {$ Q% J- H* Z: Y6 ?
  106.                 if (c == 'y' || c == 'Y')1 k6 g) h7 }0 Z3 ?& W# `% M! m
  107.                         break;
    $ C/ [7 s& v0 M7 ^7 d
  108.                 if (c == 'n' || c == 'N') {
    6 c+ A' i5 W7 Y
  109.                         printf("\nAborted.\n");$ [4 u  F7 h- F, N
  110.                         return 1;
    ; L. G$ N3 @+ B) ]. u1 q3 {
  111.                 }9 U/ L6 g: R1 v% C
  112.         }
    & Y$ q4 r; t# D" l8 n, [
  113.         if (writeparam(mac, stbid) == 0) ( z( O, s2 ?$ f8 D. [
  114.                 printf("Parameters changed.\n");
    9 x6 ~- Q8 o, @# [( p0 m( D
  115.   w* Q" z; p+ p2 h- [
  116.         return 0;
    # \. O+ L0 I% M% j3 d, r. H9 p
  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
4 x0 q: ], o6 ~, V+ ^' V9 j1 d$ S在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

9 ^; Y5 q5 `1 T) z5 X" L你用的编译命令行格式是什么?1 R6 X6 I4 j0 O/ ~
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部