查看: 17489|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr: s! A, ?! e9 i" J! }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    3 B; w' p! r; ^6 q5 j" _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
4 s+ j, l0 B7 S8 W0 Q& U& o" Pusage: himr <address> <value>. sample: himr 0x80040000 0x0, u3 u. ~* g. f, k. j. O
2 s- F1 P% q) q- L% A* X4 p3 `: B9 Q) q' ?

; h/ ^% t0 M1 q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
5 X" D$ Z: v& z8 S7 O* V( R8 d4 ~. Q: k8 u* b/ \% W$ S& Z
补充内容 (2012-3-8 09:42):( r, ]9 g- P* E( S% \0 y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! c  ~3 ?. t  u. _! b# i" R- }& V这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。0 G" x+ ^/ f* D1 O: F6 Q" N5 P
9 a8 t. [* y" J
himr <address> <value>. sample: himr 0x80040000 0x0" ^  |  g; Z1 Z

9 ~2 M0 s+ P' o+ P6 V/ L1 V例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 @" {0 f" B; u) Y; Q) ehimr 0x80040000 0x00" {  |3 x, Y7 W3 N
himr 0x80040001 0x113 z+ {( e! [0 t0 T) T
himr 0x80040002 0x22$ |: ~/ T3 [" S: \/ [
himr 0x80040003 0x33
, x* ]9 U% g4 [) h0 {6 e2 khimr 0x80040004 0x44
, T% j( v, R6 ^5 [3 P  Q  H8 h5 Nhimr 0x80040005 0x55* S, Z: i0 ]1 B) `1 u6 ~; s4 t* k9 y
8 ~/ I2 v: ^1 g# n. Z! @& w6 T. [
SN也是类似。
8 P* _+ L9 y8 R) a  b- A, Q% Q
现在主要是,谁告诉我们MAC和SN的地址?
! ^  P% R# N% [
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 V% a4 \7 F# E- c# Z
一直想找到运程修改MAC和SN的办法,苦于无解啊

! W' k/ y1 y3 @, K1 A源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 v- U' d* S: ~4 ?5 t, C
/ a5 S& h# T5 r) l7 O! o0 r8 `修改的代码早有了。到今天不会编译。1 |1 B/ d" g) B- e: S" l+ X& A( m/ f5 W
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    5 Y# O% G! X+ O7 t( I, o" m( G
  2. #include <malloc.h>! ^0 y* E, A: {$ M; Z5 Y1 d4 Y
  3. #include <sys/types.h>
    ) `' n. J$ p  }$ k4 |  {4 [
  4. #include <sys/stat.h>
    0 i4 y# M0 V" Z3 f
  5. #include <sys/ioctl.h>$ u  h8 t, G- r) j4 l2 B- {2 E
  6. #include <stdio.h>
    5 m* W" K9 }/ n' M, _3 F$ w
  7. #include <string.h>
    ) c% h) `; C! ~  k8 O
  8. , {  V. C$ _# \2 S7 l( T
  9. typedef struct {
    : O- c1 X1 T4 V$ y4 B; |
  10.         unsigned int        e2prom_cmd_sub_addr;& F8 q( [7 X* @
  11.         unsigned int        sub_addr_count;1 l+ a* Q, ^# \3 `: T' F
  12.         unsigned char*        e2prom_cmd_data;
    , k3 g/ i. s: v( P  F/ Q7 W; \
  13.         unsigned int        data_count;: N; j7 m2 M* W
  14. } e2prom_s_cmd;+ U# @. ?  z& J
  15. 4 Y- p0 p4 Y4 ]  }6 g
  16. #define E2PROM_CMD_READ 1. G; r( _" x' c% m0 |
  17. #define E2PROM_CMD_WRITE 2
    # E2 k, d) `2 t/ f
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / n. F. P. {# p0 p! ^
  19. $ @! J9 h& p; J2 w: }
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 @- W  R+ B4 ~2 i; z  p
  21. {
    7 A' A- [. j* h
  22.         int fd, ret;
    2 J3 C5 ]+ t5 N' X4 n. O, j
  23.         e2prom_s_cmd arg;" J! Q( j4 A3 N) H
  24.         unsigned char buf[0x18];
      S$ g8 R- ]( I* W! x0 T- T

  25. ( w, T; r& T- L$ C+ N
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 D7 X, w0 A# C9 a# O3 I- u. Z
  27.         if (fd  < 0) {6 y4 ]9 n( O( ?/ y9 i6 S( H7 l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - u! u% b4 U7 b* h" ?
  29.                 return -1;# J5 A& R$ Y  t) p# P) A5 T" m
  30.         }, Y1 m6 m1 R. M. f( Z0 d- J
  31.         arg.sub_addr_count      = 2;
    8 T3 F' a" g+ j; C
  32.         arg.data_count          = 0x18;2 ^0 |2 U& j1 i* o, H- p
  33.         arg.e2prom_cmd_sub_addr = 0x290;% A" f3 c% r+ ~1 ?! T" b
  34.         arg.e2prom_cmd_data     = buf;
    $ }; L6 [7 N' N+ C9 J9 A) Y( [+ p
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 J/ F- g: r* {6 c. U
  36.         if (ret != 0) {
    3 g) s% G: E# z4 t, W1 Q4 _# G
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ d4 G- H6 `' V
  38.                 return -1;7 ]8 M7 l9 g  {- l' G( K. ^
  39.         }: {4 S/ [, N. N4 I
  40.         memcpy(mac, buf, 6);
    9 S6 A6 H6 J" A8 U! \6 C/ q& q
  41.         memcpy(stbid, &buf[6], 18);
    0 G% B9 }/ P& K# @9 x
  42.         stbid[18] = '\0';
    . m+ e1 g0 M! c6 A0 F
  43. 0 u+ t9 O1 {8 o. s& Y+ J3 K
  44.         return 0;
    7 O9 \+ I9 l( P- `6 H# g
  45. }8 U3 B# @; o1 o$ J

  46.   s7 |3 |: h3 I
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 K3 d$ S% {; \3 D  [8 \
  48. {% q) d7 Q, ^& E+ i# i/ {; F4 w
  49.         int fd, ret;& B9 ~, ^% A# v
  50.         e2prom_s_cmd arg;
    6 F/ |* M9 \* N/ G+ S
  51.         unsigned char buf[0x18];5 ^' }& }4 k" h) Q% |& p: \
  52. $ P* r* t3 y. n+ x6 X( l
  53.         memcpy(buf, mac, 6);
      q: I4 ~+ w8 E) x5 a' p( d  C
  54.         memcpy(&buf[6], stbid, 18);
    / p$ Y& i; Q& Z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  H. j( v4 [3 H2 ^0 Z. F
  56.         if (fd  < 0) {* j5 W$ v: u0 y$ N9 z! g0 M$ ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 A8 ~) X1 C/ r2 C3 d+ n( ]$ o
  58.                 return -1;
    * O" N# w1 m2 y
  59.         }
    2 _( b" V! i, v! |& X4 u* J
  60.         arg.sub_addr_count      = 2;
    / l' U5 c% f6 W, v9 R9 S
  61.         arg.data_count          = 0x18;
    , Z7 A& k3 c$ [# ]' Z1 S- p
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 X7 C' b' t+ z5 J! d4 f9 F  ^
  63.         arg.e2prom_cmd_data     = buf;
    * q8 z( _' A6 Y1 K/ T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 U- B& l8 w& ^2 }
  65.         if (ret != 0) {! N' u1 \2 p& O: i, I0 {0 {2 u* Y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 I& {" @8 L! q# g* H
  67.                 return -1;
    & m0 U0 s8 b. B
  68.         }" U" i, n( i; ]4 G( [, e: h2 u
  69. - x9 s- Z$ [( x6 ?7 i! n
  70.         return 0;
    + }: E5 V4 x7 }
  71. }
    % m# F0 y6 M5 Z0 [$ c0 I$ E* [

  72. 0 L2 E- T3 _6 n- p% K* `& T
  73. int main()+ C; L! A: B/ J( R% c% P' f5 v
  74. {
    2 X, }8 ?; H3 D* h1 T
  75.         char c;; P* t" S  l5 l+ k
  76.         int i, macs[6];2 ^0 Z% u) z4 R. J, {, V
  77.         unsigned char mac[6];
    + Z( c, M7 p$ z# b* i. p3 a
  78.         unsigned char stbid[256];
    7 ]! P2 Q) k8 s1 {6 H/ X6 ]# h$ ?

  79. 1 ]$ c' s* ?6 [' }
  80.         if (readparam(mac, stbid) < 0)
    : I" T$ [0 ]  [# ?2 J$ K5 ?: s
  81.                 return 1;
    7 v" v# U5 C; G% z
  82. & X, I: k+ n& f& m( y
  83.         printf("Current parameters: \n");
    # k* Y) q9 ^4 s: d" l# r6 C, }
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . J5 X) {3 T% d+ u) K! y8 |8 Z0 l
  85.         printf("  STBID: %s\n", stbid);
    % r9 a* J2 A( A0 l$ `
  86.        
    1 h& G; r/ s! K7 @
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");' x6 Y0 B5 A. f2 t" g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ' }2 C; n$ i2 K7 l' ]3 O
  89.                 printf("Input MAC error\n");" d& ^0 N" L8 k( D* l
  90.                 return 1;
    3 {1 B2 X: g' F' p% N
  91.         }9 P8 v- P0 X: Y2 `/ A1 r6 O6 n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];+ @: N  O; E! m$ G
  93.         printf("\nPlease input new STBID: ");; R+ E) C, ~! s4 U# |
  94.         scanf("%s", stbid);: {; E6 D9 v* x2 H+ F# T$ u0 j
  95.         if (strlen(stbid) != 18) {
    ( U& |- b# q2 u$ ~$ b2 m2 n
  96.                 printf("Invalid stbid\n");
    ) B* G" _5 q- V1 ~4 M8 n9 l% Y
  97.                 return 1;. Y' [( R9 X+ E& m4 u1 [
  98.         }
    5 r0 Z' a$ _3 q5 Z  c
  99.         printf("\nNew parameters: \n");
    ) E" q. U- s! L# X# A' f9 [) C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ Z7 q! c7 |% V' y2 Y4 w
  101.         printf("  STBID: %s\n", stbid);" _% J( Z6 r5 W  s3 Y9 n: o, R: m
  102. 3 k2 b( K# h6 R; e2 ?
  103.         printf("\nDo you want to change paramemters? (y/N) ");  C. A6 [: F2 c' b( o8 c5 r
  104.         for (;;) {
    , d& L; R* U: |; `/ @6 n
  105.                 c = getchar();
    4 W* e9 t4 v, |+ X4 O7 U. l* |" p
  106.                 if (c == 'y' || c == 'Y')
    . O1 _" r6 U/ _5 B. G' u6 i
  107.                         break;
    / @) [$ L& V6 j" ^  x: ~9 S  i5 u
  108.                 if (c == 'n' || c == 'N') {, ?: I. J! C: R8 k* u7 M, C" Q, J
  109.                         printf("\nAborted.\n");
    ) F, @# ^- a* b: |5 w6 L
  110.                         return 1;
    4 l' @- z3 P9 F& G3 i. \$ E4 J
  111.                 }$ h' q: W# S$ V0 V
  112.         }6 A* T$ m" J! y3 a9 g4 o
  113.         if (writeparam(mac, stbid) == 0) $ r8 ]: c( M4 Z  Q, W
  114.                 printf("Parameters changed.\n");
    4 e% h% |4 _( O3 k

  115. ' \" I9 d! u7 L* I* K$ M7 _
  116.         return 0;
    ( F7 W* I6 e: v9 U; s" o/ m3 ?
  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 : H) y& z" a6 g1 Q6 _5 R
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
- I$ A' h4 y! V9 v- v
你用的编译命令行格式是什么?
* ^1 Z+ F4 C) o
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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