查看: 16845|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! f) |) ?* C% j0 A9 q% @" b" u0 \
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig" c/ E, V" [2 F7 f
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- E# O; N0 e7 ?  w) x. `
usage: himr <address> <value>. sample: himr 0x80040000 0x0
! R2 b) a7 V  D# K! p+ z( E( K( s$ D' `# g% x4 [  d$ Z  K

) q8 a7 t/ h/ w9 ?. h+ @6 g4 P, ~不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
% T, ~- i) j$ M5 O6 R* V$ a; {* o2 k( a
补充内容 (2012-3-8 09:42):
' ?) o1 u0 R9 D( V! \9 hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
( e; c' }. q! D% s4 a  e2 U这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。- P4 b) m# l" e5 f% x% k& ~, ~

9 O1 [1 ?/ \  o4 p! l, Ihimr <address> <value>. sample: himr 0x80040000 0x0+ @6 @0 g8 x0 T7 N) T7 a- P5 L1 V
5 {" j2 X3 E8 N. z8 q
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。9 `; B9 }! m% J* z0 \# x
himr 0x80040000 0x00( o2 I9 L, |2 I; d, H- R/ K
himr 0x80040001 0x11
) r7 s0 Y9 \% R. U) C3 Q+ zhimr 0x80040002 0x22
# v' ?8 B1 b3 _* ^+ }) {5 f6 r2 Nhimr 0x80040003 0x33
: w% D+ r9 G& f- |$ Whimr 0x80040004 0x44. _) c6 P$ W  }
himr 0x80040005 0x556 z; \/ v  O7 p% g0 @& V2 v

4 F) Z, `" y4 |0 d+ ^SN也是类似。& H* x# {( X. ?7 Y
  H( n. `/ p5 I( N9 K) I
现在主要是,谁告诉我们MAC和SN的地址?
# N( c  L0 [0 c2 s4 Q
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / G1 U: F2 C+ p" T2 O4 l9 C/ N
一直想找到运程修改MAC和SN的办法,苦于无解啊
( _2 o8 \2 n1 G
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 7 ?% W# t3 z1 N& g) p. u, w# i

  _9 [# m& N0 _4 ?% v修改的代码早有了。到今天不会编译。
& F* }) m# C7 d' S; @需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>5 H8 O$ n* Z) A# S7 A5 o7 M
  2. #include <malloc.h>7 f- v# O; H% q
  3. #include <sys/types.h>( s% m6 x$ I2 p! ~, U# f
  4. #include <sys/stat.h>
    ' I( O5 Q. b: b( o2 C  ^3 M
  5. #include <sys/ioctl.h>
    " N5 f- {2 \9 D
  6. #include <stdio.h>7 R' e8 T5 U- J6 I
  7. #include <string.h>
    6 \$ K3 V& l* W; a2 M
  8. - l) Y- }8 N. |5 o8 n7 R" t8 J
  9. typedef struct {5 D9 _0 o1 d6 Q; K
  10.         unsigned int        e2prom_cmd_sub_addr;
    & X# T/ \0 q, x/ J
  11.         unsigned int        sub_addr_count;7 @* d* N) I3 B6 p
  12.         unsigned char*        e2prom_cmd_data;
    + ~7 s- S' w  T3 F: N  {
  13.         unsigned int        data_count;
    : u8 L/ t/ }) J- W" O
  14. } e2prom_s_cmd;" k% G( B7 \) B5 V$ s: r

  15. 1 g4 R" ?- Y5 r; T
  16. #define E2PROM_CMD_READ 1
    4 h! g1 v' |9 b# Q
  17. #define E2PROM_CMD_WRITE 2
    ( \, X* U1 y1 P* _% ]+ j" ]4 o# u
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    - Z8 N3 d' @3 s4 E9 u/ `) W7 b

  19. - I, @3 p7 P7 ?9 v6 M9 }$ v  f( y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 N  a& `2 @" V- D! v1 Z0 S
  21. {8 p+ m$ ]/ {4 Y7 m; U
  22.         int fd, ret;' b: n$ @3 ?# L% }
  23.         e2prom_s_cmd arg;
    & X  x- \! F1 b4 h% @' J% ]
  24.         unsigned char buf[0x18];% o/ @( j, c9 j  M7 @# L
  25. 4 m6 O5 {, t( y* h# a  e: ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ o! w1 |+ G! n# J& }$ I
  27.         if (fd  < 0) {
    , W4 K7 n7 W1 @3 c# r  W; _. @: Y9 g% P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % D: N4 }! G6 v
  29.                 return -1;
    & c2 z7 n) |0 j- R4 L  X9 k8 _( ~
  30.         }
    ; N9 `& }( m9 F
  31.         arg.sub_addr_count      = 2;5 c5 \6 G. b! [2 K; h
  32.         arg.data_count          = 0x18;$ y, H/ N  h6 T9 C5 {' V
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) ~3 N+ J1 I* |6 I' f% c% p8 m
  34.         arg.e2prom_cmd_data     = buf;
    4 {  f+ D* L; h: w
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);9 m/ u; E4 p( F: ~/ `5 z) |
  36.         if (ret != 0) {
    + v! B9 l+ o" r  Y% O  `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; ], o/ h  @& I- r
  38.                 return -1;
    ) s0 x( t" U' }
  39.         }
    2 m1 Z5 R! ]: d5 n& x8 W
  40.         memcpy(mac, buf, 6);8 q5 N0 y1 L  Q% p
  41.         memcpy(stbid, &buf[6], 18);, M* \$ R" d9 h4 a" Z
  42.         stbid[18] = '\0';
    . K4 H: r5 d; R- {4 B
  43.   R- {4 S5 F7 _  M, ]
  44.         return 0;
    ; r& E9 e: L: n$ V5 y
  45. }
    ( |5 L$ z& @, B5 A# F. L3 d$ n
  46. $ I. H( U0 @( v4 B0 v3 ]
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 L, b$ I( X3 p, k! n, P, B
  48. {
    " x( X& G& p- g2 y+ \
  49.         int fd, ret;5 J/ s/ i4 X: ~/ \* N: B& Y& F
  50.         e2prom_s_cmd arg;
    8 s2 N3 h5 F% _( F% S, ~" S
  51.         unsigned char buf[0x18];
    % |' [2 E. e5 B) [4 o
  52. ( R1 D7 r% i/ v" t5 N  V4 J
  53.         memcpy(buf, mac, 6);
    9 u1 k) e2 }1 o9 c1 f
  54.         memcpy(&buf[6], stbid, 18);+ [2 n+ k) K$ H- q( h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 n" f+ w8 E# d* N
  56.         if (fd  < 0) {
    , G2 ^8 r) g( p- ]1 |, F
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 e1 b4 M+ L+ [5 P6 {: A
  58.                 return -1;4 }; U9 Y* r9 c" u3 g( I
  59.         }
    ( |$ D. X% l6 Z; l) g$ d
  60.         arg.sub_addr_count      = 2;
    & _3 Y8 E1 o/ j8 v1 h( e+ x; n
  61.         arg.data_count          = 0x18;
    + X6 d5 [: P* K( i$ c
  62.         arg.e2prom_cmd_sub_addr = 0x290;6 ~; L6 w' t) D" a
  63.         arg.e2prom_cmd_data     = buf;! q: Q* K  F5 k' r% z5 m  m, N
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);% C9 S, `+ h/ F! v2 }/ z" n  T& Q
  65.         if (ret != 0) {# \" u4 u3 B  v6 Q$ d( O) u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    8 g2 O4 r1 [" h4 {' M0 {) W7 V
  67.                 return -1;
    5 R4 [0 ~4 q/ V$ X1 \6 p4 r) ]
  68.         }+ Y2 a0 f3 d; p5 }1 |' e& f* q
  69. * Q9 a8 L; [5 d' b1 `$ x/ ~+ F
  70.         return 0;; d* o: ]% c8 r/ Q, {* s# E
  71. }
    % _' b: d8 i1 g! Y1 B, W( [- {5 x

  72. ; m$ Q& H4 l: I  x$ f
  73. int main()
    6 y0 y7 x: S2 ~1 s
  74. {. K# r7 n9 E2 D$ a3 m3 W2 k
  75.         char c;
    7 d6 J9 T6 C9 G: w+ M* o$ P
  76.         int i, macs[6];
    % ~6 j( T8 z. q
  77.         unsigned char mac[6];
    3 k3 W7 |) G8 N: _4 w
  78.         unsigned char stbid[256];+ w4 m/ U7 B! W! L

  79. 9 }8 c2 \' f' }" U" c) ]
  80.         if (readparam(mac, stbid) < 0)" J  q9 Q' g9 q9 X5 W! z# [
  81.                 return 1;
    " |$ O0 G: U" N4 L% X1 |5 A) u* }
  82. 0 X2 _5 K3 X3 d! Z, \
  83.         printf("Current parameters: \n");8 Q) e& \" g$ p  R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) j8 S7 M' }: l; X
  85.         printf("  STBID: %s\n", stbid);
    ) t; F3 _" p' E% [9 H
  86.        
    ) D7 S) W, X7 p( Q" N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% F4 _8 Y! c& z! Y1 Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    % P4 _* l! d# a
  89.                 printf("Input MAC error\n");% Z- W/ r4 q. m6 |" D5 L- y
  90.                 return 1;) \. a( f- C$ h" K5 c3 b. [
  91.         }0 G* I! Z6 q" W( J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    9 ]" S' r: V/ t& c2 g
  93.         printf("\nPlease input new STBID: ");$ x8 p: ~5 d7 g
  94.         scanf("%s", stbid);
    0 n7 g7 g3 g4 g; `
  95.         if (strlen(stbid) != 18) {3 }5 D' n5 F3 g! _
  96.                 printf("Invalid stbid\n");5 \8 r8 f% W) ], ]# N
  97.                 return 1;* }0 H5 h4 k% Z& m
  98.         }
    3 j& Y" S& o8 S5 b) E. s  u6 w
  99.         printf("\nNew parameters: \n");
    , K- G- R4 U5 V+ V  i/ S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 s1 Q6 `( g3 t% f' Z6 ^% \7 Z# a
  101.         printf("  STBID: %s\n", stbid);
    / v- N6 a8 _0 f8 z

  102. 4 p3 A7 S# N+ T# k$ h' {
  103.         printf("\nDo you want to change paramemters? (y/N) ");! }" z2 x& _# d, [# g
  104.         for (;;) {
    / ^% Q- R( _0 E& G
  105.                 c = getchar();- Y& U8 ^, L# G* A" a
  106.                 if (c == 'y' || c == 'Y'), s  ~- `8 a) @
  107.                         break;
    ) q* r+ ]( i. h2 [1 |2 L
  108.                 if (c == 'n' || c == 'N') {
    # s% ]5 |: H5 {- [8 x* R! W; u5 @% p3 P$ a
  109.                         printf("\nAborted.\n");
    ' E7 F  J( v  I: W9 h; c6 E
  110.                         return 1;
    : A7 p1 X& U+ t6 Y  ?8 P! E7 @
  111.                 }
    - a) @/ x) o/ V2 i
  112.         }
    $ Y4 p5 X/ H! S8 i; G  Q
  113.         if (writeparam(mac, stbid) == 0) ( u! p9 \! R9 W  D7 |
  114.                 printf("Parameters changed.\n");) Q5 O# f, Y8 E* j  S$ s

  115. 1 E" V  E$ F. y$ u' S
  116.         return 0;
    6 w1 R% S( s' F: J) L
  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 7 o# A* E/ h0 Q( O; Z  @
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ O3 z) A  R7 s% P你用的编译命令行格式是什么?1 Q) Y( u# ~, P6 E* N
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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