找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14983|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. D9 \0 U/ j" g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig0 ^) k1 o  g4 n4 B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( Q; r; r  Y3 s& C
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  ?* ]6 V7 `6 V# i" Q. @' J# @3 |- O, ?# d8 R

5 g* m* b0 J, ?$ ^不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' r5 f) }( W, _4 W7 V$ k- f: [' b1 x8 y- e
补充内容 (2012-3-8 09:42):4 B, A  T- u. p6 S) q9 S$ \0 |- y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数" ~' R6 x$ }4 l+ @2 C) M
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
7 ]: Y3 t. l5 Q0 L% q5 ]; A
3 e  B! ^  p7 k& R8 C" [himr <address> <value>. sample: himr 0x80040000 0x0
1 g9 H8 y+ e0 f0 e7 b) h  z4 K( w+ K$ t* J1 m; x6 w
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- x4 e* U) u5 a) h7 z% G5 Bhimr 0x80040000 0x003 Z* Y" s* h/ Z3 k9 I- F  d+ ^" q/ N
himr 0x80040001 0x11
, H+ y3 v% E' j" F! `" v2 I; Lhimr 0x80040002 0x22
" R# R! n) R  U, Rhimr 0x80040003 0x33& A5 |6 `/ ^% Z9 h9 f5 p7 u
himr 0x80040004 0x44
) W7 T" i3 Y& O2 Ohimr 0x80040005 0x551 {1 R8 ?* v& V/ b# i! _0 C
0 D& _& E% y" o% k
SN也是类似。4 h5 `' a9 b" }: B
: z1 q; K: v! F1 Y6 z
现在主要是,谁告诉我们MAC和SN的地址?
- d/ u  C$ }3 K0 @
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 i; h$ z$ z% w$ k0 n2 m) r) \0 ]: i一直想找到运程修改MAC和SN的办法,苦于无解啊
7 a1 J  Q5 ^# P
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & V; G7 u# {. b% k9 O
# x4 N0 r" ?$ M
修改的代码早有了。到今天不会编译。
; a- T3 ^9 c- E7 `9 k+ k1 R# X9 i需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    * j) i* |# x* `/ W* `/ F
  2. #include <malloc.h>& Z* W; `* G( v; |3 S
  3. #include <sys/types.h>1 d: J) r8 m3 U* p4 v1 U2 F2 W! `6 A
  4. #include <sys/stat.h>
    0 M8 Z( V/ B% m) c" B/ K
  5. #include <sys/ioctl.h>
    & z6 M  o8 y# |& M* b
  6. #include <stdio.h>
    $ S8 G" ?. \2 n- M# W6 O+ c
  7. #include <string.h>
    9 P: V0 u! }8 `: R8 I
  8. + F6 M" h! ?# |  j; q3 d* B
  9. typedef struct {5 q% ^7 [, l& o7 w
  10.         unsigned int        e2prom_cmd_sub_addr;. l5 [9 M$ `! y+ T
  11.         unsigned int        sub_addr_count;
    $ U& c/ ~1 B3 ?3 a; }
  12.         unsigned char*        e2prom_cmd_data;4 x+ K8 L/ p- c9 U
  13.         unsigned int        data_count;% [1 f& }* x/ L) f
  14. } e2prom_s_cmd;6 G0 e& G9 s' m! j  I) d4 D

  15. 4 d1 S7 u2 N; P( r: l3 z* J5 W$ v
  16. #define E2PROM_CMD_READ 1
    , V! q( K5 d% `3 e  T$ p
  17. #define E2PROM_CMD_WRITE 2
    1 F& S" L; S: a1 U  @8 m# a
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 Y1 f4 P) P, ]

  19. / s: h. k) Z( u' i' f4 [) _
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / g! Y& g* A6 M3 @: B! ?6 e. T
  21. {. Q( N" i" b0 h. s& d/ t9 y
  22.         int fd, ret;# n1 J. _: D# y( \' B
  23.         e2prom_s_cmd arg;4 h4 d+ S1 o+ F" e
  24.         unsigned char buf[0x18];3 Q" i' v' x" X5 n
  25. 3 ^0 k- f8 w4 x+ k0 s
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 f) [" \: d1 Y, K. F
  27.         if (fd  < 0) {: z* z1 I/ b/ {
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % F5 L6 K3 }" S7 }8 B% i7 C& L* h
  29.                 return -1;8 X5 e; ~1 j5 q# l
  30.         }
    . Q4 ]' {) [5 w  g6 R% w, Z
  31.         arg.sub_addr_count      = 2;  _4 s2 f9 S  b. _# }! m# j( y2 x) K1 h+ n
  32.         arg.data_count          = 0x18;
    : z% k  [7 t- N, p4 ?( B
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % \+ p5 {% L2 J: l$ l3 Z
  34.         arg.e2prom_cmd_data     = buf;* f  j  Z3 S# j2 `8 Y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 t) L# m3 u, @- }$ ]: |
  36.         if (ret != 0) {
    0 F0 o' v- s* C7 B; O
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
      a. `: u3 ?% |6 q4 ^0 {& E+ n
  38.                 return -1;. d. O0 m8 [- w* @
  39.         }
    : N' ]. o9 v& X# l" X5 L6 U
  40.         memcpy(mac, buf, 6);* u' p8 B  |7 T' o" z, k
  41.         memcpy(stbid, &buf[6], 18);. J# g+ U: z, K8 c
  42.         stbid[18] = '\0';. _& m2 w9 ?% I" y- g  g
  43. ' l( x( b7 R. m$ @: O2 y
  44.         return 0;8 f% l3 X9 K3 n
  45. }2 e/ }! J4 X+ L9 i" P& r9 y
  46. & H. {8 t7 [( q& u9 B% x: S
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 l) @6 N/ m! q1 \! T
  48. {
    & L7 l2 L, L/ M3 m
  49.         int fd, ret;
    7 s1 q4 G, g0 Y3 j/ ~8 Z
  50.         e2prom_s_cmd arg;
    / y% r% o' I+ A* s' j
  51.         unsigned char buf[0x18];' E) Z) a1 @+ H1 ~) ~$ |$ B

  52. 0 r. z0 M4 I( _& H0 y( R
  53.         memcpy(buf, mac, 6);1 m! S7 A8 T' B' N# T: P
  54.         memcpy(&buf[6], stbid, 18);4 f. r% p7 X: V1 Z) f- i5 S7 G' {: G# H
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, e& n! s, {* s: g5 D4 c) E
  56.         if (fd  < 0) {! {* s) J% d1 A0 i$ K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);; T" K8 D, P! s% `4 L0 i& z
  58.                 return -1;! u" Y+ l5 P3 b0 J1 q
  59.         }
    ( @& V8 X: ?- j9 F* [! \
  60.         arg.sub_addr_count      = 2;# k/ {& V% h2 s& R( v9 ~9 e) Q! n
  61.         arg.data_count          = 0x18;
    - m+ W; F( I7 D  ]" p% b
  62.         arg.e2prom_cmd_sub_addr = 0x290;: i- G% \0 M3 R! S' V8 E7 r
  63.         arg.e2prom_cmd_data     = buf;  }0 d/ s) w& M" O4 B
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / c/ V9 J# N4 L
  65.         if (ret != 0) {2 z" M2 S9 o! D/ R9 `
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 g8 `( h: |9 ~
  67.                 return -1;
    + V" L$ F; e, c7 f/ E. H
  68.         }
    3 W. m9 a- I8 B1 i7 p
  69. 1 w, u, |6 G, x( \
  70.         return 0;
    0 r8 M  F% n  W
  71. }
    : J# U1 V, @* N0 t3 ^
  72. - K$ h0 ]1 {6 f; F& t
  73. int main()) n  \0 p5 S2 T9 B
  74. {# Z) K7 ?3 B8 u3 [. Q
  75.         char c;$ s0 V7 n& p3 Z, _. Y
  76.         int i, macs[6];; g1 L: X- _8 y
  77.         unsigned char mac[6];7 p, t9 o* r+ W/ i0 {. z+ t3 |
  78.         unsigned char stbid[256];6 x  J: G6 Y( l& I1 }1 @" V
  79. 3 o$ }8 o* r: v2 n
  80.         if (readparam(mac, stbid) < 0)" o! M0 c- T5 W$ @' h6 _* h' M
  81.                 return 1;
    - |9 c) V7 w% i( r

  82. : y8 w" R3 l8 ?" I! X
  83.         printf("Current parameters: \n");
    6 B8 `2 Y# p0 o9 @* N' l. d# u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# f. }% B% {* Y5 i- s, j; j) I
  85.         printf("  STBID: %s\n", stbid);
    6 o  Q% x) a+ Z  P4 I
  86.        
    " Y5 H  X7 b6 f# {2 v! s  r! j4 @# a
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");* C0 C# F' b0 W1 M0 k! h
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {2 ~+ G6 r0 p% j. _8 m, n
  89.                 printf("Input MAC error\n");
    " Y- z& W. X  g5 G  X
  90.                 return 1;7 \3 S, ^7 Z5 u) e* _
  91.         }
    * P* K5 j5 Z; }. t/ E
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% ]" z. G4 \; v. a
  93.         printf("\nPlease input new STBID: ");8 Q" g" O4 H7 f" Y) N. `5 A
  94.         scanf("%s", stbid);
      u- I. l% a8 l* Y3 ]
  95.         if (strlen(stbid) != 18) {
    3 ^/ ]" e2 ~) S' S. ?
  96.                 printf("Invalid stbid\n");3 m, g0 u0 ^. P: d9 p. q4 d
  97.                 return 1;
    % q+ Y! s" f4 u- y
  98.         }0 ~! o7 H. ]% K4 ~" b$ G
  99.         printf("\nNew parameters: \n");  P* }0 W/ n" h  j7 j* M
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 r( Z- N& b( A2 x  Y7 ?
  101.         printf("  STBID: %s\n", stbid);
    / o& Q1 q+ i1 [; L2 V$ h/ H
  102. # P0 ]  V5 D* N+ [4 {) r
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    * p  F9 I% V* I( N% ?
  104.         for (;;) {
    , ]( {7 M5 g) T; D# `( z
  105.                 c = getchar();9 t0 ?( G" C1 t+ k/ r  M
  106.                 if (c == 'y' || c == 'Y')
    + E5 x3 u3 v1 X; [4 [4 t
  107.                         break;, J' r, X5 `( |% ~4 r) O
  108.                 if (c == 'n' || c == 'N') {
    & N' U# I1 F& I8 s$ @
  109.                         printf("\nAborted.\n");3 p& m4 A( s- k% f, n$ v9 R
  110.                         return 1;
    * W5 L7 h% N' P$ y8 c6 K7 j2 i! s
  111.                 }3 t6 w" n& S% V! g
  112.         }
    1 C9 D; Q" l  a
  113.         if (writeparam(mac, stbid) == 0) 9 q* w7 n& a. q! m9 Y$ [
  114.                 printf("Parameters changed.\n");
    2 E1 u" @( O' \  i5 Q* d+ u
  115. ) l) P+ g  O, @# Q% X
  116.         return 0;
    ( i) o* j% X" |( `4 J8 Z# M
  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
1 k" Y* f& i3 T8 T/ A1 B$ r1 P在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 f. g1 q/ h. K9 C
你用的编译命令行格式是什么?
6 b4 [2 [0 Z- J- Y  r
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-7 07:55 , Processed in 0.030662 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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