找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15351|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    # Z4 s$ V% ^# [+ h0 b7 A
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 |& U* ^/ G$ e' A; s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:& Q" [2 _8 N) b( P
usage: himr <address> <value>. sample: himr 0x80040000 0x0
8 p" }  H( [: \5 A8 a& c4 Y4 F% m' k8 T, K8 S1 r* D+ g

4 @9 I7 r% p4 y不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 u* J2 w1 S$ w# ^3 n# G, @+ r& ]; \( y; H
补充内容 (2012-3-8 09:42):5 N- _2 U8 H1 n! \5 ^
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. M4 I, P7 g$ 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! ^$ B6 Z# P2 H
' t3 B. K5 Q. S" K
himr <address> <value>. sample: himr 0x80040000 0x0' A% l% u, h% j
5 C0 c7 q$ Q' C# U" M" i  k
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
$ M: [4 E9 Q4 R% x# d8 N: s( qhimr 0x80040000 0x00
- l! d8 }$ G% M" e: Qhimr 0x80040001 0x11' e8 k' U$ F" A8 ~9 a
himr 0x80040002 0x220 Z( }3 [3 Z7 s, O, ^3 ]
himr 0x80040003 0x33
. X6 ~4 F6 ^# X7 R, D- A& dhimr 0x80040004 0x44
% w7 z. g# ~' U  bhimr 0x80040005 0x55% Q, G, W# T) u/ }  W& I2 g, C

' M- Q1 T, V& a. Y1 [  `* gSN也是类似。
$ l$ J& |1 U( M6 e8 F0 f1 Q2 E- F: ~7 d8 [( G
现在主要是,谁告诉我们MAC和SN的地址?1 [; h0 Z6 a& j0 E
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - H  B! w" X3 t/ C+ A& v
一直想找到运程修改MAC和SN的办法,苦于无解啊
2 Q8 O; r) h# Z6 K0 {; o- X
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   f3 i+ R: |4 P/ V: L" X( C) [7 A
( _% d! G5 ]$ w: w9 n. v! ]. ^
修改的代码早有了。到今天不会编译。
2 t+ r1 }2 K" [- u) u1 @/ [需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; k- f2 B0 t% H4 m' _7 B. `/ g+ _0 P
  2. #include <malloc.h># l. H" J3 _. F- b# R
  3. #include <sys/types.h>% d' D1 C. T& A' F
  4. #include <sys/stat.h>
    & b5 u# z4 h6 C
  5. #include <sys/ioctl.h>
    ; X  J& w: `) n6 w: Q
  6. #include <stdio.h>3 Z7 F1 C. ]5 n/ @+ N
  7. #include <string.h>
    6 z  u' m# B9 E! y
  8. 1 ?0 N1 E' z+ f! k' h3 {; R6 n
  9. typedef struct {* d1 ?5 L/ Q- p4 i5 Q
  10.         unsigned int        e2prom_cmd_sub_addr;1 I0 O" ^0 a; h0 [+ c$ l( O
  11.         unsigned int        sub_addr_count;
    4 t* S4 j$ r, r6 M3 e
  12.         unsigned char*        e2prom_cmd_data;7 }' ?/ L  X1 q6 f& w6 B0 P
  13.         unsigned int        data_count;
    / Y" M7 [- l0 C: A
  14. } e2prom_s_cmd;
    ; l; B1 S5 i0 ]6 [7 g$ u! n* N
  15. ; N3 T5 ?( H9 G
  16. #define E2PROM_CMD_READ 1
    & |: T- ^2 W* T
  17. #define E2PROM_CMD_WRITE 2
    & r( y9 W: i, i# U3 S9 b: B' _: Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 J6 f2 w1 _+ m9 m: m) `+ M" v2 n
  19. ' e. t5 U- d7 G. h
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    - B# @  t# K* C$ A' ^: K
  21. {
    9 k& r. k" l. g& j
  22.         int fd, ret;9 ?; Q" `( Z$ j+ c3 v
  23.         e2prom_s_cmd arg;
    " `2 c# f: l. V( {; p5 ~" p
  24.         unsigned char buf[0x18];8 K: A: e  @, j$ }2 k0 r

  25. % F8 |9 o0 X' Q8 i* ~9 w+ T0 I
  26.         fd = open(E2PROM_DEVICE, O_RDWR);* y; {  n/ H  F+ x9 H, ?' a$ ~
  27.         if (fd  < 0) {
    ; ]+ b1 G5 g' c0 U7 i) _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) X' M1 L3 Q: f; h$ n/ Y+ |+ B2 D
  29.                 return -1;
    6 w. C* \! O3 c1 K6 \; S# _" y
  30.         }
    * V3 R4 X' c/ W. I3 X
  31.         arg.sub_addr_count      = 2;0 Q! F2 I  g! A, X& y. Z
  32.         arg.data_count          = 0x18;/ c( E" _' }4 d
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , E# B7 [( s, K. \) ^  h1 u! _
  34.         arg.e2prom_cmd_data     = buf;" c: s; H3 F0 @% J- _9 _! c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      y, W6 q" x9 e. L9 ~  u/ q
  36.         if (ret != 0) {
    % `& R$ s6 E" w& h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ' U+ |/ H+ F5 t" H1 v9 @
  38.                 return -1;
    ' h2 z. i0 Y- ]% e  ]
  39.         }; C( X2 i  F4 \& ?8 b# M
  40.         memcpy(mac, buf, 6);7 |6 K7 z" E! o2 C: Z! A$ @
  41.         memcpy(stbid, &buf[6], 18);7 x5 j3 x6 a5 S2 Y
  42.         stbid[18] = '\0';. F. E0 {, G+ x' k
  43. 1 x+ ~: ?9 c8 B4 ^
  44.         return 0;5 I) _0 L5 ?1 X3 r7 e* u
  45. }4 j8 r, o3 ?4 k0 m
  46. , Y# u7 ^2 P0 ]9 P. o
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)# h- Z$ w% M/ N0 P% J+ }5 T
  48. {4 @0 Z  l+ M) \4 I
  49.         int fd, ret;
    * b' T- D  x- i8 i/ k5 l% u
  50.         e2prom_s_cmd arg;
    # n# p0 l4 x( u: X
  51.         unsigned char buf[0x18];- ~$ q1 U+ \+ @* Q6 c
  52. ) ~1 B8 I# Q' U
  53.         memcpy(buf, mac, 6);/ @8 [. T* e( F* T) X- B
  54.         memcpy(&buf[6], stbid, 18);. Y- o0 O9 d) D- c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( M! W/ V/ n* v
  56.         if (fd  < 0) {
    # e+ S/ _! p8 S+ I, n! O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * _! z( t' _' \) Q" W
  58.                 return -1;
    ' t2 Y8 q& Z! ^# I
  59.         }
    , @6 e: @% J/ o
  60.         arg.sub_addr_count      = 2;
    % H1 s8 T+ h6 d0 D3 M8 J' c
  61.         arg.data_count          = 0x18;9 c; D% I+ l# d" n8 I
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 @' r3 W% H  V# U( z$ L
  63.         arg.e2prom_cmd_data     = buf;) Q5 o- k( [3 _. O: Z' c1 {6 M7 y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    9 p8 b+ n  C, a) u2 d. H" k
  65.         if (ret != 0) {# P  X! m% x5 `' X% h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : M# F8 z: l! W
  67.                 return -1;
    $ f4 r4 B' _! X$ Q1 v8 a5 {
  68.         }
    " `4 _7 D5 [4 a, c" ]0 i" H
  69. 6 w9 k3 ~/ a- i1 u, a
  70.         return 0;% [. W$ u; g+ S% @
  71. }/ E  J- T. d+ x  `" Z

  72. $ e# g# `) F+ x  C6 }
  73. int main(), b. V) z( D; L$ M% i% u2 `0 x
  74. {
    * x. J; G: s7 M
  75.         char c;5 R' j( e2 f6 z  y6 I8 Z
  76.         int i, macs[6];0 ?3 @' O' D$ x1 H
  77.         unsigned char mac[6];
    - J# T1 C6 q6 [" l  H, q2 J: n$ M4 z  L
  78.         unsigned char stbid[256];
    6 @& q% X# j8 _! e8 A- H

  79. % L. L* c1 F8 K& y# D2 Q2 z
  80.         if (readparam(mac, stbid) < 0)$ S4 Y7 o) d; f- N) m/ o/ i/ p
  81.                 return 1;& o0 w+ |6 A6 ^  G- S0 `3 Y

  82. 2 w. G4 ?$ k9 M, K, V4 `
  83.         printf("Current parameters: \n");' z& ^& D% G  }2 v, f( K( L& ~
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ _& E9 m& Z6 A8 L
  85.         printf("  STBID: %s\n", stbid);9 g$ }( A  v8 J" A
  86.         # l, c( k6 F  L% [3 r/ A
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    & b9 R" S0 Y0 I6 r- d- R: ^& [3 \& \: @
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : |9 W: C% k! D* F, r1 o
  89.                 printf("Input MAC error\n");
    2 k; O+ x7 j( F, R3 d6 `
  90.                 return 1;
    . j  ~0 V4 v9 P2 I+ D" t
  91.         }
    . C$ s% q6 e  P4 Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];+ H0 ]  ]5 l# P/ w/ O& W( Q
  93.         printf("\nPlease input new STBID: ");
    * g4 Q# Y( ~% ]6 Q% c- k# D0 K" x
  94.         scanf("%s", stbid);( A  ]6 Z& z3 t! ?! x$ `, ?
  95.         if (strlen(stbid) != 18) {
    ' t$ E  b& J# T& C
  96.                 printf("Invalid stbid\n");
    $ c" w* Q# C9 A3 g+ [' ]$ f. J' }
  97.                 return 1;* K8 d* j- w; G: r) `% A
  98.         }8 [/ P: m" P4 k$ D! M" F
  99.         printf("\nNew parameters: \n");
    7 V; i$ d- j6 ~  t! R
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. G7 B7 h+ i; u, f' W
  101.         printf("  STBID: %s\n", stbid);
    3 m2 Z5 a  s- j) g$ M

  102. . {7 g$ Y, |; {; L  G* g- `
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( j& w' x4 x# D$ ]! C2 z4 l4 C
  104.         for (;;) {  u0 j1 U$ u! V8 v( g
  105.                 c = getchar();
    2 F6 Z2 f7 p; z. E7 H+ R) a) w
  106.                 if (c == 'y' || c == 'Y')) G6 F5 n# C$ Q9 a2 \* V2 W, e; ^: p
  107.                         break;' G, c4 B9 k  u3 f0 F
  108.                 if (c == 'n' || c == 'N') {* _, Q1 K% u: C
  109.                         printf("\nAborted.\n");5 b4 B+ i% j/ S, ^9 C
  110.                         return 1;
    ' ~1 j# x2 R/ M* U' x' ~
  111.                 }- ]3 m; p" a; N
  112.         }7 \* r6 ~: B' _$ `& a! y! p6 C5 f
  113.         if (writeparam(mac, stbid) == 0) 5 p) S% p- A' P. [
  114.                 printf("Parameters changed.\n");
    : R# X( r) y  Z, D; Q
  115. , V! j. u" [8 V4 b# j) d/ H. s: z
  116.         return 0;
    2 Z6 g" \) K: {! A% l: s
  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
. v1 A1 `7 [/ S! s: _( Z0 S$ j在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 l; @! m+ ^" |; T+ {
你用的编译命令行格式是什么?( O- v+ p: D  K! O1 m: i- Z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-25 17:59 , Processed in 0.033441 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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