查看: 17159|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr, E) F4 _. ?8 P' v1 ~0 Z0 }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 S2 N6 A. f1 v7 d
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
1 K3 ]& y, B( Tusage: himr <address> <value>. sample: himr 0x80040000 0x0
5 b# o) \2 k; G% ~- I! Q
3 E6 v: m3 k( ?. ~9 X* H. q7 j* X. n0 X1 R0 t, P8 P
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?1 Y- Y0 B+ K3 b5 g8 Q, L

1 A) F; y3 b, p/ J0 ?% H# y补充内容 (2012-3-8 09:42):' T  h4 n# ^: e4 i
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  I& I0 H1 A7 o- `* ~' E' [+ O这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
7 K4 y  G; K. x( j- t9 ^7 M6 P
" d- }" {) a& Y1 D7 n4 Ihimr <address> <value>. sample: himr 0x80040000 0x0
( y0 S; Y) M# ~9 j8 [( j+ N) g2 _  T' M6 @) `
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ x3 i1 P1 s7 x! ]$ ^% U# V
himr 0x80040000 0x00/ H% s" Q% p7 N9 ?$ l) |
himr 0x80040001 0x11; H1 q& N5 D2 _/ J% P+ |! R. p8 n
himr 0x80040002 0x222 s! f9 a+ h0 W4 b% `$ o
himr 0x80040003 0x33
' Z7 z: L2 u; }- R% L! f9 X( Whimr 0x80040004 0x44
; r( i- |5 R! u9 X' Fhimr 0x80040005 0x556 c$ k" ~4 l$ i3 `* h! ^+ n% a

2 g4 O( x4 ~+ y3 S' NSN也是类似。
) M  L) V$ }: H9 u6 R
* D6 ^# }) \$ h- J: B1 G* t现在主要是,谁告诉我们MAC和SN的地址?3 }! M2 {/ x6 C2 k( P9 V
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, A" q' @3 t# T5 P* G一直想找到运程修改MAC和SN的办法,苦于无解啊

3 k9 e; _) \' g. j源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( v, K' _" f# R. L" K* j* L8 \  r/ ?% q  x* N
修改的代码早有了。到今天不会编译。
; j# V! R& k! b4 |需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " \% D. E, \4 ]# Z6 R. j: z
  2. #include <malloc.h>
    " i, A; a1 y# x, j+ T& M) I1 w0 |
  3. #include <sys/types.h>6 }7 B& Q+ X1 c, d& h, l
  4. #include <sys/stat.h>  r5 ?) C3 r- k4 w- c! Y
  5. #include <sys/ioctl.h>" ~) G" _& }) c
  6. #include <stdio.h>
    * h  E7 z3 J9 {# E" N2 O, ]
  7. #include <string.h>
    ' O" x, S& _1 ]$ f+ p4 [7 T

  8. 5 Q6 G# G+ o. Y3 X8 \5 Y( J) P+ R
  9. typedef struct {
    1 R2 a: k1 Y' o2 r. p7 i. Z
  10.         unsigned int        e2prom_cmd_sub_addr;
    0 [- n5 K3 \% K( t3 I
  11.         unsigned int        sub_addr_count;3 e' o3 t& ~2 ^5 K5 V/ y
  12.         unsigned char*        e2prom_cmd_data;
    % X7 x- W2 h1 b) o+ P
  13.         unsigned int        data_count;
    : ^1 a  B. T) R
  14. } e2prom_s_cmd;+ ?  b" O! u  W5 {  e. A

  15. " l' B) ~/ G; u' Q" i: c9 ]
  16. #define E2PROM_CMD_READ 1, c3 P3 `/ ?, O; U( P0 U
  17. #define E2PROM_CMD_WRITE 26 t2 X4 f* J" J) u. i! I* `7 _
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    : E% P; u! F6 M$ e5 f

  19. ) ?# `2 r) z1 b" w$ c, i
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 v# N. O, ^) v
  21. {
    + ^% ?# A6 N' n# Q4 n/ u4 z
  22.         int fd, ret;# g8 [% ^% h* A& A' F; f7 P
  23.         e2prom_s_cmd arg;
    8 \6 u9 [, m0 U$ U
  24.         unsigned char buf[0x18];
    4 O) X2 [  p& ^4 b
  25. " ~8 V  F1 P4 R3 s/ ^) v
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 L1 x: Q' o/ W6 N. W( a0 c' P/ ?
  27.         if (fd  < 0) {
    - c) t4 U; U' M2 g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      o7 G1 J9 v9 g& }
  29.                 return -1;
    # n( n, x  J0 [; U; X
  30.         }
      ^' Q% x6 W* S$ g- D5 D/ S
  31.         arg.sub_addr_count      = 2;- r3 Q" s  E( c6 A
  32.         arg.data_count          = 0x18;, J3 a; s, h  y% l6 ]8 A5 J6 D. D
  33.         arg.e2prom_cmd_sub_addr = 0x290;; w8 h8 t* p  a. w
  34.         arg.e2prom_cmd_data     = buf;) z( T: L( l# a# _% ^1 v
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);" t& T& p1 O4 Q& b& ]  I7 r
  36.         if (ret != 0) {
    & S& ~, c6 b$ B7 Y, g' D) F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);9 {% a8 q- L4 n8 r/ }5 Q4 a
  38.                 return -1;
    % d3 Z# I# A/ L* G* H+ ~+ b8 n6 A
  39.         }
    ; N( k) X9 O) X9 ?; C
  40.         memcpy(mac, buf, 6);
    2 U& n6 q: L0 d5 i/ y; S' s
  41.         memcpy(stbid, &buf[6], 18);
    . ~% ^$ E6 B; O& V! |
  42.         stbid[18] = '\0';) V: `4 C! l5 d5 ?$ \
  43. # l9 q3 `* ]; }6 V! r& b5 K
  44.         return 0;2 L- n7 E/ R9 x- X# f6 B/ E
  45. }8 ^, p9 c- T- ?( R' A
  46. 1 g+ z. b7 h0 s% u* c# M3 {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / J8 r8 K( @# p3 D& F* Z
  48. {
    1 {+ y6 B. D8 o3 e
  49.         int fd, ret;. d# I* {7 U9 A8 }! z
  50.         e2prom_s_cmd arg;
    % ]; H: S; G9 B* }( a" ]( p
  51.         unsigned char buf[0x18];! H$ K3 k( l; f
  52. , R  s) S" D8 |
  53.         memcpy(buf, mac, 6);0 @! W; a7 H# Z
  54.         memcpy(&buf[6], stbid, 18);0 R0 T. a/ U* m' {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 h& ]) }; R  I
  56.         if (fd  < 0) {
    ) Z  I0 u: C/ |  D8 p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 x" w9 ?& l6 M( H$ T1 B! b
  58.                 return -1;
    9 v4 ?8 [! l2 E8 z% m
  59.         }% i& {3 u" d" ?5 X
  60.         arg.sub_addr_count      = 2;9 u6 s7 V9 a9 N7 [* E5 l9 B
  61.         arg.data_count          = 0x18;" q, ~. u; D* ?1 Q" b- K; t3 H
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    6 ]! l1 P7 g' G
  63.         arg.e2prom_cmd_data     = buf;
    - M: d9 r5 Y  G
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);& ]' C* A# H7 N; V& P0 S, _
  65.         if (ret != 0) {
    " E1 U% Y+ z/ {* g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    8 k* `. U. c; ]  ~. J
  67.                 return -1;& g& e2 x9 b2 U' [# ]
  68.         }5 T( {( k& g% a; n2 j8 v6 }

  69. 0 r1 A( H& ?+ C9 ?+ @
  70.         return 0;( Y3 u, M: i# Y- |7 H6 j- v: a
  71. }
    4 X8 B1 Y% U# I0 y/ k
  72. & Y' [$ U1 N3 G
  73. int main()
    7 g" C7 ^+ ?" u; d" j
  74. {
    " S# M7 Q( u9 J. @
  75.         char c;
    ' \. X- h2 @2 ?6 w9 A+ a2 n
  76.         int i, macs[6];" t, X. {' _4 a' B" b
  77.         unsigned char mac[6];
    ( ?1 z' w* f% E7 e, u8 L
  78.         unsigned char stbid[256];( `5 b# W2 D: L" I
  79. , W& G; j! E& I& U* I! ^& R" C
  80.         if (readparam(mac, stbid) < 0), z3 x3 ]) w% v) t. J& V
  81.                 return 1;
    ' i1 A7 T# W2 O5 W8 u+ l

  82. ! q6 K; V8 P# m/ x& R0 _
  83.         printf("Current parameters: \n");0 O1 A, g0 q% I$ ~8 N7 V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & k. Y$ j# N3 e5 q6 r9 V( _- w
  85.         printf("  STBID: %s\n", stbid);0 p) y8 C+ ]7 Z$ o+ f: k
  86.        
    ) j2 Q6 R. e. |7 u" x+ K* H0 _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    1 U6 U+ A/ [' O
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( u8 J- |! {. X5 t
  89.                 printf("Input MAC error\n");
    : s, U( r/ u& i6 O* @6 ~8 z' r
  90.                 return 1;) t! ^5 l6 Y* X  O& }, Q
  91.         }
    . \. `( A+ O; F
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * T/ T; z' b. e2 H0 H
  93.         printf("\nPlease input new STBID: ");8 N% x7 C4 D$ |. l: m' U& d
  94.         scanf("%s", stbid);2 A0 }5 C- [+ r$ U5 p3 E
  95.         if (strlen(stbid) != 18) {
    6 m5 q' z1 ]" [  ]  f/ @
  96.                 printf("Invalid stbid\n");
    1 d% D" J, a8 r  F1 ^
  97.                 return 1;
    ! q) E/ X' o  T( M* e6 Y
  98.         }
    0 v, u; n2 V* }
  99.         printf("\nNew parameters: \n");
    % {. G6 H6 O) l% Y1 }# e/ S6 W1 F
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( M  |9 G* s4 [& U
  101.         printf("  STBID: %s\n", stbid);/ {1 o: T: ]1 O' M

  102. : o/ W0 {. z# `9 Q/ r, C
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( K6 `  X0 T- A, _9 I
  104.         for (;;) {
    . b  U2 [1 m9 D6 M1 n
  105.                 c = getchar();4 M$ ?/ \6 g- i/ x1 `9 {) w$ H
  106.                 if (c == 'y' || c == 'Y')
    # Q$ u+ M. l( P: Y5 R& s$ z2 U
  107.                         break;
    . g! S2 V8 ?) Q# ~
  108.                 if (c == 'n' || c == 'N') {
    & r) q9 }2 I8 P) H
  109.                         printf("\nAborted.\n");; k  s# T9 C' m9 y5 O  f
  110.                         return 1;
    2 B0 E: D) C$ e  S8 ]
  111.                 }' h4 G/ Q# a. U% X/ r
  112.         }
    * g# Q+ ^9 l$ m5 a$ _1 g
  113.         if (writeparam(mac, stbid) == 0)
    ! C' P9 r& E8 q
  114.                 printf("Parameters changed.\n");* j) t8 B* o# G! `7 M0 B8 T8 T5 S( u

  115. ' H3 Z5 I8 n) q. A3 Y: D' X) @7 y
  116.         return 0;
    / S7 a9 a! q$ f: \  V
  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
: ^% F$ q1 T7 S* W0 G' D/ {: |* n在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' ~" t9 \- M7 N2 e7 `# E* K
你用的编译命令行格式是什么?
! |4 ~; b( G; `/ b" V
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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