查看: 17671|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) L( A# O, ~" }/ _- Y7 w1 e
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    5 Q1 @0 k8 J+ x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 u4 ]. {7 f3 y; Z& X: A8 P+ ]7 w, _0 V
usage: himr <address> <value>. sample: himr 0x80040000 0x05 w# k" U$ i/ R8 ]" [* L' B- o

2 v8 L8 z. _0 n# L* d- h% P( e
- D' e, M! ^% m$ I不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
; |, [$ r- \8 t5 e2 i5 n$ A' }" [2 o  ~* n1 A' \
补充内容 (2012-3-8 09:42):0 X$ d% y; I/ d, c  k
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
7 |" R  x, H: X+ T% W7 @5 a这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。5 A  y# ~+ b$ P" @& X5 k8 c7 X/ [, l

+ V0 h( D: O% o5 g& `8 Rhimr <address> <value>. sample: himr 0x80040000 0x0
' b; W8 X) t7 S3 v0 h, x
6 {$ U% L. I: \& @+ H例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
3 N" R+ ^$ f0 v0 [; Yhimr 0x80040000 0x006 w6 T( N" O: C% b$ a
himr 0x80040001 0x11
  P8 o% J& \9 C9 r# b5 ?# shimr 0x80040002 0x22
  ~; h, R8 P3 o; F2 uhimr 0x80040003 0x33
2 Y) ~- m& i3 Y" z8 ]. \7 Shimr 0x80040004 0x44
! f# O# D5 |6 o% uhimr 0x80040005 0x55
6 i9 i+ ^% b' k5 |8 X+ ?) d$ J
* v3 S0 E! _; a4 \; ?2 c( F+ M) MSN也是类似。
5 q5 F! X0 _% X* Y% z6 G6 p+ U1 i7 ?/ n: o- G
现在主要是,谁告诉我们MAC和SN的地址?
& I+ e2 y* P, z  c
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / `& m8 w/ c& \# p( E$ w
一直想找到运程修改MAC和SN的办法,苦于无解啊

! X8 B: g; M. r源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
+ {8 }  ~- D" q6 `, y1 Q3 c7 l- e: B  @9 N3 L7 D
修改的代码早有了。到今天不会编译。/ I3 ?! P$ a/ U
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( f) B( N. r  ~2 Z
  2. #include <malloc.h>( K& F2 }; ?1 f+ b0 K* T: ?5 T
  3. #include <sys/types.h>
    ( Z' [8 R# V9 u! q1 h) ~2 T
  4. #include <sys/stat.h>: ^( q6 b9 W0 Y; p
  5. #include <sys/ioctl.h>
    6 L; @. U# a% _: X3 `
  6. #include <stdio.h>
    , ]; r2 {* G% d2 e* g% X; g$ D
  7. #include <string.h>  ~* \  G. D3 R8 p

  8. 5 c; c( e) _. k; B' n
  9. typedef struct {
    & a& o- i$ I# }7 h- g
  10.         unsigned int        e2prom_cmd_sub_addr;! Y$ N+ I& |, Z
  11.         unsigned int        sub_addr_count;8 n7 {' r; ^: g! k8 ^
  12.         unsigned char*        e2prom_cmd_data;# {9 G( b4 w! y8 y  }/ ~9 M1 h
  13.         unsigned int        data_count;. O) P4 O# r* Q% r6 Z$ y4 E3 W  m
  14. } e2prom_s_cmd;( G# n, S- X3 H% [! s  A

  15. 3 u% u8 f( J/ g4 N
  16. #define E2PROM_CMD_READ 1
    % A  u, V( I8 t3 d# a! t$ O
  17. #define E2PROM_CMD_WRITE 2  A6 |- ^- a7 N: Y9 w# _+ ?$ h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 M( Z& n3 K- ~6 N
  19. % B% ^- U  G1 y. ]0 g
  20. static int readparam(unsigned char *mac, unsigned char *stbid)' x% V4 o9 x5 P9 s
  21. {
    ( I3 {$ D7 ?8 J; W2 M6 n6 B, o
  22.         int fd, ret;& o) L- G* ]. h7 C* L" ~% E' }: @* ^
  23.         e2prom_s_cmd arg;
    " O8 g  B6 W, F1 Q4 G: k, ^6 ~9 B- e+ U6 W
  24.         unsigned char buf[0x18];
    ) I2 y7 P) Q# h+ J& k! l# O

  25. . n" j4 c, S2 Y: N/ F
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - Y6 Z0 N& v) j: ~# |7 L3 y/ x7 P
  27.         if (fd  < 0) {
    7 f7 `- K1 q* V) z1 r* ?! R
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , l- c2 i: m7 T+ |
  29.                 return -1;
    ( h+ f* a+ b. F" c$ q$ R* P
  30.         }
    9 w) z' P$ J0 R' E  c
  31.         arg.sub_addr_count      = 2;
    # K/ M0 v1 U; i" v! E
  32.         arg.data_count          = 0x18;
    % c! U# X& a( {* R6 g
  33.         arg.e2prom_cmd_sub_addr = 0x290;, e, ?7 T8 z: e0 E& |* d6 W* e% a+ H
  34.         arg.e2prom_cmd_data     = buf;
    & @! t' @, Y; T. r& q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 P0 [. Z1 B9 g; K6 h8 u$ q
  36.         if (ret != 0) {
    - s4 p% i6 C2 b: _  L4 [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 D) z2 {, U" H/ U  d0 G4 s
  38.                 return -1;4 H1 x/ n) G0 {7 @# t' g* \
  39.         }
    + X- s' X* x/ o4 C! p9 w$ B
  40.         memcpy(mac, buf, 6);/ S8 K  ^/ H) }' n/ Z- W2 r+ e
  41.         memcpy(stbid, &buf[6], 18);* P% J# x: b3 e
  42.         stbid[18] = '\0';
    ( f/ W6 D4 f0 i) q. b$ k

  43. - Y" P. i8 |; Z6 G
  44.         return 0;
    ! v0 ^) [$ Y' x' z
  45. }6 X" Q8 @6 A% e9 A: c0 }

  46. 1 @% c7 |$ \5 \0 r% o0 @. d; h
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 D, c4 B5 _8 @! ^2 X  K
  48. {% z! A- l% N5 `) q. o/ Z
  49.         int fd, ret;  I& k" o# T! S0 Q' [& |
  50.         e2prom_s_cmd arg;; N' @$ o' @+ n4 o
  51.         unsigned char buf[0x18];/ S5 s" A1 K* X8 R
  52. ! }6 e5 |( @& z5 T
  53.         memcpy(buf, mac, 6);( Y" J% t) O% A
  54.         memcpy(&buf[6], stbid, 18);3 @0 h  ?; G3 x& L9 @
  55.         fd = open(E2PROM_DEVICE, O_RDWR);1 Q% V# b* t% _  I
  56.         if (fd  < 0) {' D4 a0 V, }0 k5 a# ?3 e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ K9 v8 s+ E& N4 |
  58.                 return -1;# Q5 |6 r' W2 f; d
  59.         }
    2 T1 ~' t. |( z: s6 K! O
  60.         arg.sub_addr_count      = 2;
    4 Q) N: Q7 V, m8 v$ K; l: u
  61.         arg.data_count          = 0x18;
    0 C4 I5 ~" p! r3 Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    7 Z7 w) p) N! n, z+ G+ B1 r
  63.         arg.e2prom_cmd_data     = buf;- c  n0 B2 i' z. {% m& ~
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    & D; g$ V1 m* `. ?/ n9 B
  65.         if (ret != 0) {
    1 a9 O2 W3 z* {1 ^0 [5 }
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . S+ l- X4 P/ Y  O# P1 Y/ F5 \
  67.                 return -1;% L# l- l7 s. n+ F1 q# P( }
  68.         }
    : W6 {" [$ V+ m( z( Q% b
  69. 7 Y, c6 o4 y0 |+ c4 ~
  70.         return 0;
    ; U+ F: b5 x4 a; w. \1 |
  71. }% \# f( D# E% \/ k- e8 ]  q/ S
  72. $ a9 `5 |: M0 d9 C2 \3 \7 c) ]
  73. int main()  y9 g% C' i+ U; J; W& \' k% c0 K7 e
  74. {
    - _, S3 d0 v' d/ y7 w* y8 W" _- e
  75.         char c;
    $ A4 N- l7 I5 h# K2 h4 e
  76.         int i, macs[6];2 D, w* W. B5 {& k' L. V& N5 N8 V
  77.         unsigned char mac[6];
    ! J- K* n% H" P3 `2 j7 \
  78.         unsigned char stbid[256];
    0 P, U% D1 H5 K* {- E$ t" B
  79. 4 `$ u' W. H1 q$ G3 S6 X' K0 ^
  80.         if (readparam(mac, stbid) < 0)3 f/ y/ _, ^. N# d# u' b3 T
  81.                 return 1;) U: i% @' `6 A7 x" [% G
  82. 8 t( U. g& o$ h* G3 {
  83.         printf("Current parameters: \n");
    & \; V# G* M* I3 R7 q% n2 p
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 t: C1 m* ]0 C7 U: M
  85.         printf("  STBID: %s\n", stbid);2 `8 |- H- d( |: z+ P/ ]/ T/ O' L% l8 u
  86.        
    3 }2 l. U' `1 u
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : A  b2 f9 m* j3 I/ d0 q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : q+ N) F. Z* X3 X
  89.                 printf("Input MAC error\n");
    : g4 _$ a$ z, S& j
  90.                 return 1;# r! ^) U$ T9 {" B6 _9 u+ f/ r$ Z
  91.         }
    8 I+ g' [; H) Y% c; K/ G% v- E. [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];  E& G" _) {( p) c! x' C5 r% Z7 c
  93.         printf("\nPlease input new STBID: ");  p* v7 M  a* n) U& Y
  94.         scanf("%s", stbid);  j5 p9 i$ b  {. k, S
  95.         if (strlen(stbid) != 18) {7 m4 W4 \7 P, ]" s
  96.                 printf("Invalid stbid\n");
    $ o, W4 Z1 T9 R& s' J0 W# d0 ~
  97.                 return 1;
    ; [; Z1 E2 t! `1 T/ E( K) [$ t
  98.         }7 p9 u" g: K5 d/ j' b# n9 e+ d4 X" k
  99.         printf("\nNew parameters: \n");) `; q( U  g! {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 P  g3 ^6 n: H. l
  101.         printf("  STBID: %s\n", stbid);
    4 S% b' r. O  U4 W: d  ?) g4 M

  102. 0 [4 G7 F% z9 ^% K! Z0 K/ p6 k
  103.         printf("\nDo you want to change paramemters? (y/N) ");1 U/ I$ Q, y5 e+ V. s6 ]/ |5 B
  104.         for (;;) {
    . F8 g% R0 D3 q0 l
  105.                 c = getchar();
    / B1 `2 H: Y1 I$ O
  106.                 if (c == 'y' || c == 'Y'), c5 G2 s6 g# q7 {4 G9 ^9 Z! Q% T
  107.                         break;7 k( {9 T& Q) H4 s7 f9 z
  108.                 if (c == 'n' || c == 'N') {7 M' c# E6 N  [" d
  109.                         printf("\nAborted.\n");
    1 U5 D) x, D: m0 v6 N$ f, ?
  110.                         return 1;+ s+ M, A5 A8 f9 ~0 y9 ~" d* C* m/ v
  111.                 }0 Q, R+ L" S+ B+ W8 ~# D0 C1 @3 x( a, w
  112.         }0 E- [! S- `+ J; b% P7 f. P5 s
  113.         if (writeparam(mac, stbid) == 0) 0 r4 Z- w+ a4 E
  114.                 printf("Parameters changed.\n");
    ( [7 F; c% x; h* j: n7 ^9 F( O: K

  115. ! Y; l- v  T6 S. D9 f
  116.         return 0;* j6 n- _+ l; ?- 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
1 U9 Z( l' @* P5 c" }在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 \  y  E+ \- t' a你用的编译命令行格式是什么?
/ d) W* c2 J  q4 o6 Q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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