查看: 16631|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr( E& {% I4 [' {; L  @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    + ?& L& q, t" D% u9 l. p
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, Y0 t. F+ L% E+ ?usage: himr <address> <value>. sample: himr 0x80040000 0x0" e8 x+ U* M5 {: y; l+ E' t. z

' O2 K: n7 v: s2 I2 ?
! c: x# Y. ]0 c- z+ x. r不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?8 h. `* E/ s0 F
. L- r+ h$ h9 s3 l
补充内容 (2012-3-8 09:42):& H! v9 g  B) [( q: Z/ u3 h$ r) C- ^' O
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( v9 b, ~# u" a, i* M
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
% X& n* m7 _& e1 f+ S, Y( v- R' g+ R
himr <address> <value>. sample: himr 0x80040000 0x01 A  [8 V" b8 X2 F0 p

4 S5 \7 i% S3 N: |& F6 C# d) C5 V9 S例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。4 J% l# @0 F. n
himr 0x80040000 0x003 [+ b/ e. _1 @3 s! T
himr 0x80040001 0x11
  x' ]! F# C# y- {7 g  Dhimr 0x80040002 0x22; V0 `, h2 q2 {: D$ B
himr 0x80040003 0x33( k7 ~. l( P2 Z( u& [7 k" B5 u
himr 0x80040004 0x44# F8 c( b; g. t$ F. {) n
himr 0x80040005 0x55
" q2 C0 C# k8 T) S# J" g
) j+ a; T) _: p1 g4 pSN也是类似。
. j( J( Z0 {4 f" l, Y: v5 {6 |/ H7 l/ h6 M2 a" f9 F$ M* M, K1 q
现在主要是,谁告诉我们MAC和SN的地址?- R; z9 d7 t' u* T
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 + o- i8 ]+ y( d' U. G) ?5 p. O
一直想找到运程修改MAC和SN的办法,苦于无解啊
" \) e: h  Z( O  g: l' h
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 5 \  r" p3 s4 m. J

! r; a9 W7 w6 w. J) l修改的代码早有了。到今天不会编译。
; m# Q, M4 |1 \+ ^/ Z$ W需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " M. Y2 R% _2 ]- x) A
  2. #include <malloc.h>
    2 J& W0 e. v2 U0 V
  3. #include <sys/types.h>% W1 o! K3 C. V' r
  4. #include <sys/stat.h>
    . |  f) I# w' K* Q, L' s
  5. #include <sys/ioctl.h>
    # O5 H; ~6 E; N) o4 v; V+ G' }5 }
  6. #include <stdio.h>
    % c/ a1 z  J( J) {+ i3 U
  7. #include <string.h>
    $ E8 W+ o; [, f0 @8 M- ?8 Y! ^
  8. 1 f- L$ C- y! M6 e
  9. typedef struct {
    ! G% {) {) w, Q; z- G1 u! j( U
  10.         unsigned int        e2prom_cmd_sub_addr;
    3 t) B' K8 J' Q( ~7 @3 `- `
  11.         unsigned int        sub_addr_count;# }" F7 P' z, Z& L. O' W* B; H. `
  12.         unsigned char*        e2prom_cmd_data;) v! j1 k: Z. M: e6 P; Q2 M/ @
  13.         unsigned int        data_count;
    ; f1 Y2 o3 ^" Z3 m; y! X# A
  14. } e2prom_s_cmd;/ o. F0 _5 ]! O. @
  15.   B4 [* M, N6 F3 \; Z9 ]4 h+ Z. ^
  16. #define E2PROM_CMD_READ 1
    $ @. l) T" L- N, q+ w7 |
  17. #define E2PROM_CMD_WRITE 2
    ! A& o$ H, Y% T; D( _
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 o8 u) I5 P4 K# o' d6 R
  19. ; E# q# r& O2 Z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 }- y' M7 V6 D& n1 E( H
  21. {
    3 K7 g4 g% Q: r! A, p% l; G% D+ f( V
  22.         int fd, ret;" o. l' o/ F9 P  O5 q
  23.         e2prom_s_cmd arg;
    % {, d1 \1 V' C. t/ D$ E
  24.         unsigned char buf[0x18];3 h* o! S; v) U. l& r  z) Q
  25. ( l, Y/ O- ]: h6 k# p% V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 ]+ q" n7 j8 ^0 d) `
  27.         if (fd  < 0) {4 ^+ R+ o% V% @& m/ e; j
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 U* B& ^1 g; b5 I0 D. I3 U& n
  29.                 return -1;
    - x$ L! ~* H' H$ l
  30.         }
    # y  {" n! B5 `* r" i7 K
  31.         arg.sub_addr_count      = 2;
    ! a& L- ]' D1 L4 @
  32.         arg.data_count          = 0x18;
    ; F6 l5 ~( n# U9 t3 I) w9 }- V
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    . s% T+ x) m7 S8 I
  34.         arg.e2prom_cmd_data     = buf;7 }, Q2 V' S4 e% v. Q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - Q  l! n9 R. R1 v6 e* [# E4 Z' T
  36.         if (ret != 0) {' r# z$ t* q8 Z. ?
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 f$ d, d0 S* P  \
  38.                 return -1;
    9 M& P; q  a/ ^2 c; W9 O1 z" M) m
  39.         }# W2 }) T( B( J7 I, b* T) e: d
  40.         memcpy(mac, buf, 6);
    ! {/ M3 {6 v, Q! J: D: i4 h$ q
  41.         memcpy(stbid, &buf[6], 18);
    7 n' o! Y$ c/ f
  42.         stbid[18] = '\0';1 t! t# Z5 N3 F
  43. + O' |4 z4 ^* L2 R* I: i
  44.         return 0;6 p: g3 r/ {, G5 V, E
  45. }; F, L; J5 ?" I1 f8 Q# E

  46. * X* n) W  Q! U& X+ x* M
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( W% `7 c* K% v+ @
  48. {; p8 x. t, k9 b4 r) \
  49.         int fd, ret;0 a( k0 [! `, m( Y+ _8 O2 a1 f
  50.         e2prom_s_cmd arg;
    ' e7 i5 X( Z8 d2 p
  51.         unsigned char buf[0x18];
    8 T7 u1 e& g2 I6 g7 `( A0 j9 O

  52. 2 i# J# E; |6 e) i- O; L* X+ u* B
  53.         memcpy(buf, mac, 6);$ L2 I! V2 p9 \7 q) v1 ~7 i
  54.         memcpy(&buf[6], stbid, 18);5 c+ e3 |8 u( ]- W- n2 L7 W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 N' J! z$ D* R9 U" @2 y4 \6 L0 f
  56.         if (fd  < 0) {& ~7 T' P4 C# l6 p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 |% ~0 B, o. f2 J9 Y. X
  58.                 return -1;, k  _, Q# l" c2 J0 \3 o" x) G
  59.         }% x7 O1 Y, {. X) Z0 Y3 T
  60.         arg.sub_addr_count      = 2;$ u' l0 `; {# s; C# W
  61.         arg.data_count          = 0x18;
    ! K0 ^5 K  X0 D* X# b4 a$ i* j: u
  62.         arg.e2prom_cmd_sub_addr = 0x290;  f; c0 c* }0 |3 c# w
  63.         arg.e2prom_cmd_data     = buf;
    ' w7 F$ L% B* w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);( Q! y2 L1 I0 L8 U9 h
  65.         if (ret != 0) {* p# ^' a2 y/ @( J: s% f
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    - ]: W) V$ b$ G& _3 n. m, q* h
  67.                 return -1;
    ; S. p( s7 t# p3 s
  68.         }
    & \: D! }1 ]7 R& K

  69. 0 F1 }! F$ l9 G6 u5 U1 C/ S
  70.         return 0;: g; H. h) U+ D" R& k
  71. }6 o" p4 W( `4 _5 l, i' }+ T" B

  72. * o7 B/ ^$ K/ {+ F- J/ k: ^, B
  73. int main()
    ; B) e* [  z- Z/ P4 Z
  74. {
    , k  B5 ?9 ^" N
  75.         char c;
    - D1 [$ M9 o. {9 a& d: k% t
  76.         int i, macs[6];
    0 D2 O* f% R8 ?$ `1 }
  77.         unsigned char mac[6];
    / j$ E6 m! t9 r2 ^: Y5 {; n) r
  78.         unsigned char stbid[256];" m2 e' }& w+ t- m6 N
  79. . V7 U! H2 ^4 ~. l5 S
  80.         if (readparam(mac, stbid) < 0)
    : E# \! n' Q/ Z! L9 |% [7 z( t) \
  81.                 return 1;" w. f5 T+ \7 x" W# C
  82. 1 T# l' Z) S0 i" v4 {
  83.         printf("Current parameters: \n");
    6 b" Z' ^! N. V4 a  d% Z- o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * @9 O+ F8 {9 I( i  C: `
  85.         printf("  STBID: %s\n", stbid);
    * m. o1 f% }% L+ q
  86.        
    ; n# _6 ?- ~/ [7 I4 ?
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( q' q* u3 ~* G/ D! {4 K0 N
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 h9 C/ F9 d8 I: ^, [8 M6 S- L
  89.                 printf("Input MAC error\n");
    3 ~; N! S& E) [' T. Q4 b) s0 [& g
  90.                 return 1;4 _3 e+ u1 H2 E# e4 J
  91.         }
    1 |7 j& E5 x/ b9 w. p* A
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 `" d  z5 \( G. m& d
  93.         printf("\nPlease input new STBID: ");1 [8 `" F6 e$ k3 m- E
  94.         scanf("%s", stbid);
    ! U5 a5 \6 @; Q4 z
  95.         if (strlen(stbid) != 18) {% u; W, L7 _' n% x) I; {
  96.                 printf("Invalid stbid\n");
    2 z; k. U2 k# t, {
  97.                 return 1;: v& U. k+ H2 @+ V7 P0 Z
  98.         }  N7 t6 ~- E% I# M% x, [; c2 R7 }6 U
  99.         printf("\nNew parameters: \n");
    6 |2 q2 @9 X3 `; o
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# u( d5 h6 d6 x9 v
  101.         printf("  STBID: %s\n", stbid);6 G$ u. g( u) G

  102. ) j9 d. z, ]) E* V4 q5 Y& \
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 q8 {$ O3 y! i. A, m. g
  104.         for (;;) {
    + A8 ]/ ]9 N+ v) T
  105.                 c = getchar();
    1 T6 P3 z9 Y- I- d5 I6 t
  106.                 if (c == 'y' || c == 'Y')0 r+ r: m4 H+ j9 _
  107.                         break;
    8 A: D& {4 F/ v1 S
  108.                 if (c == 'n' || c == 'N') {' c% h( b3 g8 e, `. V, I; m
  109.                         printf("\nAborted.\n");) g5 Y9 l9 V% \, c
  110.                         return 1;
    7 N) q3 [6 B8 }8 i
  111.                 }
    - I* _4 ]- O; G* N  ~, K" O
  112.         }
    : [" }: E6 B! v5 \4 s: I  D) z$ V
  113.         if (writeparam(mac, stbid) == 0)
    $ {2 b7 J  f! d- d
  114.                 printf("Parameters changed.\n");+ J8 G7 X6 n- Y6 w! {- I

  115. " `* h" O+ q$ M" @7 c5 v
  116.         return 0;
    ' ~3 s; y+ j/ b+ ^& M  J
  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 / c: u% Z7 V, L4 B+ [
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) c$ Z5 M, \$ N" v你用的编译命令行格式是什么?1 V$ S+ h- P9 q+ w+ |
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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