查看: 16025|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ [7 C  N4 R, r; l+ ^. {2 ^
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 K; {9 Y- W3 p7 y  ~3 l+ D; i
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
. o% m, @+ J- @  v+ e. tusage: himr <address> <value>. sample: himr 0x80040000 0x0+ ?: W& A* j  S& c7 U$ H
! N3 F! @! ^& y4 o$ X) D

( Q" d3 }6 F+ s4 c) R- ^不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# U' E: C/ F1 k! N" V
3 _# N$ C4 ~4 ~/ G. o# F
补充内容 (2012-3-8 09:42):
/ V; V% x$ T% l* Yhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! v4 [7 r. @* c; ]4 x
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。& @# M8 }  {$ {9 M9 D
& p3 f$ Q  H( J7 t8 C
himr <address> <value>. sample: himr 0x80040000 0x0' G/ S* z: K9 I* J
8 Y" K, C% H$ @% h+ N
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 Q6 @6 k5 |$ N, Mhimr 0x80040000 0x00: j% _0 w( o9 o0 x) a6 c1 |' Q
himr 0x80040001 0x11
6 p- x3 @) [5 {# j; \! ^himr 0x80040002 0x221 y0 s) Y6 F. B( E- M8 I' P
himr 0x80040003 0x33* E( K. I+ _0 e6 S- M. h
himr 0x80040004 0x44
) o8 I4 {+ E1 k7 zhimr 0x80040005 0x55- f, N8 ]" j3 t" V* s: y6 [! `1 C

6 Z  V' t( V% i1 T" A7 ]) d& Z8 `SN也是类似。
5 l; x  f+ q5 A; D9 R  s- M0 F
) k& [7 h% v  ~& ]% ~' F现在主要是,谁告诉我们MAC和SN的地址?
3 ]. E- N8 o8 Y; L; L5 {! {
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ ]* a( \$ s" p5 R4 s9 J: u一直想找到运程修改MAC和SN的办法,苦于无解啊

7 n) ~( b5 i2 J$ z8 V( a6 ~1 \; A源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 # M" O- C- W9 s
7 J! ^8 m; w0 n$ E; S8 a6 _
修改的代码早有了。到今天不会编译。, `. S; V% J9 S* Z8 e: Z! J8 v
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 C+ A! B! z$ {+ d# q5 L# F
  2. #include <malloc.h>- v! l! m% z# o3 O+ Z0 e2 w+ ^
  3. #include <sys/types.h>
    ' K. x' S4 w1 ^$ |
  4. #include <sys/stat.h>
    * }# o6 ?& j0 N8 k! j
  5. #include <sys/ioctl.h>( O! ]  W9 [0 |
  6. #include <stdio.h>1 T% a7 [& c9 ~( C  y0 V$ @
  7. #include <string.h>( Z) }  i4 m0 M% N( Z5 r# s
  8. ) k& Q) t; `8 h, I7 ^( b* Y
  9. typedef struct {4 N" X, \: s9 v1 ]
  10.         unsigned int        e2prom_cmd_sub_addr;
    ; j1 m+ S! s. _3 r! w" R# m$ D. y
  11.         unsigned int        sub_addr_count;4 p* \& I% E% v. `7 }; J
  12.         unsigned char*        e2prom_cmd_data;: X3 E. z: Q" e& j( J; B: |, }* f
  13.         unsigned int        data_count;. a; x* ~9 H: a$ O( [
  14. } e2prom_s_cmd;
    4 z- J2 S) d; l5 [: l
  15. * K0 N5 F5 \5 K; `
  16. #define E2PROM_CMD_READ 1- c* I$ z, |: `: L. R& p! S
  17. #define E2PROM_CMD_WRITE 2- y) Y) m) {' X2 {1 E
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% f. n% C% c: S6 B3 H: f

  19. . e8 k3 s" \0 f3 C+ g7 J
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( d8 R' p  N2 X" P1 g: w
  21. {& W1 E4 a: _2 t/ r8 x
  22.         int fd, ret;6 Y; P+ C: U" p% f' O3 P
  23.         e2prom_s_cmd arg;: H2 a! g$ F4 ^
  24.         unsigned char buf[0x18];
    " i1 q. _& ?# k) \$ X% z- m) T

  25. 9 L& G' O- k/ ~# w1 G9 r
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; s7 @4 ]! y2 z$ V: A
  27.         if (fd  < 0) {' e4 ]/ L, ]! X: L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. C; \: t/ ]2 I- j
  29.                 return -1;7 n' u2 c4 v9 [1 M/ v2 q
  30.         }
    - G6 _% t, C1 a  R
  31.         arg.sub_addr_count      = 2;: r/ \4 u# f5 w' y
  32.         arg.data_count          = 0x18;; U. Q" U& r/ t* w( W. `5 w
  33.         arg.e2prom_cmd_sub_addr = 0x290;) A) c" h: o  u( L# {' X
  34.         arg.e2prom_cmd_data     = buf;9 Q8 V6 _* S% P2 o. ]! Z; O
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 T+ m% G5 Z7 F+ s- F  G
  36.         if (ret != 0) {
    8 q1 I, j& p* u4 M9 i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& {/ A- K( d+ ]9 d+ Q
  38.                 return -1;  e8 w3 b1 {* v2 R
  39.         }
    4 U/ G( f" F2 z1 m. f% Z4 {
  40.         memcpy(mac, buf, 6);
    + v4 ]0 A& M' Y' K4 K/ F: o
  41.         memcpy(stbid, &buf[6], 18);" q" B5 n/ h1 ]  R$ S, Z/ O! b4 q
  42.         stbid[18] = '\0';7 g* s* z4 a5 w  p5 q* z
  43. + u* W  U  W5 d9 P) M2 M* Q
  44.         return 0;
    ( X: [' E+ H( V" L
  45. }
    & n3 i1 u; I% H

  46. & [3 ^( p7 R6 T. b# b8 Z% C8 ^( W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    0 S# y+ y# A( W& U0 l
  48. {- ~/ b: G) q6 x8 T
  49.         int fd, ret;" R) y$ O& T/ M; e  I
  50.         e2prom_s_cmd arg;
    7 c: n( |+ O! Z3 j
  51.         unsigned char buf[0x18];  l- x  x1 Q& ?

  52. ) E. X# q# |9 g: `& n, w
  53.         memcpy(buf, mac, 6);
    2 l$ @2 ]! X2 T8 J
  54.         memcpy(&buf[6], stbid, 18);
    4 ?* O# r6 c0 A) H% b" c3 ~
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, s* i; f2 f( q! T+ }
  56.         if (fd  < 0) {
    % D$ y" _7 g; h" e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 k4 \7 ]' V* d6 P- |6 q7 A, W) B
  58.                 return -1;5 W0 L% }1 N- t: n0 O
  59.         }
      w* ?5 _" y+ H+ R5 W- \7 b$ a
  60.         arg.sub_addr_count      = 2;
    + B3 X* e/ W6 ]
  61.         arg.data_count          = 0x18;
    - d( D7 P/ p0 a/ L0 D' [4 h
  62.         arg.e2prom_cmd_sub_addr = 0x290;# j3 U4 K' \$ _: y* S
  63.         arg.e2prom_cmd_data     = buf;
    6 @* ?; \: @% L- {8 R
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , }* y) m! k$ x  W6 K- R
  65.         if (ret != 0) {
    , Y: \, j. w: q! b# e4 u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 Q! X  O% d5 z1 b+ {
  67.                 return -1;
    ' {3 P5 Y3 a% X; V- O, a: V! t+ ]
  68.         }4 ^  D1 z! G) r6 H" e6 j
  69. ; w! \/ V5 N, z3 v' _' V0 Y
  70.         return 0;
    * Z- f3 S  y1 \; c# s2 y
  71. }* y8 o7 U  l+ O, ?$ K" r- N
  72. * Q) z7 |: `5 E' H$ W) \. t& w
  73. int main()
    & d" j1 {" T! @& V
  74. {
    " U! P; |1 y) _+ _8 M( y8 {- }
  75.         char c;! j6 Y% Z6 {& c- F
  76.         int i, macs[6];
    - @- [9 |/ R" P# |7 _
  77.         unsigned char mac[6];
    - ]# V, [1 W7 w2 n$ U* B
  78.         unsigned char stbid[256];- ~3 ?9 N! _, }( H# E+ h

  79. 1 T) H9 p. e" @2 i4 a
  80.         if (readparam(mac, stbid) < 0)
    9 ~# N0 e) q. [6 ?& R
  81.                 return 1;! n4 v/ C# M8 h4 I; O' D

  82. ; X( j$ W# K& L) ~( U
  83.         printf("Current parameters: \n");- D" b5 G2 u; Z* `6 R7 ?8 O
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! O" |( U& F# z' q5 h+ h1 V
  85.         printf("  STBID: %s\n", stbid);
    * G  m! d- M) W8 O; i- x
  86.         , C1 |) x4 Q( X: O- M
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 G7 U) k3 W0 s# K& s/ X
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  _3 H, v1 B- q2 d8 ?
  89.                 printf("Input MAC error\n");
    0 Z: U9 C! Z" n3 g- k' l" G! t( x
  90.                 return 1;
    # l( P9 x, f3 M% F' `4 o
  91.         }
    5 I% s$ K% e! M( o% u, H6 W
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    8 [$ \; r% x9 V/ N2 `# C7 [
  93.         printf("\nPlease input new STBID: ");
    8 X4 X. o- ?$ b
  94.         scanf("%s", stbid);6 \8 N. L( {4 y& d
  95.         if (strlen(stbid) != 18) {
    6 L- M* Y* f8 k4 f
  96.                 printf("Invalid stbid\n");5 `" b8 u2 Q0 k, b9 k4 i
  97.                 return 1;& ^% e& F% I8 G3 E7 k/ K+ [
  98.         }
    . [' @: K, A7 I1 c
  99.         printf("\nNew parameters: \n");" }6 }7 a; E; F9 N% A6 N, V
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ W2 o! t. i) q
  101.         printf("  STBID: %s\n", stbid);- w% l5 y" _4 }7 |

  102. ' k1 b( F: ~" r9 h& X
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 V$ L1 }0 L! N
  104.         for (;;) {
    $ V3 L" X8 m* Z+ m$ U) i% Z
  105.                 c = getchar();
    * l" j  w: j! r: U: ]
  106.                 if (c == 'y' || c == 'Y')
    . {- f5 o* ?2 ]! |
  107.                         break;; M. `8 c+ g7 t2 T: U+ c
  108.                 if (c == 'n' || c == 'N') {
    6 j- l9 l7 {3 Y& r. d. C9 Z  m
  109.                         printf("\nAborted.\n");9 V' a$ |) Y5 v  G. b+ ~
  110.                         return 1;
    , H9 o. s% I' U( E" V5 b
  111.                 }2 {  a: F7 X2 R2 O' f
  112.         }1 A( h4 i1 o0 B& L
  113.         if (writeparam(mac, stbid) == 0)
    - @: A! N  M5 \2 y; a! i# X! R8 }
  114.                 printf("Parameters changed.\n");
    , J% Q- ~# D9 E; X8 l7 ?( _' {

  115. 8 J( a6 C/ h$ |. e. p3 G0 a9 y
  116.         return 0;4 m$ ^' K, F% H2 M0 H$ @  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
- _5 |8 ^+ Q4 Y# t5 ^  D在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 _6 n& k& W3 i8 A7 R- d/ B" _3 \) H
你用的编译命令行格式是什么?. y7 T: r1 l1 w% {9 x% 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客服返回顶部