查看: 16788|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 S* d3 }* q$ M  b* h" r7 g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- {" @% k! V) f& f( ~, E5 }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( L  {7 V) m+ j$ m2 }' Z" L
usage: himr <address> <value>. sample: himr 0x80040000 0x04 M# W, y/ B% L4 e" |7 x0 |; ~
) U' v# A* g: I- u4 p

/ ~/ o) F7 o" a" O不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?+ k. |' v6 b  i
5 M6 Z5 J3 X/ d3 [. d) N- l
补充内容 (2012-3-8 09:42):0 \& R; n" [7 V$ B% S
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, \+ P! ?0 ~8 e) W
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
( `1 B: u1 p' G: v/ M4 R& y) k  e
himr <address> <value>. sample: himr 0x80040000 0x0& [2 `8 C/ Z2 r0 P3 x, w4 N
; n: T* G; _$ v" ^, f$ q3 G" x
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 x1 }6 y$ D* I- c. p5 Uhimr 0x80040000 0x00
' x% i7 @4 T4 r5 C( F! W9 v  L+ Y3 Ghimr 0x80040001 0x11
2 n, a3 Y3 U3 v& u! z+ f. {. vhimr 0x80040002 0x22
% Y2 w9 Y% Z9 d: b. Q! zhimr 0x80040003 0x33
( D  x- Z8 F# i0 b2 c9 Bhimr 0x80040004 0x442 O% v7 T( C( }2 b7 s/ @
himr 0x80040005 0x55
0 T8 y: X1 }' S" W; P& j
7 P! W9 w/ ?' n! r  `% RSN也是类似。
1 p1 u& ^  @! r, B% a2 O4 m8 T- l' a" a/ {! o: J$ Y/ |) L
现在主要是,谁告诉我们MAC和SN的地址?
8 n# v  q" L9 U: d8 {; ]) ^" t+ I
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ! v0 {1 \4 N5 m) m3 J7 _
一直想找到运程修改MAC和SN的办法,苦于无解啊

4 q, z4 [: h8 ^3 C- Y源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# B( O% {6 g" W( b# E9 G) B. |& J( {) p% r
修改的代码早有了。到今天不会编译。% E7 y4 i& ]$ r* @" D. |- g
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>1 M# h6 k& [: j3 \% F
  2. #include <malloc.h>2 ?/ w$ |$ n6 ]
  3. #include <sys/types.h>( V7 \# u2 G( o! T
  4. #include <sys/stat.h>
    . Q! i( {/ X3 m& c+ q$ a
  5. #include <sys/ioctl.h>& ^  t5 F1 w$ X* Z# f
  6. #include <stdio.h>+ a- u6 ]) d6 C  k: E
  7. #include <string.h>
    7 }$ J. Y  Y: V! P2 |
  8. 1 F! D. C/ Y( T3 K( k$ f
  9. typedef struct {. Q( a8 x( X# N+ h" {
  10.         unsigned int        e2prom_cmd_sub_addr;  R6 |  ]: q5 T; c
  11.         unsigned int        sub_addr_count;% [" q% J) w7 L5 |7 r
  12.         unsigned char*        e2prom_cmd_data;
    * ]% F$ _* u8 q! l& K$ i% E
  13.         unsigned int        data_count;8 n7 c; w8 l% r8 N
  14. } e2prom_s_cmd;) Z; S6 z7 \* Z6 P
  15. ' e  f+ u/ M/ }9 A5 E5 U9 D$ b
  16. #define E2PROM_CMD_READ 1- Z9 T" S, G# g. H1 T+ g
  17. #define E2PROM_CMD_WRITE 2
    9 `: Q, d3 [) X& G. M+ X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"1 v; J$ H6 `4 r. m) j' y8 n

  19. 0 ]% u: A; {  F+ N
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 E: l/ x9 ^6 g2 Z2 T
  21. {1 ?, K: {) L: r0 {
  22.         int fd, ret;5 f7 J' j& _3 ~4 m, o3 s
  23.         e2prom_s_cmd arg;
    ) f' j/ i' s7 |& ~; [5 k0 f2 _
  24.         unsigned char buf[0x18];$ _- A  w1 ^; [
  25. ' B7 B, s8 ]5 ^7 @2 w, h0 H, v
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    & [! J3 T' q( b* C8 g# a
  27.         if (fd  < 0) {
    8 G; i7 [! f; C8 k
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  M( I$ c2 M* c/ S0 [; ~) }( X
  29.                 return -1;) T" j! X8 n: v, J
  30.         }2 ^2 h+ Y* G+ ^8 D$ v% v4 f
  31.         arg.sub_addr_count      = 2;
    8 z( W# d- _1 c
  32.         arg.data_count          = 0x18;; {+ A. D+ W" j+ b# \4 y" e
  33.         arg.e2prom_cmd_sub_addr = 0x290;- I: Q/ _1 ?2 {6 L
  34.         arg.e2prom_cmd_data     = buf;9 M) Z) e# Q9 A  S/ @
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ x7 `$ U/ X2 Q& [! ?
  36.         if (ret != 0) {
    ) w+ B7 P  m2 |* ^
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# R. m3 W9 O- T  Z& u
  38.                 return -1;
    * l5 @  @  \% M3 ]% ?6 Y  V* A
  39.         }7 Z9 G- I4 ]6 b9 ^! n' J. E, j
  40.         memcpy(mac, buf, 6);
    , }, q( w3 o3 O, ]* O% n6 d1 q( @
  41.         memcpy(stbid, &buf[6], 18);( w- r) ^! ?. P2 o! O* P
  42.         stbid[18] = '\0';1 V% r+ `- A5 N: }$ Y1 b
  43. ; {2 q3 q* ]: N- t
  44.         return 0;. S/ t- n" |& Z4 V
  45. }
    ( a( T. q& C# K8 M  W

  46. 7 @0 }3 ^- J6 G  g2 i
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / U/ {# d, _' B, u- B& f& O
  48. {3 k3 A& [* T1 Z4 j, }; v( \
  49.         int fd, ret;
    ! w; {8 T. H  J+ t
  50.         e2prom_s_cmd arg;, ?9 s( l' g" R. j4 r
  51.         unsigned char buf[0x18];2 \* H. X: W7 c" d! b1 w$ `* g5 |
  52. ; b. H  M1 c7 u% L
  53.         memcpy(buf, mac, 6);
    : O, N0 m6 l- {6 I% D5 {
  54.         memcpy(&buf[6], stbid, 18);
    4 O3 W! Q& d8 f! h# ?' }1 D& t/ X2 G
  55.         fd = open(E2PROM_DEVICE, O_RDWR);7 g1 X+ H6 I- E8 x
  56.         if (fd  < 0) {' ]; O# b/ r* v3 Y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 Q* `  p+ ?- l% s: d- k
  58.                 return -1;
    & }+ S  C3 k" |/ a% U% E* J
  59.         }# T5 p+ y% ~& q* `
  60.         arg.sub_addr_count      = 2;4 l6 }: |3 s: V% ?7 ]2 n
  61.         arg.data_count          = 0x18;
    / q$ P/ n" Y* `# D* V
  62.         arg.e2prom_cmd_sub_addr = 0x290;7 j  I: c' J! `. x4 L7 E6 _
  63.         arg.e2prom_cmd_data     = buf;
    $ s3 ?+ r! B- S$ g3 s
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 L( c2 E3 ^4 M* X& i/ g. {! c
  65.         if (ret != 0) {
    ) l: T7 q) v( q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ ~; }1 p. Q* Q; W' K' h% `0 t6 N
  67.                 return -1;8 q; q. ]4 K" U" F3 W1 V  |- k2 J
  68.         }
    : r/ l0 U0 {* _3 F# p5 o

  69. 4 g' \7 ?' i0 ]
  70.         return 0;
    . Q4 \" Z/ q: u) ~6 C! ^
  71. }
    ! L2 M" q6 W% ^
  72. $ B/ A, L- |: \9 [3 s
  73. int main()$ E  J+ n8 H" ?6 }8 p2 h
  74. {
    2 w, W; j- p) {# X/ [% n
  75.         char c;
    , g( B, ^. u( t- G; C
  76.         int i, macs[6];: I2 J9 U4 x& Y9 {
  77.         unsigned char mac[6];0 d- z  q8 R5 \7 T8 u4 S5 [
  78.         unsigned char stbid[256];
    ; U; e! \  l; q& A/ S! R2 e5 o3 N
  79. , s' u: G2 r4 g6 C) v- n$ ?
  80.         if (readparam(mac, stbid) < 0)
    ! c8 b5 b" @/ g! |: c. @) w
  81.                 return 1;0 Q( W6 d9 V1 Z7 G" a4 ]* R
  82. + b7 N+ e3 _$ q
  83.         printf("Current parameters: \n");
    4 ]$ l) H: f4 ]. X* b
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% P9 P* Z7 O4 n0 T$ q" {
  85.         printf("  STBID: %s\n", stbid);
    1 n/ R3 L# t* T2 n7 J% \
  86.         ( E+ h: w+ K7 M3 a: _/ U! d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    " X7 ~( r1 {7 E. u& v* Z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ! F% N7 ~" x6 M7 M8 e
  89.                 printf("Input MAC error\n");4 s/ l( s; h8 t. s- V$ U8 Z6 M. m/ j
  90.                 return 1;$ s4 U, p8 L9 I/ i/ N3 A+ j, Q1 x
  91.         }
    * A0 R! D  ^$ J( |, ~7 O7 B, d
  92.         for (i=0; i<6; i++)mac[i] = macs[i];  r0 h. x; S* |$ a7 A6 }' Q) I$ m
  93.         printf("\nPlease input new STBID: ");% t2 v& Z# r  b" O" t
  94.         scanf("%s", stbid);" q' l3 f# M) T, Q$ T
  95.         if (strlen(stbid) != 18) {
    9 v& u; R2 g  l# ^
  96.                 printf("Invalid stbid\n");6 \4 v# Q. m  w' C8 r: h1 a6 W- Z
  97.                 return 1;" }, R0 @$ {9 {2 P; K  V$ c, A
  98.         }
    0 l9 `) b% X, o: ~/ q$ A
  99.         printf("\nNew parameters: \n");
    4 z2 q& d" R  D0 g+ N' i7 f1 E# y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % Y1 ~' r1 D$ r" [' g* R, D0 x0 p
  101.         printf("  STBID: %s\n", stbid);2 Q' @7 D- P8 X  I7 l

  102. ( ~2 j5 E( r" z3 d8 P3 b( |% O4 o
  103.         printf("\nDo you want to change paramemters? (y/N) ");1 l+ T  b# y+ ?  m' B$ m7 l, ?. T+ E
  104.         for (;;) {
    / h  [- M3 I+ g% J( c- w+ H' f
  105.                 c = getchar();
    # l, s6 u5 e% ?' f  `! o
  106.                 if (c == 'y' || c == 'Y')
    4 x, r4 Q) r' B' F! l) x9 X
  107.                         break;
    % v$ y7 Y! f* w
  108.                 if (c == 'n' || c == 'N') {
    - d, O/ p5 O" h4 e# p7 L/ K
  109.                         printf("\nAborted.\n");
    & o. ^- e! U! k9 p: o7 v' a# ~( s- c
  110.                         return 1;
    ; m! W9 [" c; L4 x
  111.                 }
    0 g* W+ ^2 n4 a# P. G0 G: W' A
  112.         }( f! z* ?5 i6 L
  113.         if (writeparam(mac, stbid) == 0)
    ! I' F8 i+ f# e! p" n7 h: N* D2 f
  114.                 printf("Parameters changed.\n");% B% T" J- K# c* V7 j- R+ C. g( A. @/ _
  115. ) ~( j4 `7 X  s: n4 Q  l* c5 l
  116.         return 0;& W! T! M' L" ]5 D
  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 9 O0 |. P8 W  O" h% [
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 c; b+ i; Q3 m) g  P
你用的编译命令行格式是什么?; F& {  i) m- D. X
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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