找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15675|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 A* ~* H; j  X8 s! E1 Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' P- F( g1 J+ r
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
& c- n' u- I# \6 z! ausage: himr <address> <value>. sample: himr 0x80040000 0x0
  ^% \) D/ c% z' C" m
. d+ b6 o- a1 G4 x* `
# D( _( Y% k5 T) T* ~* A5 q5 _, q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
/ l2 a; B- {* H6 v) z# k2 u
0 t+ F# `9 y# J9 u% N  Q, K# `补充内容 (2012-3-8 09:42):
7 z! L8 V$ K# T* ?2 {- Jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ o# ?- v4 n5 i6 g  Z2 m3 O. c
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。6 S, G+ j. D' _( m

7 j7 s8 o/ K$ z8 @2 Qhimr <address> <value>. sample: himr 0x80040000 0x08 j. X, s. ?" X$ j* {
9 y3 p+ p. I$ x7 S1 T: T' ^# I
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
0 M2 V" m8 t; _- F3 ihimr 0x80040000 0x00
0 E* a0 y" ?  k" \7 Lhimr 0x80040001 0x11, ]1 u# x. e' E" E1 s8 Q
himr 0x80040002 0x22: }1 ~. E: M, V; L. V- s
himr 0x80040003 0x33) [& W/ N0 f& O; v+ I
himr 0x80040004 0x44
4 a& ]% U! k/ Q: x# K/ C* Zhimr 0x80040005 0x55% @) s7 C6 l- s+ M& u
7 X/ _$ _$ k  q+ P$ `% L; M
SN也是类似。" l2 Z6 a0 j3 l; p8 u. T

/ m3 x  Y% i8 T6 h1 @4 p4 Z现在主要是,谁告诉我们MAC和SN的地址?6 N  C3 f1 a. n; X" }
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! N4 I3 f; Y" N( s) w一直想找到运程修改MAC和SN的办法,苦于无解啊

/ c. T7 l" L2 c源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( t: @+ t7 A( `4 T7 g; W( A9 B+ F! k  T# O0 B/ f
修改的代码早有了。到今天不会编译。! D$ c5 t0 ~* A8 ]7 X
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 x' z. ?8 _* g& r$ H: S4 @- ^
  2. #include <malloc.h>3 x/ a4 L* z9 j% B6 b( g
  3. #include <sys/types.h>
    7 Z% F# x9 r- d) y  g
  4. #include <sys/stat.h>
    ; d1 f' S' k) R) B; X8 a1 |$ |2 D
  5. #include <sys/ioctl.h>
    5 k' Q& U% a; z6 C4 M
  6. #include <stdio.h>! h, X0 G8 @. [# W1 w
  7. #include <string.h>. ?$ |4 Z2 l+ T, T$ J1 c1 ^: l

  8. % q- i' H0 i; s( X7 s! U9 O
  9. typedef struct {7 N( T7 m2 B2 I) b
  10.         unsigned int        e2prom_cmd_sub_addr;
    # T- W0 B" ^' j+ m
  11.         unsigned int        sub_addr_count;
    ' m' Q0 T+ i4 }4 V8 E
  12.         unsigned char*        e2prom_cmd_data;- n# U" A, x/ ~3 K6 B8 F$ b( T, \8 ?
  13.         unsigned int        data_count;' X0 `: t  g" I; s
  14. } e2prom_s_cmd;
    ; f% |  o; N$ s  k5 A
  15. ; v7 b& _' P/ f% U# I; R
  16. #define E2PROM_CMD_READ 19 O) ~* n( K9 f4 J- y
  17. #define E2PROM_CMD_WRITE 2
    2 n2 f1 ^& w3 P" i- i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ; f5 h4 [- j9 n1 @/ C( C

  19. , H3 s6 r" y* \. m) x- k( a
  20. static int readparam(unsigned char *mac, unsigned char *stbid), l6 J" }; v1 j6 g
  21. {
    " u* w  t2 ?$ Z8 m
  22.         int fd, ret;
    : N% |2 |  L* l/ q
  23.         e2prom_s_cmd arg;
    2 C- Y# J2 {: z. ]8 c
  24.         unsigned char buf[0x18];& Y8 L$ Z1 X# |  K9 ^% P9 `
  25. : R3 s2 |/ U! @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 H. s+ b9 B/ q7 T3 s( Y: C, f
  27.         if (fd  < 0) {
    - K8 ~# E( t+ a# H/ h
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& _. {& I- n9 g! M7 u# r
  29.                 return -1;( H$ i) Y, E: q2 J; z
  30.         }; \4 _2 Z7 ~+ t' |0 d% g, ~
  31.         arg.sub_addr_count      = 2;
    4 S+ n9 ?3 K( G- c) `6 {6 n* h
  32.         arg.data_count          = 0x18;
    3 B2 }* C- r! N
  33.         arg.e2prom_cmd_sub_addr = 0x290;. U7 I8 u3 M: ?& i7 A
  34.         arg.e2prom_cmd_data     = buf;
    7 s2 A2 c. X5 d% x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 k3 T- T& W; Z; d8 \3 s
  36.         if (ret != 0) {
    " b( Q; @+ Q# k& {( ~' G+ H
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 Y0 x; L+ k, P9 o+ c( I: ?0 C
  38.                 return -1;
    4 H( h; }, h2 L: ^5 f: i
  39.         }$ ^# y/ o% {! N! e9 @
  40.         memcpy(mac, buf, 6);0 }( `+ R5 z6 N2 g
  41.         memcpy(stbid, &buf[6], 18);
    $ U& D3 u5 j% _. j7 W3 Z
  42.         stbid[18] = '\0';
    + v4 ~# o: N/ N5 @' L3 P

  43. 4 u! T# I" I. \' U1 o  z" s
  44.         return 0;
    ' R4 D1 d/ z6 t! S* L* Q
  45. }
    / D& p: b7 D( W7 F( @  E4 v6 ]
  46. / b7 U% S1 d, U$ Q: E; ~1 v9 [4 \/ D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)) v! |% N7 f. {: {# ?1 l) u
  48. {
    ( s- U  ?5 _' D
  49.         int fd, ret;
    % g& h3 D3 x4 H  Y  z
  50.         e2prom_s_cmd arg;
    6 z) l7 ^% p( w2 d* {) U* t$ j5 Z
  51.         unsigned char buf[0x18];% z% b8 P- X. }  r" H
  52. $ q% O: [* s  G: R/ A& J  d* _8 s7 ^
  53.         memcpy(buf, mac, 6);
    8 c& o# Z/ v2 h; f+ T: O
  54.         memcpy(&buf[6], stbid, 18);
    ' k; m6 D% c% o
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 p5 R3 |  g1 A# d8 Z  W
  56.         if (fd  < 0) {+ k0 @; z8 }/ Y3 F' c+ @" ?& v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! @1 ^3 M: d$ `/ B8 D
  58.                 return -1;  ~4 ]- V7 q2 B& J1 z
  59.         }
    $ k) s& u) P( z4 G$ ?
  60.         arg.sub_addr_count      = 2;
    1 w4 G' D4 }+ v' ^# l
  61.         arg.data_count          = 0x18;
    9 g- }# s* E7 `1 E6 T
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 c( ^: S# o, m
  63.         arg.e2prom_cmd_data     = buf;" w1 F. \# O  S
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; h$ ?. n0 f3 }
  65.         if (ret != 0) {
    0 I5 `0 A6 E' Y2 X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% h- f9 p2 H' |9 s5 b
  67.                 return -1;5 q# B- l1 m9 O
  68.         }
    9 F7 O! f9 l4 ^& A! ~0 r0 D; J
  69. ) ~- h+ ]: a6 R( q" q
  70.         return 0;
    & B3 w3 T7 @1 ?! |6 W9 W& o: f/ M
  71. }( t7 c6 O' D# d' I
  72. , ?. |- y7 Y; F5 s  F
  73. int main()" O0 S/ a. \2 k& {
  74. {7 h7 B0 [2 Z& K8 s. r# c! X
  75.         char c;$ ^& g8 P2 A# v" w8 H
  76.         int i, macs[6];
    1 v; b/ T1 n8 w% N1 s
  77.         unsigned char mac[6];3 U! q$ J! {# ?
  78.         unsigned char stbid[256];
    5 n: V' {  z1 ^* o0 s
  79. ) G5 y9 U% b  k! F; E- `0 a" c
  80.         if (readparam(mac, stbid) < 0)
    + |: c; \; Q7 S" o) |7 o# r
  81.                 return 1;- p4 ~* d2 D+ v# ~

  82.   N4 |: h4 ^3 A) b+ B0 ~: [5 f
  83.         printf("Current parameters: \n");
    . b% e- ~; f6 [& }2 |
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 |+ Z7 `3 w9 q- O2 B4 m3 S
  85.         printf("  STBID: %s\n", stbid);
    + N$ }  L& \5 d8 |
  86.         8 S! @& a4 {2 X7 H6 j2 s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ H  x* b: w1 g5 m* l( U0 H. {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    " g7 ~1 n6 F6 j
  89.                 printf("Input MAC error\n");
    8 Z, g% O, I7 e, i: ~
  90.                 return 1;
    ) p, I& Y/ f3 F# _
  91.         }
    ) ~* B& ?/ c& c( L
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- q8 |& ~+ E  F4 i
  93.         printf("\nPlease input new STBID: ");: u" ]" x+ i3 x& l
  94.         scanf("%s", stbid);
    1 Q9 U9 y& s) B5 t
  95.         if (strlen(stbid) != 18) {3 y# S# N; `7 V" E& E5 O5 j
  96.                 printf("Invalid stbid\n");
    ' w0 _$ F  @& ?
  97.                 return 1;
    / z, ]7 H6 M. i, I5 v
  98.         }
    0 m$ x8 P6 e* h0 s* y% p+ Z
  99.         printf("\nNew parameters: \n");1 {4 V# ^# N" T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 ~  @% ]5 h& d2 G& D
  101.         printf("  STBID: %s\n", stbid);  V, W$ l+ s& Y) {3 h6 P. K

  102. 3 ]2 q, n! c$ j9 D. s4 g
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % d: {; k) A$ w
  104.         for (;;) {
    * B. \. `/ b+ [8 u; F# v
  105.                 c = getchar();
    + F, r/ @4 g+ ?! v2 h
  106.                 if (c == 'y' || c == 'Y')1 l, ~3 B) t6 E* C
  107.                         break;
    3 U1 ]* m: H) v" N, Q
  108.                 if (c == 'n' || c == 'N') {2 a" M( g: J6 q! `' l
  109.                         printf("\nAborted.\n");/ o0 k; L3 {2 m8 X8 l% ]
  110.                         return 1;
    ; H. l0 Z9 D2 h; m
  111.                 }
    5 z% M5 k$ J" z' e5 M& g
  112.         }- S, L) g9 i/ Z& f
  113.         if (writeparam(mac, stbid) == 0)
    6 \% ]# \: i! p# U, o3 J
  114.                 printf("Parameters changed.\n");
    ) O6 m* f" m5 }( G4 A/ i, [' a+ z
  115. * y; a8 O6 Y7 J2 ?6 G1 o
  116.         return 0;
    , ~8 K/ v, U2 h# i5 c3 l
  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
8 v; @7 n* \3 V2 C' t* T% e在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

! H) p6 e! I& R! L  t- J+ Q你用的编译命令行格式是什么?
/ y6 Q: ~. S$ L3 x, N
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-25 06:22 , Processed in 0.055172 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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