查看: 16868|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * x' O- y( u, r+ {0 C* z7 y5 t5 V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : h) C6 |7 M' w9 j8 M) E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- \6 }1 U9 V% u
usage: himr <address> <value>. sample: himr 0x80040000 0x0
9 L/ W- D1 p- k/ s1 z1 }2 A# I2 [4 n3 o
7 D0 d2 N; O1 Q8 b
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 l# U* ~1 Q$ Z8 s5 s% L- S
2 P# A: y( q" W; ]3 w6 ?补充内容 (2012-3-8 09:42):0 b& P+ ?" h9 i" O( |
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数& g- @- m$ {. g! L
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
/ v4 U8 O1 p% K5 {
) a' {$ S) V7 L/ Yhimr <address> <value>. sample: himr 0x80040000 0x0
0 E, f7 [% u, H. K% L  t& p
$ j9 g2 b/ \, _% z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" @) {' I  ]7 O0 T; Q  Q
himr 0x80040000 0x003 S  M0 d7 C: D" H% A: b+ @8 v6 r
himr 0x80040001 0x116 d( j4 ]9 F' S4 g* I- ]7 H, ^
himr 0x80040002 0x22
& I8 j4 b6 H+ q' p4 H2 Khimr 0x80040003 0x33
7 S! x8 Z/ v! rhimr 0x80040004 0x44. z: j9 K; `$ R. j' d: e
himr 0x80040005 0x55
7 Y, b4 I* Z: \" D- ?' W  N% W' G. t  P% R
SN也是类似。
" G; C% F) u: H: l; \* Y2 x9 b( d' g2 `4 J9 R' V3 K/ l
现在主要是,谁告诉我们MAC和SN的地址?* Q. \: G' ^8 u$ m
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 8 r# H9 G4 \/ n: I2 d" m( y
一直想找到运程修改MAC和SN的办法,苦于无解啊

( i% N/ l* j4 e( _' Y/ g0 K源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / M1 F2 V6 [' A$ g2 P1 b' W

9 t+ g/ K+ h: L; x4 W" C) r修改的代码早有了。到今天不会编译。
% T$ H6 @+ d# p3 p5 `需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / n# W( L- W( i
  2. #include <malloc.h>  g, F5 o  i" E$ U) U2 \
  3. #include <sys/types.h>
      _( ~& n! s2 ?9 d
  4. #include <sys/stat.h>
    * J8 p+ G0 C1 g6 b; R
  5. #include <sys/ioctl.h>2 s9 N& m; H+ e% j+ a% a; `
  6. #include <stdio.h>1 V2 V: R3 l" k6 t( H0 C! k$ l* u
  7. #include <string.h>
    8 P% o) `( c: K7 Q

  8. ! ^- f& D! X# _+ A
  9. typedef struct {  |4 I, O; v. \0 N; W0 ^
  10.         unsigned int        e2prom_cmd_sub_addr;
    . U6 K5 ]) ^6 @% `. l
  11.         unsigned int        sub_addr_count;
    6 C. M2 i+ V! B# w: n3 W. ~
  12.         unsigned char*        e2prom_cmd_data;
    % s  N/ t/ M+ m0 b
  13.         unsigned int        data_count;
    & e3 R' F2 t  s* K, s: H6 _. Z
  14. } e2prom_s_cmd;9 d( n" F1 i& c9 {
  15. % p9 r! \. [) R
  16. #define E2PROM_CMD_READ 1
    ) p  S8 @( v4 Y
  17. #define E2PROM_CMD_WRITE 2
    : G/ k' Z/ g6 ]: l  O' \0 y$ ?
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ X0 S) ^/ Z& W: J/ R
  19. 8 ~! \4 l* c! r9 Y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)' _6 J' w" n0 r/ n( k
  21. {
    # f9 c$ e% {5 P  ^; q
  22.         int fd, ret;
    + i) v0 i- s+ Y7 f, g4 |) C
  23.         e2prom_s_cmd arg;
    0 X3 s7 F& w8 }* I" l$ t
  24.         unsigned char buf[0x18];
    / p, Z* T9 H! X( i5 L, c/ e! S

  25. : W* m5 z: |: \6 ]8 m! y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);, I" m. |  W+ D0 b4 {; i
  27.         if (fd  < 0) {
    6 f1 T4 Y; o8 N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 P/ N. y( T8 p  g
  29.                 return -1;
    / W& i4 ]+ C* @8 L# E% C% D
  30.         }
    2 U# ^( U5 u  @/ j- m9 T( y( u8 b
  31.         arg.sub_addr_count      = 2;
    1 L/ L% O4 Z3 C9 l" r
  32.         arg.data_count          = 0x18;
    7 t& Q* K) p; U; Z3 N% P
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 r+ \. Y) m6 R$ Y, ]; Y# w0 E
  34.         arg.e2prom_cmd_data     = buf;9 ^3 x4 Y' o5 U3 @; c7 b
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    . q7 w* M; D9 D% f$ Z3 s
  36.         if (ret != 0) {
    9 l% F6 w# V4 R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    5 R: k1 r+ \( e! c  R
  38.                 return -1;
    / r2 B& T% @) c3 \" I0 i- Z( F
  39.         }2 e# X, e& a! V/ x0 Q
  40.         memcpy(mac, buf, 6);: r$ j2 z8 i1 z4 @( v  V
  41.         memcpy(stbid, &buf[6], 18);
    & u$ g$ U# R/ Q# q1 _
  42.         stbid[18] = '\0';
    ; E/ a: t% N8 d$ d1 W
  43. ! o* r1 p$ C* d/ v3 T0 p5 N
  44.         return 0;" U' w7 |$ q5 c# X' e
  45. }6 c0 F+ O9 V* b" N+ z( t
  46. 9 O! \2 b/ z- t
  47. static int writeparam(unsigned char *mac, unsigned char *stbid). v0 a$ `2 `* J" o
  48. {
    1 Z. o. D) B6 M6 c% @- G
  49.         int fd, ret;
    7 F7 Q( a6 V% L2 t( F2 R
  50.         e2prom_s_cmd arg;
    # ]( W. M- l: k5 _& {* z1 a
  51.         unsigned char buf[0x18];: W8 p( Q  `0 `) ?

  52. ; P1 w9 ?! O0 L
  53.         memcpy(buf, mac, 6);- [; H2 _3 \# y5 o" J$ H
  54.         memcpy(&buf[6], stbid, 18);& C% |( N% [1 A0 S
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 q/ F' K0 Z' n, t1 Z
  56.         if (fd  < 0) {: T6 }$ A6 |+ Q8 V  }- f
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# R0 j& _% s" k* d9 u2 u; H- H0 F1 w
  58.                 return -1;
    ( [) v2 F- T' ^
  59.         }
    ! \4 R" c3 M2 p! W  `* n, ]
  60.         arg.sub_addr_count      = 2;" f( Y: d2 w& W, g2 N
  61.         arg.data_count          = 0x18;
    # v5 G6 i& J" {# P1 {+ E4 k
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 x* f% @* f. _- a* V8 H- D
  63.         arg.e2prom_cmd_data     = buf;3 l- j! `; E$ A' F9 w) M; G
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; A6 X8 I% ?( A) C" y
  65.         if (ret != 0) {2 r; ]' l% b$ |0 {( i. g/ Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # j1 U: P! N: u
  67.                 return -1;
    6 |9 u, k  ~3 \! E. s0 i' W" C
  68.         }0 `7 B) y6 `8 k' _5 p
  69. 5 M- ]% Z7 X2 |* S6 J
  70.         return 0;/ R( p" n2 j# ~0 E) M8 T
  71. }4 x" W! y8 o0 P- m) w* `0 f
  72. , S$ o/ p4 ?, I' Y8 Y$ A* p/ l
  73. int main()1 Z! q8 }+ d( q$ b' q' M& W2 E
  74. {
    ) E) B3 I6 {, D2 S* H/ S8 P
  75.         char c;7 R6 ?3 l* A4 @2 x  l7 {
  76.         int i, macs[6];' B2 }* u* M! j7 f* E0 k
  77.         unsigned char mac[6];, k" v' F) D7 V; F5 D) h( C
  78.         unsigned char stbid[256];9 S- b2 ~6 o3 B4 m
  79. - f$ T2 G9 T+ o
  80.         if (readparam(mac, stbid) < 0)* z  X* ^" F& ?! D8 i8 w6 Z
  81.                 return 1;
    + B1 Y6 i0 i/ C: t0 e: X8 a' g2 N: f' X
  82.   }* W- a! N% J. f. Z) Y6 ~
  83.         printf("Current parameters: \n");, j+ F! f# }5 ^" m: T1 C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! E! Z& Y0 H, D+ Q( P% `+ @
  85.         printf("  STBID: %s\n", stbid);. ?) }- ^/ Z, G! H6 {( h. E
  86.        
    ' T" w' e( g7 h: L& R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    % p# _6 E: ^( y$ w- [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - {4 K  R# w9 R, y2 y% y2 l  V6 P' i
  89.                 printf("Input MAC error\n");
    ' {4 X! y& j9 p  K1 B% `
  90.                 return 1;4 u) ]! H) o" o+ D, n, L* y
  91.         }
    2 X$ g8 B9 x5 u
  92.         for (i=0; i<6; i++)mac[i] = macs[i];* U) q) p$ E) V" V
  93.         printf("\nPlease input new STBID: ");
    $ a( v$ A! j! @$ F" v
  94.         scanf("%s", stbid);$ M( l, m6 p/ X; k( M  T
  95.         if (strlen(stbid) != 18) {, J8 L6 b+ ?9 X& f) y4 k
  96.                 printf("Invalid stbid\n");
    & `. }+ {% O2 Y/ v! n( N. C. n7 ?1 D3 l
  97.                 return 1;, @8 B5 D. B, f: c% l
  98.         }9 E2 x' F- D  }4 }
  99.         printf("\nNew parameters: \n");- L" T7 Z2 t- {* F8 @5 B; \9 C$ z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ x  Z% B4 Z0 V: {+ H/ x, m3 I
  101.         printf("  STBID: %s\n", stbid);6 O* H1 E* ?) \. {# t

  102. - D/ y( D0 f( s8 }
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 t5 _% M! g7 q. V  a
  104.         for (;;) {& S6 e8 @0 Z; O& P
  105.                 c = getchar();
    ! e' s# x+ `' v+ b! r. F8 g
  106.                 if (c == 'y' || c == 'Y')
    5 w8 U2 C2 B1 M1 q. i; K! \3 K' a& P6 @
  107.                         break;& W+ u# k* h: P+ A
  108.                 if (c == 'n' || c == 'N') {& i# U* }+ }* B8 y: w$ p0 `+ h8 ^
  109.                         printf("\nAborted.\n");
    * `8 F1 @9 X; {( |" V# t% a+ J
  110.                         return 1;5 T. [7 A- s4 O5 c
  111.                 }3 q3 [% u) l$ E" Y: q6 r
  112.         }# f( L4 X5 i% F: e
  113.         if (writeparam(mac, stbid) == 0)
    6 y7 j# E9 b3 C
  114.                 printf("Parameters changed.\n");* i5 [6 \0 ?; x8 ?2 a% ^! ^0 m

  115. & d& x9 d9 `3 {+ U, O* x
  116.         return 0;: Q) c* H9 X- q1 h
  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 f6 u6 D# }; l
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: h. O% F5 g/ n# |( E+ h# Q你用的编译命令行格式是什么?0 z- N* J' q& S- J3 K" x
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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