找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15688|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    # V# b$ A6 G. _
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 K  E8 t$ y  ^, O7 {$ @$ g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. A8 Z( x3 X/ X1 |
usage: himr <address> <value>. sample: himr 0x80040000 0x04 u; I; W: K3 F8 l1 A" k

" g2 W2 ?) o0 C* @' X2 X) F' p8 J: ^/ s9 N! E
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: p' t7 a! R7 H; W% X% y( V3 _) e0 `* B
补充内容 (2012-3-8 09:42):) {7 z1 \( Y# n* a1 r$ ]% [
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
( ^/ E3 @' t4 X! g  I& E0 \这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
/ R; |7 P3 Q% M& o9 ]* y, v0 r6 l" c* L- |& N
himr <address> <value>. sample: himr 0x80040000 0x0
; Q; N* M- W* U) i- m( H7 }4 Y: H1 ^$ g7 u
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 C3 e7 ~1 q- u. y* O$ O/ r# j+ e
himr 0x80040000 0x00
0 X4 A) ], {; \3 X  R( phimr 0x80040001 0x11
: m1 m6 f- H3 [0 Shimr 0x80040002 0x224 H0 b6 e6 }: J& K9 M3 l8 ~
himr 0x80040003 0x332 y) g$ @. H2 b0 a* I3 [
himr 0x80040004 0x44/ C1 S) ]* t+ X, s5 O7 C
himr 0x80040005 0x55
- c+ t7 I: T* q: q( D
. e( O' |$ ]6 i6 t& y- ]SN也是类似。# h* S+ U# X: e; P! m3 |1 e+ l

! V1 e( S% s( o2 Y+ m- U. q现在主要是,谁告诉我们MAC和SN的地址?. s9 Y6 V/ k5 x% y0 u3 M9 ^8 @
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" x7 n6 l- d, G) q8 T! F2 [  E) a一直想找到运程修改MAC和SN的办法,苦于无解啊

2 m. `( X" R1 w源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
* k7 o3 i* W6 v) l' \& ~
- J/ G* P9 q6 `/ ~: `修改的代码早有了。到今天不会编译。! @9 i- Z+ _' e. N$ [
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* r) t8 U* @4 i/ M% A. H
  2. #include <malloc.h>; R4 V! x' k9 ^/ d! p# F
  3. #include <sys/types.h>. p9 y: n- _' c% I$ ^
  4. #include <sys/stat.h>
    6 Y) [7 {1 w. j+ @! L4 J; z+ |
  5. #include <sys/ioctl.h>
    + J* B- W" ]8 s
  6. #include <stdio.h>
    & \# v' E$ l) R2 j
  7. #include <string.h># `' U$ y0 Y. H+ y' a
  8. 1 p- |1 O  @+ Y1 y
  9. typedef struct {) y4 \$ }6 O- {5 h: b
  10.         unsigned int        e2prom_cmd_sub_addr;. H) [" Z" G8 J! g4 L
  11.         unsigned int        sub_addr_count;
    * X2 R% ~4 m* u9 o
  12.         unsigned char*        e2prom_cmd_data;
    ; n* h0 K  n7 U% o3 K3 G6 q
  13.         unsigned int        data_count;
    * C4 c; G  V8 d; e
  14. } e2prom_s_cmd;
    , W) x8 k+ l3 q3 A# U
  15.   k, O$ @. V! j: B7 S/ W
  16. #define E2PROM_CMD_READ 16 r$ C  A9 q" G& X2 `8 B1 k
  17. #define E2PROM_CMD_WRITE 2
    2 c3 A& E4 O7 ?, u2 b3 P+ s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 [% v0 S9 X  ~! A1 C4 i+ _

  19. 5 ]/ L! m" B, c% ~
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 P/ p# e# R  h1 g2 U
  21. {
    ' M& j7 R+ c- A) v4 M. J
  22.         int fd, ret;
    : `, N! k8 S% G1 ?
  23.         e2prom_s_cmd arg;/ X3 T! c" ~7 e* `: H& h
  24.         unsigned char buf[0x18];
    / d; G/ L+ ]9 C  y* B0 N
  25. 3 k1 t* G; ^) d9 J
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " K% ~3 H6 l# z& c, g6 }
  27.         if (fd  < 0) {5 m* K1 x: a- o
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # o6 \5 O& _& M* [; F  j
  29.                 return -1;
    7 H- Z0 X% ^- q+ ^* u
  30.         }$ Z3 y- c- R/ [7 `  A% g
  31.         arg.sub_addr_count      = 2;
    " A3 L- T3 l; R- _. k
  32.         arg.data_count          = 0x18;
    " }, d# `+ a  s2 J) H0 A- }
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 G7 [* J9 i# a; D. T
  34.         arg.e2prom_cmd_data     = buf;  o- j. i" P7 P: {- M$ c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! c$ S% M! z# N5 k0 q7 n
  36.         if (ret != 0) {
    * @, u6 m: o% u5 w7 a8 s- w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 d& z5 `% p* u2 M
  38.                 return -1;
    ) x; e4 a' M5 d3 ^
  39.         }
    9 i4 h6 T) T  @6 n% F! ~
  40.         memcpy(mac, buf, 6);0 J6 c) m$ _( M. Q. J& \& i
  41.         memcpy(stbid, &buf[6], 18);
    2 X! g$ d1 w8 j
  42.         stbid[18] = '\0';
    7 J- W( e/ S3 r$ [# R- |0 [
  43. 6 B! J. r$ c, }
  44.         return 0;
    6 ~6 I( C2 l7 z
  45. }
    ! d+ R! G  @/ m$ K
  46.   ?- Q; Y1 d; Y) H8 w, g/ t
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)+ `- H+ I8 m8 n2 u! M
  48. {. ~* `5 ~" Y9 Q7 ~7 C( Q4 ^) @
  49.         int fd, ret;4 F0 \3 L1 o8 D6 s
  50.         e2prom_s_cmd arg;
    & w2 P7 Q+ a% Z  F
  51.         unsigned char buf[0x18];
    & q! n5 {# s( h

  52. ) n# h: @- \' Z: B" _
  53.         memcpy(buf, mac, 6);* a4 A0 Y- W0 P7 a
  54.         memcpy(&buf[6], stbid, 18);
    ) b7 @- J; r8 j8 _6 U$ c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- G/ h! z; H1 z- F. r
  56.         if (fd  < 0) {
    / M" g0 ^; h2 w7 u( v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % L7 x' X9 D8 C+ l9 s
  58.                 return -1;
    # s9 c& U2 p6 x* p' q
  59.         }& h+ E# I0 M6 Q& Z2 O% E
  60.         arg.sub_addr_count      = 2;8 G# j! I+ B+ L& n( @6 _
  61.         arg.data_count          = 0x18;$ v! v! H' e( S6 S. |  z
  62.         arg.e2prom_cmd_sub_addr = 0x290;* o" y5 M) l7 {. m  ^
  63.         arg.e2prom_cmd_data     = buf;
    8 h) N2 v3 l; a6 k  j
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " s4 F' U8 {9 b0 J
  65.         if (ret != 0) {
    % ?1 A3 a9 E, v, u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : r% ^, E* s3 ]5 s1 ^0 O, T8 @8 O7 k
  67.                 return -1;/ R- i5 H0 m4 w) I* R
  68.         }
    ( Y1 [7 ?4 u" r! c; c) |) i* a

  69. + n9 N7 |1 a* Z7 q% u5 |
  70.         return 0;
    2 @8 x( ?( }  t9 b0 Y: f
  71. }
    9 n' K' d+ d  t2 K( e. q" _; h
  72. ( S3 M9 l6 Y) ]; e: N
  73. int main(). B6 Y) R; ?3 I8 E% W8 v
  74. {
    2 Q; U. e$ V1 C9 M) L
  75.         char c;
    " U/ W: A5 C0 y
  76.         int i, macs[6];
    5 }! i  ~, Q9 }
  77.         unsigned char mac[6];& U# J8 q4 ~4 u9 m: V0 B8 x
  78.         unsigned char stbid[256];/ K: G! O1 z4 \2 r" ]4 x7 i
  79. ; E- Y& ]0 Z& a: A* r
  80.         if (readparam(mac, stbid) < 0)
    1 p- x% G- X9 _/ W9 ^' V
  81.                 return 1;
    5 S& k: V9 [: H  i

  82. & b! u2 |7 b* q. H* u0 K
  83.         printf("Current parameters: \n");
    / A5 B! ~/ s6 [4 |. Q" f: ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 k6 P; p6 V  d0 s# Z0 o9 u
  85.         printf("  STBID: %s\n", stbid);" |: ~6 D+ F* L; n" D. x1 D+ L& I
  86.         % Q7 X+ i8 e/ ~" C! G( W+ S
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 M5 p9 J) y6 G; d; W7 ~* H% o
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 F8 [) j+ G. K. }) }
  89.                 printf("Input MAC error\n");
    4 d2 o  ]  M& m
  90.                 return 1;
    . w# v: F8 Y3 m; S
  91.         }
      {1 l8 t( L" `" t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
      N# e5 m' K0 n' l- C$ x$ O
  93.         printf("\nPlease input new STBID: ");( K8 Q& U  C; H0 I1 J0 Z8 g
  94.         scanf("%s", stbid);
    ; u4 Q+ {- A: \9 r) ?4 f+ _% r
  95.         if (strlen(stbid) != 18) {( e" {6 m4 B2 p7 W
  96.                 printf("Invalid stbid\n");; \3 J# J  r3 S  M
  97.                 return 1;
    " h3 `. K/ }, ~; p( S$ ?7 k. \
  98.         }
    4 y# w, ]9 {  y+ |  ]8 ?3 U- D
  99.         printf("\nNew parameters: \n");
    ( i" s# E' e6 Y3 o# ~' [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      i% R& w: s+ v# @3 f" p
  101.         printf("  STBID: %s\n", stbid);2 j" h7 `' b& x, ~' t) g
  102. ! _! r, c4 a! j
  103.         printf("\nDo you want to change paramemters? (y/N) ");* \3 |) n6 y8 q) G; G3 W0 |, G
  104.         for (;;) {
    2 o# c1 f8 g; `. o
  105.                 c = getchar();( E: o1 ^% o) n% X
  106.                 if (c == 'y' || c == 'Y'): K, N) _' n0 i% E: l/ p
  107.                         break;) ~! W  t- D6 U
  108.                 if (c == 'n' || c == 'N') {9 ?8 q3 X+ z- M8 L* `
  109.                         printf("\nAborted.\n");
    4 s0 |( _# }- b6 z* \, X
  110.                         return 1;1 j% B1 O! q! C
  111.                 }
    5 ^2 C: X; Y; C9 [* x" F
  112.         }( F/ m0 P9 ~: _2 ~
  113.         if (writeparam(mac, stbid) == 0)
    ; p5 O% r: B0 C
  114.                 printf("Parameters changed.\n");# F' j& \8 H5 ?4 @( @, E! Z; L; `+ A

  115. ! O# i( F$ |8 _" V& W0 i0 @0 E
  116.         return 0;
    + E+ d, j9 ^1 G0 x
  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 ' M* y! v  V& O. K5 ]0 F
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 Y. X8 i2 |% j  g
你用的编译命令行格式是什么?8 H( s  n) \! y% R4 Q) Z) |; }, T0 b" B
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-27 11:59 , Processed in 0.023435 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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