查看: 16945|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , V0 y4 M! k' ?1 V* s/ D7 T' O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - X: n8 e" L$ _( Y; p, i, I
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:& \' W+ E. V5 U: ]
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  {  H( _; x0 K3 [1 ?+ u: n/ E) N( W+ U6 W+ z5 Z/ V
# n* v# C: I3 U: s; [) W6 N4 N) m
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?3 X/ I& U6 W" h% K- x

9 n9 w7 P9 r. E9 d* ]4 @6 r; K1 J8 b补充内容 (2012-3-8 09:42):* C0 e+ R9 A2 N- e8 @
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数) J6 `' c7 H4 P8 ^" j" x3 h" F
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
7 }6 h8 e; w7 n6 |1 i- L
: [) ^# Q1 t. `% d! Q- _himr <address> <value>. sample: himr 0x80040000 0x0
/ ~! f' d& ?5 `, s- v
! Z" A' k, }' F4 s1 \  J" A例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 o4 ?7 Z( ^" i( U6 v- vhimr 0x80040000 0x00
2 a  ~& c5 @/ L- i$ U/ S& D  Whimr 0x80040001 0x11. t" t. c9 w* f4 r% z+ ^
himr 0x80040002 0x22
4 q$ ?* I" z4 Q& W8 F8 W& hhimr 0x80040003 0x33
4 Y+ E0 W# {# qhimr 0x80040004 0x44
9 N% c. V% G2 R1 I( V! yhimr 0x80040005 0x55
6 n1 B6 \+ t4 E3 c- S
" N0 @  ?( i, i4 i$ b# s8 nSN也是类似。
  n* h: u, ?( X2 V' G  W! T, Y4 J0 @% ^6 k$ I4 }, L
现在主要是,谁告诉我们MAC和SN的地址?5 y5 |5 V: s3 [1 |+ }
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
' S( [  P* \! L2 Q一直想找到运程修改MAC和SN的办法,苦于无解啊
! H, R  P/ p8 P; H# L
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! D2 ?5 l8 B$ w: H8 N9 t6 H. J
8 i: p3 J7 k5 F6 h- ~3 k
修改的代码早有了。到今天不会编译。/ k, \( T$ y% J- _9 w9 U
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 M( t1 T$ {  @, z! _+ `- C) W/ B
  2. #include <malloc.h>
    . H/ Y2 d- ^1 j9 s
  3. #include <sys/types.h>
    6 Z! h1 R- [1 l* }$ J7 e3 j" D
  4. #include <sys/stat.h>
    0 s' y9 J& r- ^  D( G5 {
  5. #include <sys/ioctl.h>
      M. g" K. ?$ w& @3 d
  6. #include <stdio.h>
      ]9 v$ f. \. m: O" t' h1 x# V
  7. #include <string.h>5 h6 V' w. d- t4 O

  8. ) `: J, i: a3 K* b8 G, t
  9. typedef struct {
    9 Z; `- E5 F( r( [0 N
  10.         unsigned int        e2prom_cmd_sub_addr;
    * G3 I. T# v1 e+ q
  11.         unsigned int        sub_addr_count;2 M# p2 G0 G2 [% N! _) T
  12.         unsigned char*        e2prom_cmd_data;! A1 ^! ~6 ?' }( ?5 u2 B+ v5 V
  13.         unsigned int        data_count;
    . w5 z1 h# A! E# j
  14. } e2prom_s_cmd;
    : Y* X( Z9 I1 O5 Q

  15. / o4 l5 U! ^. a. H/ @! i* K9 l
  16. #define E2PROM_CMD_READ 1
    / S- h+ E5 E+ B
  17. #define E2PROM_CMD_WRITE 2" |8 N" y$ E# Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"1 ^, y0 g2 B! f5 [4 G

  19. " N% T7 m1 ~# I4 H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
      @0 J9 T. ~0 f, i% M
  21. {6 h5 P0 j# f+ @
  22.         int fd, ret;
    6 U$ L1 K0 V6 k- E
  23.         e2prom_s_cmd arg;. u7 e3 S4 P0 [) D' a7 [* J  g
  24.         unsigned char buf[0x18];# ?6 N  m& L  j- Q' O- g& j% ~
  25.   m  Q8 z* O- q7 v( D2 z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , M& p1 a7 b1 T% z
  27.         if (fd  < 0) {, s4 p1 j& A2 X, w5 i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);" Z5 t. h+ {3 q" ]- x* X. {1 d3 C5 J# j
  29.                 return -1;' k) _$ M) w7 i$ E( n/ j
  30.         }: w1 b* m+ o+ D# c( @2 U. f8 ]
  31.         arg.sub_addr_count      = 2;
    # E/ O+ J% o! y3 D$ e9 `) P
  32.         arg.data_count          = 0x18;4 M1 U; e! [; a2 _9 Z. _
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 v# l7 W3 l! Z2 D8 F4 f" a. K2 i
  34.         arg.e2prom_cmd_data     = buf;0 ?0 v! b; ~7 a" c: ]  W3 Y. _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: r4 W5 V  H8 }, V
  36.         if (ret != 0) {
    * j% M; y6 X5 ?4 C- K
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);3 `" |# m2 l  g1 K& Q5 [
  38.                 return -1;
    $ o" S# q- Y8 K- w
  39.         }* ^5 g3 \6 S4 h  n4 E& z: F; R
  40.         memcpy(mac, buf, 6);6 l$ O& ~! u# i% [' L" _1 n4 `& B
  41.         memcpy(stbid, &buf[6], 18);
    5 F" D7 F" l: t" S" K, T# Z6 F
  42.         stbid[18] = '\0';+ L2 o' E, d+ w

  43. / m1 ~( w1 z* g& _$ R$ K6 b8 J
  44.         return 0;$ d9 v" g5 R' v9 U& J$ U
  45. }
    % D4 i* ^2 ^8 {5 ]" b* s+ v

  46. % o- N$ G+ y; i$ ~
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) Q- Q; u; }0 o8 f$ E
  48. {8 @; _+ ]8 A1 s3 I
  49.         int fd, ret;" _: w1 d8 z: N1 z
  50.         e2prom_s_cmd arg;$ ]% ?) G& W" V, Z7 V' d+ z7 Y
  51.         unsigned char buf[0x18];
    3 a( a% Q% G6 Y! B% y. Q
  52. % f; E$ l8 _8 n
  53.         memcpy(buf, mac, 6);7 D: B5 e! P3 T% D: d# q% t$ s
  54.         memcpy(&buf[6], stbid, 18);
      S2 f) q# ^8 {( ^$ f. i
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 ^  {+ Z" A. U" N: }* t
  56.         if (fd  < 0) {( s# W3 d8 k/ ?5 I; f7 N1 q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, @, k  c! [  s6 U& t4 B; B
  58.                 return -1;
    ' R' M4 u; F7 v! F# c
  59.         }! h/ S7 Z, m8 S$ R% g8 X
  60.         arg.sub_addr_count      = 2;
    ! L" l" y' b* u+ Y- H4 I
  61.         arg.data_count          = 0x18;
    & `" a, A8 j! ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;" F' o  U1 t- l3 F/ ?8 E1 i. M
  63.         arg.e2prom_cmd_data     = buf;
    & n2 L( E/ W- t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 ^7 `1 e& H# [! H- r1 `% H
  65.         if (ret != 0) {! ?5 J0 V# K& a& W# {1 y' l4 F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 t8 k2 N9 D! n! V
  67.                 return -1;
    ' w) g3 W0 S) a9 }, {
  68.         }
    - W0 ^9 y: q9 I% r9 h- P1 O
  69. ; d' d8 J: _( b; T2 q
  70.         return 0;
    1 Q- C8 I6 ~& Z5 Z" [+ b
  71. }
    / T7 k0 }0 N5 s4 ?" J8 V9 U
  72. 8 _4 O5 D; @) X+ g6 v
  73. int main()
    . `# q5 T5 ?& r) y
  74. {  y5 s% _8 @6 |* e" l# p) T3 r1 V
  75.         char c;$ o3 _, E& @& `0 p, K& v) S. R
  76.         int i, macs[6];- W! [5 ]0 Z6 ?9 O6 m, {$ Z
  77.         unsigned char mac[6];
      s* H# [) }% q
  78.         unsigned char stbid[256];
    . f0 r* L! H: f; _
  79. 4 y  C( B3 |3 K+ F. n
  80.         if (readparam(mac, stbid) < 0), E  [0 F5 U' p. _+ B4 p* b
  81.                 return 1;' h9 D8 F  t2 K8 b# h
  82. : M  K  Q( A7 a( L% l5 v" S
  83.         printf("Current parameters: \n");+ s6 u" |* y& t9 g& L& F. j$ v7 D+ o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 U' |3 f& D9 y7 b
  85.         printf("  STBID: %s\n", stbid);# B1 b1 w- x; o8 |0 K1 J" y5 _# [2 u+ @' \
  86.        
    5 T$ X) T- V- A, b8 x/ J6 m, \4 z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 [9 T/ B+ v( s: t( |' G" w* ^  h
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {* y$ F% M( d1 r0 i
  89.                 printf("Input MAC error\n");
    + ~) \# h: F; \2 }( S7 Q
  90.                 return 1;6 [- }  m, Z+ P) c& [1 a
  91.         }3 Y5 L: p- `1 B2 D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " e$ Y3 l) k0 A' L2 O" c/ `& e
  93.         printf("\nPlease input new STBID: ");
    , b. a+ c) P. l$ l+ p3 Y4 P
  94.         scanf("%s", stbid);
    ' j0 N$ k4 y6 x. h. Y( |9 d: `. d
  95.         if (strlen(stbid) != 18) {
    8 A; _" u+ L' a! V- g) ]1 S
  96.                 printf("Invalid stbid\n");
    8 J3 D3 e  b9 _& [( y8 U
  97.                 return 1;
    ' c5 f" O3 |' H" z9 a
  98.         }
    # n% g& }# w7 z; V
  99.         printf("\nNew parameters: \n");$ l* ^0 _  |2 {* @) e/ k2 f
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 T) i4 E4 L; a: z7 [: g
  101.         printf("  STBID: %s\n", stbid);
    / A9 r/ S. w7 D+ `- U
  102. ' W9 D: k- Z4 P0 ]" h
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    2 D4 V. x9 X4 V: r. u, A
  104.         for (;;) {
    2 K  c1 H! d. Y7 o2 R' A, C
  105.                 c = getchar();
    ( _( g( g2 \" @
  106.                 if (c == 'y' || c == 'Y')' w, o1 x" b7 o/ M% G! t
  107.                         break;' V9 W' ~" R9 \, w. i
  108.                 if (c == 'n' || c == 'N') {% E1 ~1 Y1 Z" `: h; k, |7 c6 [
  109.                         printf("\nAborted.\n");( v# d9 o$ Y' M$ G+ |. h, x" O
  110.                         return 1;
    & Y8 N  k6 B  F! Y" K$ D8 e- c
  111.                 }
    $ L0 w9 x- n: t9 t: F
  112.         }
    % m/ t6 U# `" d/ t
  113.         if (writeparam(mac, stbid) == 0)
    5 T, ?1 N6 r6 p$ H1 s9 |
  114.                 printf("Parameters changed.\n");6 ]; h: ^- o' J% P5 o6 r. a4 V
  115.   _) i4 h, v8 L9 R& Q
  116.         return 0;
    5 _# H* n  A( j, t! 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 / P# ^. C  {8 c3 q4 z% @
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

; Y9 O! B" U, B7 w8 s你用的编译命令行格式是什么?6 p8 b  F7 X+ F/ E% v# Y' y
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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