查看: 16921|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr( a- e, z- @1 x6 d- f+ u1 Q5 p$ b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - \: D( L5 v$ |
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 \; x6 L! r4 V7 X& q
usage: himr <address> <value>. sample: himr 0x80040000 0x00 v7 F4 Y) q9 }0 ?2 B1 S

2 O- e/ N9 g3 b& k2 B& I' G/ L  q0 Q. g9 a- _
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?8 S$ i( d3 ^% r* U
! _# |. E" k" S4 t8 L
补充内容 (2012-3-8 09:42):# I4 |0 v* g4 y. R1 v2 u
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ L" l2 x1 v2 _$ S# R% Q% \
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
4 ]0 i1 S3 o# j8 |" t% i; p- j3 E9 J
himr <address> <value>. sample: himr 0x80040000 0x0& o, Z# `; B5 d$ `5 d; X3 v- f) E

2 A$ @$ I' g# A: p- x5 w! Y4 g例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# k' V7 u& @/ _6 m
himr 0x80040000 0x00
* n9 i& t. r' s/ A  u$ r9 `/ Uhimr 0x80040001 0x11
$ ?# f; p& O/ P6 x& j. U; e+ whimr 0x80040002 0x22
2 M2 w, H, F" t0 C! Uhimr 0x80040003 0x33, p/ s. y7 m: p4 H2 l; e( J7 t
himr 0x80040004 0x44
# U" k" a3 U  E) m, K! p% ahimr 0x80040005 0x55: U: t, |; D* x9 w; ?

  p9 {# c/ r: L4 z% j- USN也是类似。( p' }! S' F0 y" H) @
* \4 W% U1 b. |) A
现在主要是,谁告诉我们MAC和SN的地址?
* @$ e& _* j: |9 B
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
# o( x' _( W* N9 V) H一直想找到运程修改MAC和SN的办法,苦于无解啊

" T7 _0 P' w# s& j  b2 K: }2 }源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
  Y# }2 f1 {4 N$ Z, {" x6 U2 I" G. `: @0 N* e3 J- ?2 c
修改的代码早有了。到今天不会编译。
$ E" W9 W0 P7 W1 j需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 d# u9 j7 ^* D5 h: Q
  2. #include <malloc.h>
    3 _0 l7 N" z5 Q' E3 F
  3. #include <sys/types.h>7 w' i. U; U( r$ j2 K7 e! |
  4. #include <sys/stat.h>" H9 P& b, \8 A
  5. #include <sys/ioctl.h>. _5 v: {) I. @' [' w5 o* S, k
  6. #include <stdio.h>
    - \( L1 B, o+ b! R3 I( K
  7. #include <string.h>: T$ r9 V9 q4 W9 K; L  d, [

  8. - o5 C, n4 C6 f7 u0 x
  9. typedef struct {
    5 w, |& \, P& s5 u: e1 z& i: G
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 ^) @: w8 T: b  C7 A
  11.         unsigned int        sub_addr_count;
    ) g. Y, R9 h: A! H5 ^# K& f0 b! N
  12.         unsigned char*        e2prom_cmd_data;" M& y! A" L  }, {
  13.         unsigned int        data_count;% {# l( U6 k1 o( S" q
  14. } e2prom_s_cmd;) E" Y; w& v+ D! P  `) V
  15. ) O  I6 T$ `8 V# O9 I
  16. #define E2PROM_CMD_READ 1
    & o+ Q3 a4 ~+ P- G2 Z/ {
  17. #define E2PROM_CMD_WRITE 2
    * f& F6 F% o; `, }4 C; k1 |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 a9 C- f0 @1 x

  19. , [- J# @  c2 ^% o0 l
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    * h2 K2 m' L& @: N( V
  21. {
    . E, z( e( C, x/ x! W+ l
  22.         int fd, ret;0 j6 ]0 F/ i- `& F) s
  23.         e2prom_s_cmd arg;1 p9 S3 l; v# l9 a1 F2 J- T2 g6 Y, Z
  24.         unsigned char buf[0x18];
    ; F+ H' H+ w. A8 B" S* k

  25. ; @1 D/ g' l' Z4 I. a! u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 e' i4 n) a* U! y: o/ H; i$ k
  27.         if (fd  < 0) {" U8 |7 L5 e1 d  v! o
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 p% u1 V- v  P7 Y4 N' a: F; K
  29.                 return -1;
      l1 m3 K/ N1 x9 `$ b
  30.         }
    % X/ x2 R: b6 Z1 a" E# v# C
  31.         arg.sub_addr_count      = 2;
    6 ?2 j/ z/ X* N; N
  32.         arg.data_count          = 0x18;
    6 d& h8 e" H4 s0 O$ f- _
  33.         arg.e2prom_cmd_sub_addr = 0x290;% M* [( X% i0 W' ?7 P
  34.         arg.e2prom_cmd_data     = buf;8 s% @; e0 ?6 T( E) V
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # c4 m8 |6 j0 j( s( P5 }
  36.         if (ret != 0) {
    3 R3 a( H* M8 A4 S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- X6 v2 b- b, }7 B. n- l5 C6 D2 p
  38.                 return -1;
    * V6 s  w% a& ?
  39.         }0 s8 [8 B* R5 x9 ?" w# s
  40.         memcpy(mac, buf, 6);6 m* k! Y5 o$ I" S# j/ ~
  41.         memcpy(stbid, &buf[6], 18);8 y- ^& s; v  L3 U2 D4 x/ i6 L
  42.         stbid[18] = '\0';) @; m& ?# ~+ ]: M3 ?' R: P5 w% X( O
  43. % p' x6 m, ]* A1 [! Z4 v
  44.         return 0;
    4 D% C0 S) V3 T/ o6 j8 w
  45. }
    1 D% g( E: M# A+ H3 d( T) h  i

  46. " E5 g9 o# H4 U
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 `+ ]) I" [) D, ]* M; s1 }$ n0 z& L% q
  48. {
    , i! L1 k- c" f' }* Y& O/ h
  49.         int fd, ret;
    , F! l5 {$ v: h9 U+ @# V4 l
  50.         e2prom_s_cmd arg;
      `3 _7 O. E2 o. f$ @! q" n
  51.         unsigned char buf[0x18];& ]. X, b0 p) L1 S( K0 |: P5 ?
  52. 9 H/ s; L; j+ A6 K" t! E8 j( `
  53.         memcpy(buf, mac, 6);1 k# X3 B, r0 u5 O6 e
  54.         memcpy(&buf[6], stbid, 18);0 J6 q; B4 ]9 x- X' X9 U# `
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 r/ X# i4 R) ]) X
  56.         if (fd  < 0) {
      J8 S0 n( L# P; `$ }' S& g
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 x" X4 V- W7 v
  58.                 return -1;
    : n- r* C* M/ y) \; w' B; E
  59.         }
    * d% A- D1 y3 {* p
  60.         arg.sub_addr_count      = 2;
    2 {% F/ c; {; C
  61.         arg.data_count          = 0x18;: t1 @# U* F& I% h# s# z' b, o
  62.         arg.e2prom_cmd_sub_addr = 0x290;- e* W) {) V: b1 Q" K* D
  63.         arg.e2prom_cmd_data     = buf;* R+ Z3 U2 P5 Y6 S+ U3 f5 u7 T" O! ]
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);6 x  A, a! ~; k( m9 X; B3 I
  65.         if (ret != 0) {- V' B2 N8 U0 g( e: k8 C5 F- L2 ~3 {/ T
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# l7 f4 R+ t0 q( o2 d1 _; N
  67.                 return -1;
    7 W% A7 Y# x% Z% P
  68.         }2 X  u; E2 h5 ?% c) j& `2 y
  69. ( M2 v; Q: {3 r) F
  70.         return 0;/ g9 l% ]6 D% n1 y0 a/ I
  71. }1 j8 D' \" w  J; N* ^

  72. & I( L6 |9 S9 X: S% @$ [) r
  73. int main()
    & ^) K: o: B8 O, G; Z& L: ]' F- o
  74. {
    # O% Y" s4 ^. |0 n/ m! e/ y* v
  75.         char c;2 p+ C" {' X1 ^6 g8 W
  76.         int i, macs[6];
    ( h( z! S' E6 k5 q( z  Y3 t
  77.         unsigned char mac[6];
      w3 B! T) ~4 s( U/ h/ ^/ [
  78.         unsigned char stbid[256];2 G3 x$ m  |$ |) _
  79.   O: Q9 y2 J8 f5 n) Z4 j# x
  80.         if (readparam(mac, stbid) < 0); @; q0 [* x3 p
  81.                 return 1;5 S; I" ?+ U& a$ O) ~
  82. : c. L$ E( K6 n6 u
  83.         printf("Current parameters: \n");
    ! y0 j/ [; {& ^* ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 a2 f, q+ j  s8 b/ P9 N0 N) Q& y
  85.         printf("  STBID: %s\n", stbid);1 p" N* @+ y2 F4 c; h% _
  86.        
    2 w" {4 s4 d1 d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");4 U% d: X+ ^- h) A6 q3 O: L& p9 T
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * V- n2 @! s* b% s- I4 \
  89.                 printf("Input MAC error\n");1 a" T5 I1 V3 M: |2 k) F
  90.                 return 1;+ u. }  X" b) k- \6 ~9 n% @
  91.         }% a% J, q$ N- E) H* d7 Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 |; c9 h* A0 N
  93.         printf("\nPlease input new STBID: ");  s5 n2 \" q: K, @# ~
  94.         scanf("%s", stbid);; }1 a8 G, i6 |& H6 J
  95.         if (strlen(stbid) != 18) {
    ' S* C) C, b7 N! ~6 D; C1 N* Z
  96.                 printf("Invalid stbid\n");
    + V% C+ L$ R4 z' \9 y% m2 F& [/ S$ S
  97.                 return 1;& l! L5 l$ H' w
  98.         }2 ]3 O# U2 }* e/ b0 u
  99.         printf("\nNew parameters: \n");8 n1 _& R% E  v$ k% N* x: C/ }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : c' C* F# H# {  E# N+ w+ d- F
  101.         printf("  STBID: %s\n", stbid);
    0 Z/ x' W; n& R6 j% f
  102. . S0 F+ m/ k6 j
  103.         printf("\nDo you want to change paramemters? (y/N) ");" M3 F2 w/ ~% S; v- _- H+ a8 ?
  104.         for (;;) {* h; |' _$ g! Q9 ^% a
  105.                 c = getchar();
    2 r1 W$ x% f3 p0 f& R
  106.                 if (c == 'y' || c == 'Y')
    9 j9 e3 g9 T; G
  107.                         break;  o/ ]' k, c. I8 L, t* J
  108.                 if (c == 'n' || c == 'N') {, ~7 H* C/ q, f# M$ J! y0 Q
  109.                         printf("\nAborted.\n");
    : G! l  S$ j4 z
  110.                         return 1;
    9 h) H; f( `7 S% ~6 x# k
  111.                 }1 N* B9 J3 q+ \% b2 X2 R8 F
  112.         }( M" i. J5 x/ N( P2 {2 m
  113.         if (writeparam(mac, stbid) == 0) 8 h- y. }1 B2 E, s( ^- [
  114.                 printf("Parameters changed.\n");
      b4 f, u# U/ Z0 b; d, Y7 ]
  115. 5 J* _7 S2 a" h6 |
  116.         return 0;/ j& |" x) o& x5 I
  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
. j: G# z& E7 J在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
% R3 T0 ^+ |9 s, N
你用的编译命令行格式是什么?
# G4 D/ J  i* {, P
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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