查看: 15998|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 X6 a* J5 e. P+ i
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ; r  C5 L' h1 l
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; O8 H  ?7 c8 W4 d9 \7 a& A
usage: himr <address> <value>. sample: himr 0x80040000 0x0/ n( k) v/ w# Y. I2 }

  I: Z* X) L; b; Q6 s2 _& ]0 @/ ^9 d
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# P: _) {" t! `, ^5 W: n0 Y& }1 S  m; c- P. o
补充内容 (2012-3-8 09:42):$ r5 H# A$ f) c# n2 E1 K  Y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 ?$ H2 X8 C4 c9 t2 ]/ G
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。5 q" x$ {. c* e+ r7 r! d) w
: Q9 A$ \- K- H5 q5 I% `
himr <address> <value>. sample: himr 0x80040000 0x0
6 @. U4 |" K( T$ T6 u8 J! u
! _$ s+ M# _* l* i9 Z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
8 s* D0 g% O- [7 S- `himr 0x80040000 0x00
2 `  C2 p/ u: @  y# o& Nhimr 0x80040001 0x11
1 X6 N) f  M& M: z, ehimr 0x80040002 0x22& I) h5 W$ z2 h% p8 R
himr 0x80040003 0x33# D4 d! k( J0 f$ V2 [
himr 0x80040004 0x44
# L; w$ |) ^1 J- a/ f- shimr 0x80040005 0x55" n$ l$ n4 w1 s" N

: e% K. L% {8 K/ S: v2 u( TSN也是类似。9 s7 \6 V. `- u
% t* y2 m( \( @4 J5 K9 V" F
现在主要是,谁告诉我们MAC和SN的地址?
) U, y" y; z) g, {; v
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 % b5 G6 e- d" q0 H1 d) Z7 `
一直想找到运程修改MAC和SN的办法,苦于无解啊

- r) V, a$ H2 O% j4 H* h源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; p( u' W7 Q3 D  F- I, t/ O7 b9 R" \. w' s, s& S
修改的代码早有了。到今天不会编译。  R" l, n# [# S# |' M2 B: o2 |
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>% v% g% H, b1 w; {
  2. #include <malloc.h>
    + j# s. P. |6 k: J( `! h
  3. #include <sys/types.h>
    8 E9 Z; t1 a0 v! G* K
  4. #include <sys/stat.h>
    1 W& J$ G5 X" i7 y, g
  5. #include <sys/ioctl.h>
    " r0 b' x3 K- q1 ~( e# F- O
  6. #include <stdio.h>
    ' I6 q- ^2 A% l
  7. #include <string.h>( q% I9 A  e- j, e5 w6 _! r
  8. * U3 H1 K6 f5 z. x$ C7 F
  9. typedef struct {1 @5 K) u$ U8 G5 t' O7 F
  10.         unsigned int        e2prom_cmd_sub_addr;0 N1 ^8 s8 z- u+ x: v( a
  11.         unsigned int        sub_addr_count;5 E4 C+ s4 q. O! Z( J' b9 i, v& w: F
  12.         unsigned char*        e2prom_cmd_data;5 }. \& L' F, M) I+ f% i
  13.         unsigned int        data_count;; L9 y% a/ G! O# K2 L( _
  14. } e2prom_s_cmd;
    ( E8 }9 [3 t$ s5 j2 }$ L  R" [3 e
  15.   s0 K( J. D+ b  x0 i; H
  16. #define E2PROM_CMD_READ 1; N9 Z- M" X7 p" e0 L8 i
  17. #define E2PROM_CMD_WRITE 2
    ; x2 |6 r' Q5 L8 r6 i/ P/ N
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# z4 x% `+ g) \, L7 ]

  19. : }/ @3 [6 p9 [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! t7 c- ^7 |, Z+ Q4 P, [1 ]2 P
  21. {2 Q; S$ z' S  T
  22.         int fd, ret;
    2 b9 t0 r0 D7 D/ Y4 R  Q7 p( Y
  23.         e2prom_s_cmd arg;
    / ~8 @8 Q' q$ y, v8 c( h! r
  24.         unsigned char buf[0x18];; M: l5 Z6 S9 o. c0 u6 B& T* q

  25. 7 p% @$ [/ ~, B  z$ d: a# ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! d0 ]! W2 D7 H0 z
  27.         if (fd  < 0) {
    " Y6 f! E) z$ z! z) b' C
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 G  L) m% u+ x/ E! p
  29.                 return -1;3 ^/ C! w9 v- o; D) f
  30.         }
    1 Q- K3 D7 q5 ~, b1 |( c& E
  31.         arg.sub_addr_count      = 2;1 a* I" D9 e* f1 Y
  32.         arg.data_count          = 0x18;
    $ ^& V5 N9 I8 v* m$ }
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / }9 ]& w8 i& d+ `9 a5 x
  34.         arg.e2prom_cmd_data     = buf;) e0 p8 s2 k, T: e1 X: G8 g% \8 `0 [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    + p2 ~4 a0 u8 c8 v5 f! M
  36.         if (ret != 0) {
    ( a, Z: R  f7 E6 E3 c# ], k
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);. q! I3 Z# m! k8 o
  38.                 return -1;; H6 A% d' b1 F9 x
  39.         }
    : ?, V! d$ \, @! U
  40.         memcpy(mac, buf, 6);8 b* W6 e& J# k7 `& z* M& X' V
  41.         memcpy(stbid, &buf[6], 18);* `4 C4 f* {$ A0 i! ~& e4 X
  42.         stbid[18] = '\0';! l9 @, v7 G4 V: d/ ?- b9 d
  43. " a! W( `) C( x3 A. @
  44.         return 0;; c; G8 B3 v) ~" M7 ?8 Q( Q( G- n
  45. }4 L' f$ }9 K, l0 J# A# J% J2 H
  46.   V- ?7 w% c8 ?6 @7 L( i
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)( K& g: G3 S. z/ z
  48. {
    & {# s" p0 T( Q; ?6 D
  49.         int fd, ret;
    4 a, t& x5 J& _& w. l4 k* [
  50.         e2prom_s_cmd arg;/ S2 j- j4 F3 }; }9 t# y2 J4 P; _
  51.         unsigned char buf[0x18];- b, @0 g, \* _1 H( q& ~
  52. 4 Z/ V+ w9 k+ K9 m& s
  53.         memcpy(buf, mac, 6);
    3 e, M" F; K  t( i9 C# N* q
  54.         memcpy(&buf[6], stbid, 18);
    ' D2 C, A, d; p
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % {- ?! C$ Q7 q+ f) @. c5 O
  56.         if (fd  < 0) {
    # {0 a; t4 o: f1 O+ ]8 ^
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ W9 g$ R2 S& J
  58.                 return -1;7 D2 o4 a/ T9 _: e& N$ l
  59.         }9 g" Z$ G9 B5 t  e8 k
  60.         arg.sub_addr_count      = 2;% }# v) S8 a! c, z2 {, E* |
  61.         arg.data_count          = 0x18;
    : ~1 ?& Q1 F9 ^+ ~2 x4 v# R; S
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 T/ T6 Z. b3 P) h7 u5 K( i
  63.         arg.e2prom_cmd_data     = buf;) N7 A2 |: F- W% {( \/ ?( Q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + T; c2 q' ~5 m8 L# Q! k
  65.         if (ret != 0) {: j/ p1 s" P) B! i" y) J% L
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 r( @" Q! D* @( H; H/ ^
  67.                 return -1;
    1 Y) A' ~' _  `" W0 A5 k
  68.         }
    ; f. |! p  O; f

  69. - ?, E+ H7 E4 S- T. y! o
  70.         return 0;
    6 h1 l- Y4 x" o6 W2 e
  71. }
    & C- g' ^! a( s

  72. 6 l0 R5 Z; M" _0 S8 v' n
  73. int main()" H( @/ R6 y/ d9 j- E
  74. {
    : |" e$ U0 [& U% V' l0 v# g  {
  75.         char c;# m& B8 @: T) R  h- j) n
  76.         int i, macs[6];4 y2 A, ^8 K  k4 Q3 N; e
  77.         unsigned char mac[6];
    ) L1 o1 Z2 G6 r9 a3 Y2 ]8 Q
  78.         unsigned char stbid[256];- [: o' D3 l5 L& l( l$ @
  79. ) |/ b: h% ?# z8 h) S
  80.         if (readparam(mac, stbid) < 0)3 _7 ?+ }* T. p- t4 a9 }8 w
  81.                 return 1;3 H: A) \$ u* ]* ^7 N
  82. & |: w' E9 L7 J. }) }+ L
  83.         printf("Current parameters: \n");4 h2 ~; O: @* ^+ u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 Q6 H$ e. ?( u
  85.         printf("  STBID: %s\n", stbid);
    ( f/ E3 S1 t, w( {: h  L
  86.         % o7 Y! T! @( n3 j
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ F# S$ @/ _8 f! j  c, f9 r
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {/ W$ A- h; q0 |% N
  89.                 printf("Input MAC error\n");# R- G3 F8 p7 ?7 l7 S9 o$ t0 g
  90.                 return 1;
    $ [  C, J4 H7 A6 {  q
  91.         }# ?- B6 \  D" M: p. T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    2 B6 F$ \! \) H9 }. a8 |
  93.         printf("\nPlease input new STBID: ");
    ! T+ r/ O5 o. r# E# l
  94.         scanf("%s", stbid);
    1 \+ x. L0 T  f! x
  95.         if (strlen(stbid) != 18) {
    . k. J/ s1 g' b4 u$ h
  96.                 printf("Invalid stbid\n");: g; _( ?( P7 G
  97.                 return 1;" n0 h/ Y6 H  @
  98.         }6 H, T( q7 K; O1 ]2 v$ u: u
  99.         printf("\nNew parameters: \n");
    ! D6 l% P) N8 p" @& d. {( v1 p
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * w# B# c5 \5 W! n
  101.         printf("  STBID: %s\n", stbid);
    4 v+ H% j, x8 Q

  102. 3 t' B6 s4 W5 O* d; u3 @% E" U, S
  103.         printf("\nDo you want to change paramemters? (y/N) ");7 ~4 o* s. T% @. O
  104.         for (;;) {, o0 M+ t( {/ I9 }
  105.                 c = getchar();
    6 J* K/ t1 j- p7 o' z  w3 ?
  106.                 if (c == 'y' || c == 'Y')
    : g7 ]: A" m, Q( U
  107.                         break;0 V* g( S0 @. }$ e  R, x
  108.                 if (c == 'n' || c == 'N') {6 J5 \1 E8 ~6 f2 w5 T
  109.                         printf("\nAborted.\n");
    6 W! n5 f' @5 ]0 ^  L6 n
  110.                         return 1;5 _: n/ Q) S( w. f$ l
  111.                 }
    & g0 u1 {7 S# @* {- c) R
  112.         }
    + O0 V: r& p. J( D$ a% y  t
  113.         if (writeparam(mac, stbid) == 0) + v1 x# U" t' r& U1 S3 K8 q
  114.                 printf("Parameters changed.\n");6 v' X' b! D4 Z1 W* J; t

  115. " b1 S( B( u! [0 i# W9 T
  116.         return 0;/ I7 M5 v2 ?$ ~+ I1 _
  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
4 w7 a8 l+ I& i) z( L1 K在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 F! b  s! h* h0 O
你用的编译命令行格式是什么?: f7 ]( [2 ^) v* h, t
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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