找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15357|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! }8 [% Y( t, O$ P
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    3 Q/ m. r0 {/ Q8 _$ ]1 X( X2 E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:/ `' n6 ~+ W( T* P7 }, z5 }
usage: himr <address> <value>. sample: himr 0x80040000 0x0: x. s- L' N/ ]1 q3 z  D2 P% ]

8 I7 w. i, D; {% b( H% ^- N# ?" U9 p
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
5 [/ o6 ?" z  C  d
  c& w5 ^8 g  x补充内容 (2012-3-8 09:42):# r& g( G" f5 j1 n2 {- I
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, B. \5 D. S0 f! ?, O
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。) o( n: D* n, _1 E- ?: y

( v( i5 V: e% z  L  Mhimr <address> <value>. sample: himr 0x80040000 0x0% K. d9 u4 b6 @2 M+ I6 ?  c
; A7 t9 x9 A; Y
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
# N; S; T! O  Shimr 0x80040000 0x00
: e2 k$ O5 |  e) |himr 0x80040001 0x11
& b3 Y  T6 h' ]- x/ _+ E* P& J% b( Lhimr 0x80040002 0x223 b3 a8 R0 K7 C% r* d) R1 ~
himr 0x80040003 0x33
. B' a. Y0 E: s* j# G( ^himr 0x80040004 0x44
& C1 B% {! y$ b4 u  r: B9 U  u; }himr 0x80040005 0x55
0 d  B) A- w; Q5 c) d- F, A* ]
4 \5 V# V2 U1 {9 CSN也是类似。
- H0 q" L9 ~& Y: p( e1 f' c
+ n1 |' e; a: e( _5 D现在主要是,谁告诉我们MAC和SN的地址?
# ?; r6 ?$ Q$ [' |* Q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ; \% {6 W- {3 M+ h5 r( Y6 ~
一直想找到运程修改MAC和SN的办法,苦于无解啊
) @8 f' \! t3 s9 k6 E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 ?7 v* f! F/ V; z5 v% B! C
! U5 a3 P1 R" S. R5 I4 Z修改的代码早有了。到今天不会编译。& j6 T) {* ?5 S8 |
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , H9 e$ U, Q% X) w. [; Z
  2. #include <malloc.h>2 g& |7 q5 ]2 C
  3. #include <sys/types.h>
    3 D# k" N( |+ H+ M4 [3 I
  4. #include <sys/stat.h>
    6 T$ a1 ?$ j) T: b+ ^
  5. #include <sys/ioctl.h>
    & y/ y! p1 D) s( P- ~, v0 g7 d
  6. #include <stdio.h>
    2 m+ z! Q( p9 ~& K. c) I* D( v
  7. #include <string.h>
    * F9 l4 ~- r8 p& U

  8. 0 A6 W' l  h6 }( }  i1 I/ {0 W% v2 v
  9. typedef struct {
    - [% U/ D# S- |
  10.         unsigned int        e2prom_cmd_sub_addr;0 X- Y+ \* l. D! x' W8 ?! y. v5 n
  11.         unsigned int        sub_addr_count;9 }9 ~* P- _4 p
  12.         unsigned char*        e2prom_cmd_data;# O3 E- b1 w9 U4 _8 i; _
  13.         unsigned int        data_count;
    / W: \& c& }# t. i0 ]
  14. } e2prom_s_cmd;
    8 v/ H3 v+ L& j& _
  15. " X5 H' ~3 u4 @& k
  16. #define E2PROM_CMD_READ 1
    4 {+ b% }3 _, |+ v- f, ^
  17. #define E2PROM_CMD_WRITE 2$ z/ G1 [* b4 o7 K: _
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 G) d3 V- J" r( ^- H
  19. ( v- Z. y( c( @2 e
  20. static int readparam(unsigned char *mac, unsigned char *stbid): E7 G% S7 ^7 N4 j3 D. c
  21. {0 q! z, C+ p  M9 ^
  22.         int fd, ret;
    $ [" I$ O5 P& t4 `& U% m" {+ Y
  23.         e2prom_s_cmd arg;7 g. X$ @* c% G
  24.         unsigned char buf[0x18];2 N0 K" n" M, O. N: ~

  25. 6 U2 Z8 N8 }; a" A
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + H+ t6 v1 j1 }2 C* \
  27.         if (fd  < 0) {
    " s% K0 \1 _( ]0 b
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  k( [* f8 ?9 Y( \9 r/ @4 I3 G9 e% A
  29.                 return -1;, _& l' l$ z% G$ D; G
  30.         }
    6 n7 a- z( N( O3 d! N. n/ M3 I7 R
  31.         arg.sub_addr_count      = 2;
    8 t, X8 \# |, e- y9 I3 O/ }# b
  32.         arg.data_count          = 0x18;
    / t3 ?/ ^* Z" l' x& t9 [
  33.         arg.e2prom_cmd_sub_addr = 0x290;% U0 i2 n; n5 y3 B
  34.         arg.e2prom_cmd_data     = buf;
    ( ~; x' I3 Q! l" d) g0 G% R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);" A6 F% x2 U* b4 o+ p
  36.         if (ret != 0) {2 p8 g5 {0 a; ]5 x& @
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # w3 O& _& M  `- p; f! s! e" y
  38.                 return -1;" \) A9 z1 n: }/ J
  39.         }
    9 b* B& ?4 r- d: Y
  40.         memcpy(mac, buf, 6);2 n" l1 N: k# i! n" _8 p# e* i
  41.         memcpy(stbid, &buf[6], 18);8 N3 ~6 i6 m: _: m9 ]3 l" f5 w3 T1 ?2 m
  42.         stbid[18] = '\0';5 g) F; }  I9 N2 H) m

  43. 5 H  X% K" ^* U& _  \9 P
  44.         return 0;
    " q0 i& e) x; z: G0 K
  45. }
    $ z. x/ n3 y. s; R/ B# d
  46. ; t7 f+ E" K6 `# h5 v; C
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 w4 o. V. P6 p, s
  48. {
    ! L( @$ i) w. y! J0 @, n
  49.         int fd, ret;1 E6 Q$ Z# x; d5 p
  50.         e2prom_s_cmd arg;
    3 x1 }+ I. K% J6 s  M0 i
  51.         unsigned char buf[0x18];
    9 o; K8 c, j0 T( n3 s+ J

  52. ( ?  j- u# m$ g/ ~8 x  a, Y
  53.         memcpy(buf, mac, 6);
    : X+ R) A+ d. B% `! A! Z3 ~
  54.         memcpy(&buf[6], stbid, 18);7 D- Y9 \' v" J$ c# c" R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ O) b. b1 R6 {, |& M' u
  56.         if (fd  < 0) {
    6 U3 r! N  N; V; n; c2 Z/ V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % R& ^- r- V1 M1 F
  58.                 return -1;9 s/ N/ d- e& W7 j; X& V' r
  59.         }
    9 O! `" b+ ]! ^
  60.         arg.sub_addr_count      = 2;
    ! v, q' L5 j8 x; \
  61.         arg.data_count          = 0x18;
    ! q! g" G9 \" e( W4 m9 c
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 v/ i* ^' L! \# j% v
  63.         arg.e2prom_cmd_data     = buf;
    1 U/ m3 w9 ?# u
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    : u. q. M4 ?; a
  65.         if (ret != 0) {& O! j6 m& g+ \/ Q, n& c- s% t7 L
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    , `8 P$ h5 T, E) a
  67.                 return -1;
    , Z- \# ]$ x$ g
  68.         }# p8 M; V5 U/ P% w0 J" p
  69. , q2 Q/ e" |( O3 {
  70.         return 0;3 {5 Q0 O; N8 _6 M" u: K3 i- k
  71. }
    , r5 X8 A" x" `( b5 K
  72. ! f& o, k, G6 y" @; ?0 |. M/ I
  73. int main()8 G6 }0 V: ]! y0 Q- W) R$ o
  74. {0 s9 c& [9 ~6 U0 W; _4 f0 F
  75.         char c;3 W8 x% ]* a. s3 N& P; V
  76.         int i, macs[6];5 H& w# u6 p8 P
  77.         unsigned char mac[6];( q, L! c# l2 J& K
  78.         unsigned char stbid[256];
    3 B$ Q% [8 I: ?7 m8 W  I

  79. 0 d3 S; \' s$ c
  80.         if (readparam(mac, stbid) < 0)
    . |. a* b6 m1 |( `8 J, ^
  81.                 return 1;
    & G! X& y; d9 o  |; R: Q; \, }

  82. 8 K3 U' n7 q" Q, y
  83.         printf("Current parameters: \n");
    ! _% N. C, \) n: A5 I
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & ^) G" Q2 b8 E8 M3 S
  85.         printf("  STBID: %s\n", stbid);' U/ ?0 s/ v7 k1 d/ ?
  86.        
    6 V6 H; Y$ E6 X3 C. s5 p
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      h$ }: e# C' `# ^& V& ~' s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {2 m1 w4 w2 A$ q& j
  89.                 printf("Input MAC error\n");
    $ K; D) a# `2 N1 G% P  F. c" q
  90.                 return 1;: j5 v8 q% _% E5 E
  91.         }
    # `- K! O& o9 u9 q3 c
  92.         for (i=0; i<6; i++)mac[i] = macs[i];/ q1 @2 @  y2 x6 c, L
  93.         printf("\nPlease input new STBID: ");% n2 g7 K/ {3 i) t$ j
  94.         scanf("%s", stbid);% |: B& ]: @0 t
  95.         if (strlen(stbid) != 18) {6 Z. \4 B) a! F# v2 d
  96.                 printf("Invalid stbid\n");4 ~5 O+ n/ {8 G, R0 h
  97.                 return 1;! z' z0 r/ @' t# U  Q6 ^
  98.         }
    . F3 ^/ D; ?; m* x7 ?. d
  99.         printf("\nNew parameters: \n");
    / I2 l4 I3 l/ A0 M. C! H4 @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 g$ c8 p) f2 @0 X% K
  101.         printf("  STBID: %s\n", stbid);/ O( k' c9 y1 q& X' v) v

  102. & |  p' K2 z0 k, T" z0 x0 j
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 k- D' B  n& X8 I+ }/ P0 t! `
  104.         for (;;) {- a9 i' j6 W4 O( _; C" s3 o5 Q3 l
  105.                 c = getchar();
      x, l, X& S/ r5 Y1 w8 C
  106.                 if (c == 'y' || c == 'Y')( S* _  {9 A- y: z, f) L6 j
  107.                         break;
    ! D! g; n  _( g
  108.                 if (c == 'n' || c == 'N') {' y9 Y  F) a# E% J: |! \
  109.                         printf("\nAborted.\n");# K4 H) y' s9 v
  110.                         return 1;* O' I9 L6 B" X3 N4 `% M0 ~- G
  111.                 }( Q& t$ i/ N  I
  112.         }* V  S; v( K: n$ R0 p
  113.         if (writeparam(mac, stbid) == 0) % y- W# T1 }  ]4 X3 z0 P& \7 ]
  114.                 printf("Parameters changed.\n");
    . C% m! W. f  N7 M
  115. 7 @$ ], `" J8 l' e" t* q% p4 p. V
  116.         return 0;1 d7 M8 ^$ y1 c) P2 m1 |6 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
* }4 _" _0 [$ a( T  n$ k在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
( T+ ]- E/ A- }: s* Z( `
你用的编译命令行格式是什么?5 L) q# v0 q# M" f  l2 N2 }) @
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-26 15:32 , Processed in 0.026688 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表