查看: 16682|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 w+ S* u+ b- k0 Y4 n" k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig7 I$ R! b8 v, I2 B; d: h$ V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; C3 y4 n0 i5 O3 W; m/ G! W- M; x
usage: himr <address> <value>. sample: himr 0x80040000 0x08 z6 b5 M$ ]$ D

* |! R" R  s- o
+ G9 r  |% s3 j7 C# S0 e3 t不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
4 ^$ u6 @5 P% e) C5 t1 C
! W+ v6 f" u! h; s, ^1 U7 ~补充内容 (2012-3-8 09:42):
3 r/ n% s& d4 U7 H* Xhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ [' c, d& V" F+ X1 D6 `这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
7 A9 _( G3 p- ~3 g- z- E  b
% r7 C" s  W" E- F* o) m  H9 f; c$ Uhimr <address> <value>. sample: himr 0x80040000 0x0
, i8 T- _0 W" o! D' }2 B, ^7 d& A2 ?0 H* d
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
% M9 W) r- P* P* Q; u, O( L$ j  bhimr 0x80040000 0x00
/ i; V( J. s* Z2 g) N. ]himr 0x80040001 0x11
, L8 c1 }1 l7 i# P1 W% Mhimr 0x80040002 0x22
; F) X6 i' q9 K' k+ B0 khimr 0x80040003 0x33  W- ], E8 t! Z$ h# P& R0 C
himr 0x80040004 0x44$ K3 U' l) p/ M* x
himr 0x80040005 0x55
' Z8 v, Q# N" H6 W2 H
: o4 Y. K; q; \/ r, YSN也是类似。/ ]4 X. J4 z/ q- D2 m

  l$ X. m4 |$ p现在主要是,谁告诉我们MAC和SN的地址?
' o7 ?" l( F  _( @* Q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( ^# r  t' I( j' a一直想找到运程修改MAC和SN的办法,苦于无解啊
4 c- ]! c5 R9 @9 u/ K& ^
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & z+ Q, m; n7 V1 @6 W; i1 K1 e/ R
# \0 \& ~* K- P7 F: A
修改的代码早有了。到今天不会编译。  n- T8 Z" F. q- c, f' B* Q* t
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    & @: j5 A9 _/ V1 Z
  2. #include <malloc.h>% `0 {8 E% ]1 w) t1 h
  3. #include <sys/types.h>* h, |1 p, W  i  v& J: \6 Q
  4. #include <sys/stat.h>
      }3 A0 G9 p& V! W4 M9 u' X: r
  5. #include <sys/ioctl.h>5 ?* @8 N. m2 Z! D8 g& A2 |0 v' q& H
  6. #include <stdio.h>
      z  @7 h- J7 j# K
  7. #include <string.h>7 `" P. T3 E' ~& s- J( T0 N

  8. " o: M$ j/ r1 W
  9. typedef struct {8 H5 I4 d  ]( ^3 p+ A( T
  10.         unsigned int        e2prom_cmd_sub_addr;0 a, I6 J  _0 K* G
  11.         unsigned int        sub_addr_count;
    / v& o, B+ l9 p1 w4 }$ g8 V
  12.         unsigned char*        e2prom_cmd_data;
    ; E5 ?- |0 r" E/ w$ \
  13.         unsigned int        data_count;
    8 {; c/ F  Q, C, J2 r
  14. } e2prom_s_cmd;
    + V: K% f3 n# G" ]% K9 G
  15. . x0 D/ h0 M/ P3 c& ^5 {
  16. #define E2PROM_CMD_READ 1! Y; x& B+ ^- I: X0 `) b
  17. #define E2PROM_CMD_WRITE 2
    / {- Z4 H& r; g7 |$ N
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# @- K3 r8 f' q+ R7 a

  19. # N9 M; h! @% s$ ]3 s
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 L* A2 `( v9 D) A
  21. {  V: y6 }% ^2 `/ @) q1 k5 H
  22.         int fd, ret;9 M* k: @0 G% B# Q% a
  23.         e2prom_s_cmd arg;2 Q$ F& W: ~& [
  24.         unsigned char buf[0x18];
    ' A4 k3 [' Q; w8 X
  25. / l( W$ e, G" d3 {& v5 b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 g$ A) e2 P( A5 k4 V. W9 A
  27.         if (fd  < 0) {
    , t4 _" |" M6 i. b. S
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - T6 o9 o7 L2 w9 U
  29.                 return -1;9 \9 ^; e( h  ~0 c4 {
  30.         }0 ]$ H+ G1 w- f# G% d6 H/ J  _
  31.         arg.sub_addr_count      = 2;+ S- r2 Q" l' R4 K
  32.         arg.data_count          = 0x18;+ a# U8 @# o1 ~( x! C0 ]
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 B) D( t- J: C% E# i! `* s
  34.         arg.e2prom_cmd_data     = buf;9 t+ y3 `- ^8 n/ L5 z+ t5 A: a
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);- `% k- Q, ~+ r+ A: G5 U
  36.         if (ret != 0) {" w4 @9 y  s0 F% ~6 D! t; o
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);) Y/ ?: [5 O! f3 Q& Y
  38.                 return -1;+ S- r* }# t+ f) O2 N7 I
  39.         }- l! y8 E" G+ X8 R4 D9 g) W
  40.         memcpy(mac, buf, 6);# {' K) W3 a. ^0 f6 q) Q2 `
  41.         memcpy(stbid, &buf[6], 18);3 X3 e1 g% b" R+ q6 e
  42.         stbid[18] = '\0';& [" I6 ^2 H+ t7 P5 q. a: ?  _2 Z

  43.   T0 T3 H) u. W# ]
  44.         return 0;$ ]5 S5 H* j7 X3 j9 l; T+ [1 G0 W
  45. }7 `5 D& z; `, M0 M& A, g1 `
  46. 8 c5 G' d& m5 f/ G& [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    % _" p( {4 D) u% l1 M; L1 }
  48. {% m0 I# T. B$ g  _. S: |
  49.         int fd, ret;
    $ ]: B0 ~" `/ r- w
  50.         e2prom_s_cmd arg;$ `: D3 p% [9 d3 y% g9 }
  51.         unsigned char buf[0x18];& o' F+ Q$ H5 A- |& x
  52.   K" f7 [% p! m) q& F) L! F+ ]
  53.         memcpy(buf, mac, 6);
    % ~# i3 d& h5 r! e0 O  }
  54.         memcpy(&buf[6], stbid, 18);. W% ?+ B1 R# f9 S
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 R( `  m2 D0 u8 M8 p5 j
  56.         if (fd  < 0) {
    1 r  f, S9 u* e8 _6 M2 V9 B
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 X3 N7 B3 i' t/ W
  58.                 return -1;. \' \+ r1 d1 `5 H
  59.         }; U( j* L9 W. U+ K2 d; A- m6 M
  60.         arg.sub_addr_count      = 2;9 Q! D+ C# A: |/ \
  61.         arg.data_count          = 0x18;
    ' @% Z" k* B! D* Z5 @5 A& T
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( i+ o$ u( g4 F  F  ~. Y! {
  63.         arg.e2prom_cmd_data     = buf;/ w/ X4 D2 ?* Q4 v" o9 m( ]( U' P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 P% e! w$ u/ P" B. f
  65.         if (ret != 0) {, m7 u: l! J1 O
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . ]- j; \$ ?' A' D( \
  67.                 return -1;6 M, D: c- {: o' \. W( C; X' c
  68.         }
    ( F& {4 x' J& [+ t( D
  69. + T* |5 _4 L* K* B. k8 x/ [
  70.         return 0;
    # g3 Y( W/ Y8 C$ w8 T  q4 |
  71. }( F: O% ~) I# ^$ u# m
  72. ' q+ M+ V- v4 A% ]
  73. int main()
    9 P& a5 X: U6 L5 I
  74. {
    ; G/ o8 m# _# R" l: S1 D! a* p0 o
  75.         char c;$ Q! J" m5 K# e+ Q6 x/ E
  76.         int i, macs[6];) v+ f1 l0 K# ~: C3 q5 y
  77.         unsigned char mac[6];
    " _2 w% z+ {9 y0 m2 ^: e
  78.         unsigned char stbid[256];& b2 o6 V9 Z/ w+ f! n
  79. $ }" b6 f, O; H# {/ ]7 _
  80.         if (readparam(mac, stbid) < 0)
    * }( d) [5 o( p
  81.                 return 1;
    ; k8 x& H6 ]  q/ O& \* O. f) ?
  82. ; b* o( J& }& R5 L
  83.         printf("Current parameters: \n");4 J2 _# H4 Y9 _. D  L/ X7 R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & C% W4 x4 _% M- Z" P
  85.         printf("  STBID: %s\n", stbid);
    # S) ]2 a& z. W. R* f
  86.         % r: S8 }" Y. q' h- r
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      M2 q* T$ L( l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( d6 s9 @. ]& o( T
  89.                 printf("Input MAC error\n");/ X5 p" y) P3 \% q( U
  90.                 return 1;
    0 \( M( f7 a0 S5 {" }5 y
  91.         }3 m8 p! n$ @. g% R. }% [3 v; W4 f3 F
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( L" {3 d! {' U
  93.         printf("\nPlease input new STBID: ");
    + _  P3 N4 L- Y' x) W
  94.         scanf("%s", stbid);" k8 N$ Q$ @7 L) z9 s- B) F
  95.         if (strlen(stbid) != 18) {
    , \% T6 J6 r" Y, O# N2 Q# i' w
  96.                 printf("Invalid stbid\n");
    3 d& I; _$ I" m5 t7 a' y3 I
  97.                 return 1;
    & P0 D8 y' h8 y" e- `- s
  98.         }
    % d# X7 t, o+ k  F1 B2 Y
  99.         printf("\nNew parameters: \n");
    ) q; |$ b/ s" d' ]9 s9 U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! u  y% R7 v3 R# j, {" O
  101.         printf("  STBID: %s\n", stbid);
    0 z$ X* w5 t2 Z, }5 Z' l) x6 {+ L
  102. * k$ g2 o* J* Q) \/ `/ E8 `
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ' f8 {/ u- q/ M
  104.         for (;;) {" B2 `: K2 c% i" J7 @/ w6 g
  105.                 c = getchar();
    $ J5 m, \0 q7 a
  106.                 if (c == 'y' || c == 'Y')
      O( A. X# P6 k& X/ J
  107.                         break;% H' }# z$ ]. I3 G. X, [" m: F
  108.                 if (c == 'n' || c == 'N') {' g( T# R) ~1 ?! b; F* U0 m
  109.                         printf("\nAborted.\n");  T% [! z" I* `1 ^( _
  110.                         return 1;
    - t, H5 X- Z2 z% b/ j5 R
  111.                 }
    / u7 e! q; J: c& H% F
  112.         }
    ) T$ @! W# h; K8 P
  113.         if (writeparam(mac, stbid) == 0)
    ) n  y; p! k4 s# w8 q
  114.                 printf("Parameters changed.\n");" l( e' Z6 G" ^  S+ H

  115. 0 I* d7 |: T) p- X" J0 k
  116.         return 0;
    9 c8 N. G, t% [3 K9 _
  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 O# `) H; m5 p2 P" K: q在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

% f4 L- ~/ Y0 g你用的编译命令行格式是什么?1 X: W% u, [+ X9 {& 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客服返回顶部