查看: 16655|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 p, r# D/ f; Y% a
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig7 Z7 G/ x2 m' q4 ]8 X- N
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
" ^6 R: p2 G8 B1 m2 _usage: himr <address> <value>. sample: himr 0x80040000 0x0
; R7 H5 d0 i1 M1 S- |+ E/ @% j3 \1 {
# C+ u- y" J5 D( h. [2 S
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- D3 p1 o  `8 ^+ T1 D1 p  W9 o2 z! E% N0 y" [
补充内容 (2012-3-8 09:42):, a) {1 W( i9 s. X
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ \0 }& p# P) |( }( e
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
& H1 P  `9 |1 m2 t. ?6 h4 c# T3 |
himr <address> <value>. sample: himr 0x80040000 0x0
  B; Q/ z. t6 a. {5 O& a, Z" d( `; |2 m; l
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 L, v) u% O( h% U$ g. A+ e, ihimr 0x80040000 0x00
' Y) Z) ^( m' h; z( [- Z; s4 \himr 0x80040001 0x11
* U+ f( X. d+ t9 R6 W' }himr 0x80040002 0x22
( R) `; h) b0 vhimr 0x80040003 0x337 }. ~1 I4 ]& u
himr 0x80040004 0x44$ j3 l+ x+ R9 r- P& e
himr 0x80040005 0x55! v- V- Y2 ^( n% U* D2 f4 F

( ?; u+ @! w: }- B2 rSN也是类似。
  R2 B1 u/ n1 Q6 ^& O( g2 j! e2 l2 u& [% H& x
现在主要是,谁告诉我们MAC和SN的地址?
+ |9 J/ T1 t' x  Y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : C8 H0 m1 ^1 q, I3 _2 U
一直想找到运程修改MAC和SN的办法,苦于无解啊
* B& B- |7 M4 b) R
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) T  `, E6 O) z7 {2 {, p& ~- h
3 A$ n! s6 j% t. \. Z
修改的代码早有了。到今天不会编译。/ \' F1 l- K8 e4 E0 @/ _
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % F& R+ A/ F8 s
  2. #include <malloc.h>! @# L/ j2 Q% P8 H8 C) u5 W
  3. #include <sys/types.h>" [! T% ^6 O: ~
  4. #include <sys/stat.h>
    6 c( F- e+ q3 ]
  5. #include <sys/ioctl.h>; B, s4 F2 z$ f: y# O7 }/ s- b/ K) U
  6. #include <stdio.h>
    - h* p( `# b" y% o, H
  7. #include <string.h>
    - V# O+ |6 g$ C, b1 E6 T

  8. 4 X/ n. o3 d! k
  9. typedef struct {0 x4 ]+ P" x) u3 b8 F0 ?9 o
  10.         unsigned int        e2prom_cmd_sub_addr;, b9 C3 t$ \, d& q) E+ \  v
  11.         unsigned int        sub_addr_count;
    3 V  E5 P# O/ h
  12.         unsigned char*        e2prom_cmd_data;
    8 X- O. C( \5 h% ^
  13.         unsigned int        data_count;( c% W; E* ]4 y" [: b3 G' D
  14. } e2prom_s_cmd;9 H- U$ f  W1 Y" R4 f5 J3 E" n3 B* k

  15. - P# t  f+ t5 V1 w, U3 P3 g( ?4 U! Q) J
  16. #define E2PROM_CMD_READ 16 h4 [. [- R4 z. Z  M
  17. #define E2PROM_CMD_WRITE 2( _8 F/ o' w$ _# f0 i3 y8 A( H( ^) X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    9 L; M  ^% o% O4 I. f" y! T
  19. 9 E) X3 b) i) U8 T4 m% B
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 x* w! l: J- ~
  21. {
    . W5 h+ g8 O' C) A1 Y! M! {8 t7 G
  22.         int fd, ret;
    * @& F$ `$ \4 m9 ]' k
  23.         e2prom_s_cmd arg;
    4 B% Y7 ?8 [6 e& ?
  24.         unsigned char buf[0x18];: ^' {+ m0 G9 r& p" ^' f

  25. 0 j: ?; j5 R0 {1 F
  26.         fd = open(E2PROM_DEVICE, O_RDWR);* P* e  e" t0 z; i5 M6 m1 d" H
  27.         if (fd  < 0) {" \& J8 J3 [- t3 O
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  S8 L! _' {. C
  29.                 return -1;$ [- j7 T+ K1 z' P
  30.         }  D9 L) X/ H: L2 h: F( _0 y* a
  31.         arg.sub_addr_count      = 2;
    % W  C, o4 l' {. @7 S! k! D, Y
  32.         arg.data_count          = 0x18;
    2 W# h, B; K9 e
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ! d/ p# s4 X) n; ^2 G/ |4 X
  34.         arg.e2prom_cmd_data     = buf;7 K% Z. V* E# ~; H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);/ D3 w$ ?" r+ Z' Z8 L. U
  36.         if (ret != 0) {' m9 y& a# P4 l; x4 B1 e0 c5 [! m
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 Y7 L1 r+ M, P# |* B
  38.                 return -1;! L, d( \5 ^9 U
  39.         }  p% e4 N# Q. D' M; W5 Y
  40.         memcpy(mac, buf, 6);8 I# z6 e7 N# `4 F/ y; @
  41.         memcpy(stbid, &buf[6], 18);( n" `. X0 H# m( s" ~9 s7 W3 p
  42.         stbid[18] = '\0';- |5 E. k2 D4 v  K3 |

  43. , K  c. t0 _: P' ]
  44.         return 0;
    6 p0 A, r2 }4 O; b& p
  45. }" z' o3 y' \4 m' f

  46. 7 i: g) N- e. @& G3 D+ G+ O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 o- C, N  \& p1 K+ J  Q
  48. {
    % v) n6 s8 k4 ]
  49.         int fd, ret;" s) Z6 y; A' S; ]; ^
  50.         e2prom_s_cmd arg;5 Q' \! \1 _1 Y  @3 `& n, _8 [6 n
  51.         unsigned char buf[0x18];5 R/ Y8 m; ~: W

  52.   C2 d3 r8 N# Z0 B: ~, o( i$ E$ o; _
  53.         memcpy(buf, mac, 6);
    9 |# R. A( S4 S$ D
  54.         memcpy(&buf[6], stbid, 18);: j: M. s  U; D8 _" K
  55.         fd = open(E2PROM_DEVICE, O_RDWR);8 T7 H' ^: Q7 O, m+ P- n9 c1 t
  56.         if (fd  < 0) {8 X, g. @4 ]% s2 Z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + X4 G% D/ C( y7 J4 b6 x" l5 R4 n
  58.                 return -1;4 w- H4 B% J/ G9 O  ~; S
  59.         }6 S0 g* {! T5 u, c0 ~9 E
  60.         arg.sub_addr_count      = 2;
    " f1 @" S" P: K9 W& ~5 I
  61.         arg.data_count          = 0x18;
    8 J5 P2 C7 \! `5 O
  62.         arg.e2prom_cmd_sub_addr = 0x290;7 s! `. W6 o; |2 u5 F9 c1 M
  63.         arg.e2prom_cmd_data     = buf;" l0 W& D2 n! c& z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 o4 Y& p( Y. v9 C) ]
  65.         if (ret != 0) {
    ; a3 T- X, W+ c4 h* c7 g. t+ g- x
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    + [6 u% x' T9 Z# ^' W$ p# `, ]) V
  67.                 return -1;
    8 R) g) i  Q( `: B( j9 ]
  68.         }
    " V* Y4 W% A" u1 o: \

  69. + R" }* c& ^. C# F; b" U
  70.         return 0;! p% o1 k0 _. q1 o* j3 u9 M% U% n" Z! \
  71. }
    9 [. Q. Y. `" i  ]2 q3 }/ O
  72. ) M! z' X* S+ b8 N
  73. int main()
    $ q3 a5 D+ X' H2 N$ Y/ s) o
  74. {
    3 u7 X* n" C5 ~: M
  75.         char c;
    4 @" y7 E9 ]5 h7 `$ k) B
  76.         int i, macs[6];5 i3 W! t7 H& q
  77.         unsigned char mac[6];( A9 ~1 r( x2 I2 o4 M
  78.         unsigned char stbid[256];
    4 d1 j2 F  Q3 V( K$ g
  79. + h  H4 L1 k6 d* J' v% M% v& R. \8 ^/ q
  80.         if (readparam(mac, stbid) < 0)
    , ~, ]- t$ u& s# u( H$ ]
  81.                 return 1;
    ( b, o1 [/ F+ z- S9 B8 w
  82. : ^% T% x5 r1 c. b- w& ~- h
  83.         printf("Current parameters: \n");) p  q" I2 g$ j+ z1 o1 d' [. C4 p
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: p, q  ?0 U5 `- p( b& n/ U- c/ |
  85.         printf("  STBID: %s\n", stbid);5 H( E# _# q7 r5 o. `1 o
  86.         ! ~7 s0 i9 i) d1 K, N2 N. ^4 O- Z6 N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + A# g2 e/ a3 r
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 `/ L$ N. K! P  U6 n$ M( O, u+ F
  89.                 printf("Input MAC error\n");
    3 y9 Z7 }# s, X1 X5 f& O7 e8 U
  90.                 return 1;
    0 ?! d( [7 @8 F' t  W# ~
  91.         }0 s: S8 a; M9 `7 x: n5 T! I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 v! `, C" h* O9 Z1 M" b
  93.         printf("\nPlease input new STBID: ");% a, ?( z; n0 h, n8 G9 Q
  94.         scanf("%s", stbid);
    ( I" v' ]2 [8 x; t. o( K
  95.         if (strlen(stbid) != 18) {' o  M; [3 n4 ~* G
  96.                 printf("Invalid stbid\n");. ^; E8 W# v2 `+ k2 Y9 H" R
  97.                 return 1;/ h7 |- `$ F; ~6 {# A
  98.         }
    4 ^* `) ~* x! a3 S
  99.         printf("\nNew parameters: \n");
    5 y9 j& Y5 V, I8 a! e4 j! X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# w/ \0 Y# f% b; n
  101.         printf("  STBID: %s\n", stbid);
    7 @6 P% K9 C# O4 w

  102. - v9 \# }9 F3 K2 u% s2 h) D$ A
  103.         printf("\nDo you want to change paramemters? (y/N) ");* F% S& V) M0 W( b
  104.         for (;;) {, h* ~+ R0 y4 a2 v3 L: p0 g
  105.                 c = getchar();
    % U  U, k3 a7 r" Y0 p
  106.                 if (c == 'y' || c == 'Y')
    # q, T2 i# ~9 V. d% N
  107.                         break;# }+ E+ [$ Q; m
  108.                 if (c == 'n' || c == 'N') {
    : h* c* l1 l  O6 N' m/ Z; ]& p
  109.                         printf("\nAborted.\n");
    & M& G) k, L4 F+ B7 A, x
  110.                         return 1;
    # u8 T1 r7 \5 ^4 C- A
  111.                 }
    2 l/ C) t3 m5 G. f
  112.         }
    6 D, b$ u; U6 v. A4 y1 L+ ?
  113.         if (writeparam(mac, stbid) == 0)
    ! a# u; h3 C, f  F8 i$ [
  114.                 printf("Parameters changed.\n");7 k( p# ~4 T5 W% q
  115. - E4 }6 K  H7 E7 {
  116.         return 0;
    ( e4 g* ]. B% U2 ]5 _  k& u
  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 6 J3 ]/ e/ p$ q3 k* q% `
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 c/ s& U) q/ e5 G7 V2 O  g
你用的编译命令行格式是什么?
- p  c, u0 B" G3 T& Y9 G( m6 M6 ^
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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