查看: 16950|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    - p+ M( J/ v* q" I7 N2 c
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) C0 c, j0 q8 ]. ~& @: N  M
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
5 X- u% k0 r+ s; K; c; `usage: himr <address> <value>. sample: himr 0x80040000 0x09 e0 b' \. w% `% ~! M3 j# v& G

2 i5 {4 P* s) r1 l' B' f" P# s5 ?. P2 [" ?
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, s( N6 w8 g# A4 a# I) V% A
7 D4 ^( O% Z( z7 H* x
补充内容 (2012-3-8 09:42):, r1 l5 J% @$ q( h
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数0 o. j4 @" [" Z/ z9 o2 u% c" ^
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。! y5 `  `$ t" G3 {0 e, Q0 d

5 f9 ]! ~4 {: H# Ihimr <address> <value>. sample: himr 0x80040000 0x0$ s* n7 v& v5 T, s9 w; K/ C
% c! E' S* x6 ~3 X; s
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 o. e! @! A) |, i- i9 T9 F3 k: ghimr 0x80040000 0x004 P! s" M4 V6 I7 F( L" H$ r) ^
himr 0x80040001 0x11/ |" T+ k# J5 ^( k/ _$ @* O% Z) F; t
himr 0x80040002 0x22
. K( F1 y! x+ {himr 0x80040003 0x33. @2 t! G! ?- v0 a# R4 K! _
himr 0x80040004 0x446 j( H1 [0 n8 w) }
himr 0x80040005 0x55
% R% W5 Q$ \$ d5 R& U' N1 C* ^! R5 z2 w1 i( S; `2 c
SN也是类似。
& R+ u2 n* v2 V: X) m
3 |; q8 V, B. g- t8 Z+ @6 |现在主要是,谁告诉我们MAC和SN的地址?
+ d+ n2 ]1 h) k4 b
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ; I+ A8 M1 q  s% ], J
一直想找到运程修改MAC和SN的办法,苦于无解啊

/ R7 d' z, d$ j- R% ]源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & k0 e" l* W# ]0 A  `
/ l$ M# A4 B7 _, o. Y
修改的代码早有了。到今天不会编译。8 O9 U' c8 _+ g: J
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>% K, P1 q% e# l( `6 `/ ^
  2. #include <malloc.h>
    8 M8 M. X5 g9 P+ X. |7 L
  3. #include <sys/types.h>
    " e" R* a5 @6 G9 R4 T
  4. #include <sys/stat.h>
    7 e" a$ I7 l) P0 j( N  b
  5. #include <sys/ioctl.h>/ `- F" P; B$ ^: c3 G
  6. #include <stdio.h>
    0 l: k. [7 {  N: ~
  7. #include <string.h>$ b3 b8 _/ Z  N* k0 v  P% d

  8. ( X7 A4 D( F% o6 J+ q) b! N
  9. typedef struct {
    ( p1 `5 W4 Q3 k* l9 a, Z% q
  10.         unsigned int        e2prom_cmd_sub_addr;2 O( n% I; a! }1 x# B
  11.         unsigned int        sub_addr_count;
    $ E' E0 j% a# }/ l: p7 J" g
  12.         unsigned char*        e2prom_cmd_data;% X- y/ k# F3 B" x
  13.         unsigned int        data_count;
    # x! K) b% a5 V9 `
  14. } e2prom_s_cmd;! X2 x3 S2 Z6 p% _6 @* x
  15. & u+ o( n% A+ i. V. @" j
  16. #define E2PROM_CMD_READ 10 P4 [: ?3 m& q2 p* C# y, m4 ~
  17. #define E2PROM_CMD_WRITE 20 F* U  I, _, [' _3 i* Z& N# U
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! \- U% W% m4 l) W( B6 O0 O' r; v

  19. 8 y/ {1 v1 d2 M0 f
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" {# ^8 G& s3 v$ ^% m# f
  21. {
    & u7 j) M" l# `0 C$ A5 R' o
  22.         int fd, ret;
    2 ]& `, q; q6 ?8 T4 F+ `
  23.         e2prom_s_cmd arg;
    ; C& L/ D* R. \0 J. K, P
  24.         unsigned char buf[0x18];
    / ~0 h; k/ x5 k' Z% s$ x+ I
  25. / a7 Y' ?5 v" J) [6 v: u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" ~- E  x$ u- Z/ w' h) a
  27.         if (fd  < 0) {3 Z1 |, h; I5 C; C- O4 }
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) M' ~( b2 _9 u4 T
  29.                 return -1;# \. Z6 x! ^3 D9 U% D) `
  30.         }0 c$ Y/ F/ }2 t" o3 F0 m
  31.         arg.sub_addr_count      = 2;8 I$ |4 p0 U/ Z
  32.         arg.data_count          = 0x18;
    ; i! ~# [; A9 o8 L0 N8 Q, ?' V5 T
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , n" r# I1 y* k) ]' ^
  34.         arg.e2prom_cmd_data     = buf;
    ) Q; J- o' f; e' m
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);9 \7 q$ [0 k  J" \
  36.         if (ret != 0) {; Z- s8 @% l5 N2 ?9 G5 `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);! E5 x* n4 G% Z3 z3 c9 Q
  38.                 return -1;4 o4 V/ C, k# w& q# v
  39.         }
    # {+ z8 K4 f7 A" W& h
  40.         memcpy(mac, buf, 6);8 H: m! w- W$ J5 x* @3 [
  41.         memcpy(stbid, &buf[6], 18);
    7 t6 m' s- E- y0 H
  42.         stbid[18] = '\0';
    6 [  q& E; h" f) V

  43.   P* e% B/ C2 I5 {  P2 o! X
  44.         return 0;7 [9 F7 {3 `4 i( b! f& ^! Q
  45. }
    ) M9 F( z$ ~0 `& a. W* q0 O# U

  46. 6 z* F! z0 N6 I, N/ n
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . [: V: E1 e9 W' g9 d$ Y  [- Q4 {
  48. {
    & S+ g8 n. N; L' Z  J3 \
  49.         int fd, ret;
    / S& f; D7 a9 G. ?0 q5 q/ W% e1 |
  50.         e2prom_s_cmd arg;
    % o  h" t4 h; o# V/ a
  51.         unsigned char buf[0x18];; c' }% G$ }" l1 g

  52. $ C1 O7 q1 |. p
  53.         memcpy(buf, mac, 6);) b& m* ?/ I( ^# e
  54.         memcpy(&buf[6], stbid, 18);/ _; r& m3 F; ]
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 K, j& B$ M" L6 H5 B. J3 ]
  56.         if (fd  < 0) {! a( ~1 H1 Z# V3 w. m
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . _3 [3 g, E. c/ T; ?6 p+ ]
  58.                 return -1;' s; U2 `8 {" Z
  59.         }
    # x, R: c, B; [
  60.         arg.sub_addr_count      = 2;
    8 I3 S: R1 n6 o/ n6 n
  61.         arg.data_count          = 0x18;% t5 h4 W8 v  D; j, I1 H
  62.         arg.e2prom_cmd_sub_addr = 0x290;- u/ G, x/ v9 d% s7 |
  63.         arg.e2prom_cmd_data     = buf;4 P6 }1 H9 n2 P7 @* C6 C
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 k+ q- C, @/ S8 @" q
  65.         if (ret != 0) {
    , Y/ e% c) j& D  R3 ]2 R0 x
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% C, y# r( `1 v% i& M4 \
  67.                 return -1;4 z+ b( w1 }3 l
  68.         }. ]0 ~( _% s2 E

  69. 1 p5 B  q6 c$ C5 H% M
  70.         return 0;
    ' c: o0 O1 D( h9 I$ w, g" M3 L: p
  71. }
    + y  k- M2 g$ R6 {

  72. & }5 @! G! T! ^) M" A5 }
  73. int main()
    + I, Z( S, p1 P& d$ G( }# J4 Z
  74. {
    ; y7 h, G. i* D1 R
  75.         char c;4 Z4 |- e/ T  W' j9 k: y0 K
  76.         int i, macs[6];
    : F: y: `  o' Y9 _9 f4 L" {8 [
  77.         unsigned char mac[6];
    / o1 S$ E$ `% z0 K. q# I  C' k- n  f
  78.         unsigned char stbid[256];/ b0 @; a, C6 f  Y2 V+ \8 E8 o
  79. 0 G! y2 `1 w  D5 a1 R7 G# x
  80.         if (readparam(mac, stbid) < 0)
    ; q5 e' p2 G& L$ N/ v" c/ l% k
  81.                 return 1;
    ' a0 \% Q9 d6 u; r+ G
  82. 0 s$ _8 @4 }9 L1 Y3 o
  83.         printf("Current parameters: \n");
    " x% D% L7 `0 o) A( c2 p* X7 Y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 ~4 Y5 ~/ u; l9 U3 `: @1 }# ?4 [
  85.         printf("  STBID: %s\n", stbid);" B- S  J# \7 x" x+ ]
  86.         5 h6 T5 B* O" E4 b. W1 _. g, _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 W& P8 R( @8 ^, z' d
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {2 I  r! D) P2 g% x5 Z: `; ~
  89.                 printf("Input MAC error\n");
    8 k8 n& j! b, i
  90.                 return 1;
    ; w1 [( y# B4 J- }2 c# l# K
  91.         }
    9 J  N; ?+ X$ g! C* F$ e# {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * @4 z2 g$ A' v  z7 g$ C" T3 Z
  93.         printf("\nPlease input new STBID: ");
    " i# J, ?: H/ Z" Y+ L
  94.         scanf("%s", stbid);
    * H+ n4 V/ o8 n% \7 n) P6 c0 X
  95.         if (strlen(stbid) != 18) {3 K  e2 l! m9 ~' \
  96.                 printf("Invalid stbid\n");4 }3 b9 ]+ n6 @4 ]8 W$ W2 G' A4 @) I
  97.                 return 1;+ K: m" Z7 W+ V/ r5 F9 e+ x: `
  98.         }# x  n% q, f8 I) M
  99.         printf("\nNew parameters: \n");
    3 U! I3 |' H8 |. i) Q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; d2 I/ q  `! a, A
  101.         printf("  STBID: %s\n", stbid);
    ' w, U3 }$ Y# c( g+ M' j
  102.   W0 f+ ~- k: w3 p/ y* Q' l5 L
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 Z7 a7 |/ _7 [$ N
  104.         for (;;) {
    , w; F1 A' s" M" q
  105.                 c = getchar();8 u# j3 `  d8 @. C
  106.                 if (c == 'y' || c == 'Y')
    $ o+ g  I" P: u* M' s( v% q
  107.                         break;0 C/ m+ [/ I0 w. S- J. _! K
  108.                 if (c == 'n' || c == 'N') {4 n: v8 B0 ]7 K! Y3 a
  109.                         printf("\nAborted.\n");
    - ~- X) ^8 P3 Z3 E/ b/ j
  110.                         return 1;
    / @* r) O% G: |
  111.                 }" ~: [9 @- X6 T- ]0 Q2 c
  112.         }6 z) l7 \1 u' H/ \
  113.         if (writeparam(mac, stbid) == 0) 6 Z) {1 t! ]) o, A* z
  114.                 printf("Parameters changed.\n");
    ' f; e: X) e' |
  115. ; ]! o( R# g/ B: ~! j
  116.         return 0;
    . Y1 C4 M. `% D) N/ ?
  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
2 a0 M; I& H  J6 q% S在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ B+ s' \" `  `8 m7 v
你用的编译命令行格式是什么?
8 X5 n1 f$ i9 f7 X+ o) |4 Z& a
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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